前面讲了如何寻找OEP和脱壳,有的时候,Dump出来的时候不能正常运行,是因为还有一个输入表没有进行处理,一些加密壳会在IAT加密上面大做文章,用HOOK - API的外壳地址来代替真是的IAT的地址,让脱壳者无法正确的还原程序的原始IAT,使得程序不能被破解,所以我们处理这些被加密IAT的地址的办法是找到加密这些IAT的地址的跳转(就是Magic Jump),将它修改为强制跳转(JMP),使之无法加密IAT,从而达到脱壳修复的目的!
因为程序的IAT是连续的排列的,所以我们只需要找到IAT的起始位置和末位置,就可以确定IAT的地址和大小!有的IAT是JMP 类型的,有的是CALL类型的,所以,要想确定IAT的地址,就要先知道这个程序是怎样调用IAT的,例如:

其对应的汇编是CALL DWORD PTR DS:[465198],即直接调用[465198]里的函数,地址465198在IAT中,指向GetVersion函数,我们点击004464F7这句指令,右键,跟随到数据窗口,内存地址!

此时的465198就是IAT的一部分,可以在数据窗口查看到它的内容:

我们右键,长型,地址查看:

这样就可以看到其他的函数的函数名字了:

我们向上面翻,找到数据为0的dword的间隔,IAT最后是以0结尾的:

这个加壳程序的IAT的地址是:00464FFC,那么它的大小为:00465698 - 00464FFC = 69C.
此时就可以利用ImportREC来进行修复了!

输入程序的OEP和刚刚得到RVA和大小,点击获取输入信息,修复转存,抓取DUMP的程序,进行修复,修复完毕后,运行修复后的程序,程序可以正常的运行:

注意点:

1.在ollydbg里面入口处地方,用olldump先将需要dmp的dll或者exe dmp到指定目录

2.用ImportREC附加需要重定位的exe或者内部的dll,fixdmp时候选择刚刚保存的dll。

附下载版文章:
http://www.2cto.com/uploadfile/2012/1205/20121205071819691.zip

转载于:https://www.cnblogs.com/Fightingbirds/p/3172899.html

菜鸟脱壳之脱壳的基础知识(六)——手动查找IAT和修复Dump的程序相关推荐

  1. 嵌入式Linux应用开发基础知识(六)——Makefile实例

    前面我们学了很多Makefile相关的知识,但是没有写过一个完整的代码,这一章我们写出一个实例 一.完善Makefile 在之前我们写了一个较为完善的Makefile程序,但是还是存在一些问题,我们需 ...

  2. 计算机基础知识菜鸟教程,菜鸟教程:改造最基础知识 电工基础

    电,是世界上应用最广泛的能源之一.我们无法想象没有电的现代社会,是什么样子.没有计算机,Internet的数据我们将会无法得到,就更不会有人知道bit-tech之类的网站.实际上,很多的人,无论平常对 ...

  3. 计算机科学基础知识(六)理解栈帧

    一.前言 本文以一个简单的例子来描述ARM linux下的stack frame. 本文也是对tigger网友问题的回复. 二.源代码 #include <stdio.h> static ...

  4. 计算机六年级基础知识,六年级计算机试题

    六年级计算机试题 一.多音字组词. 二.写出下列词语的近义词. 诞生--(  )   信息--(  )   获取--(  ) 处理--(  )   传递--(  )   预料--(  ) 三.把不能搭 ...

  5. 信用社考试计算机知识,信用社考试(计算机基础知识 六)

    信用社考试,计算机专业很好的复习材料,金融财会专业也可以参考. 计算机基础6 951. 在excel中,最适合反映某个数据在所有数据构成的总和中所占的比例的一种图表类型是____. A.散点图 B.折 ...

  6. 6.java中什么是类_类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用英语 ...

  7. 【数据库基础知识六】内连接、外连接、自连接

    目录 内连接 语法 外连接 外连接的分类 自连接 内连接 语法 SELECT t1.xxx, t2.xxx, .... FROM 表1  t1 JOIN 表2 t2  ON 与表1 的连接条件 [JO ...

  8. matlab基础知识 (六) 调用函数

    MATLAB® 提供了大量执行计算任务的函数.在其他编程语言中,函数等同于子例程或方法. 要调用函数,例如 max,请将其输入参数括在圆括号中: 例 A = [1 3 5]; max(A) ans = ...

  9. Python基础知识(六):异常处理

    01_异常的本质_调试核心理念 在实际工作中,我们遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数 ...

最新文章

  1. Jmeter 创建一个web测试计划
  2. python3-开发进阶-仿博客园项目setting.py的文件的配置,admin,forms(2)
  3. 数据库的数据类型及运算符
  4. sp | sp格式的空间矢量对象及其函数方法简介
  5. 火焰传感器工作原理_水流传感器的工作原理和故障分析
  6. 12-8下午 php语法
  7. 3DMAX烘焙AO步骤
  8. css 压缩后出现了问题,觉得js或css压缩后不好调试?你应该认识一下source map了...
  9. 多个源文件进行编译,即 makefile 的编写
  10. 【NLP】NLP,能辅助法官判案吗? | CCF C³
  11. ESXI 7.0 安装教程
  12. java程序员 女装_java程序员面试着装要求是什么?
  13. ni max不能连续采集图像_图像识别技术在智慧教室录播系统中的应用研究
  14. 解决Eclipse打开某个workspace报错:The project description file (.project) for (项目名)
  15. 我是僵尸生存java_我的世界1.6.2我是僵尸整合包
  16. Kafka - Zookeeper 服务器安装
  17. java as2_使用AS2(http)协议实现 B2B 商用数据交换 (二) [译]
  18. 简易费诺算法的C语言实现
  19. 五大GPS北斗定位模块选择要点
  20. 如何定义社交电商?仅仅是社交+电商吗?

热门文章

  1. xp http文件服务器,在XP sp3下用IIS搭建http服务器总结
  2. SpringBoot监听redis订阅监听和发布订阅
  3. 关于int main( int argc, char* argv[] ) 中arg和argv参数理解
  4. linux日志手机,通过 shell 脚本 自动发送 log日志 文件内容 到手机邮箱
  5. 纯内存linux,7、内存知识和Linux基本原则
  6. 监控系统 Prometheus 和 Zabbix 对比
  7. 国内好用的5款软件测试管理工具
  8. python svm超参数_grid search 超参数寻优
  9. python创建树结构、求深度_数据结构-树以及深度、广度优先遍历(递归和非递归,python实现)...
  10. python安装过程中关机_1234567,Python帮女神自动来关机