逆向脱壳——脱壳后的修复

脱壳后的修复

IAT修复

IAT

导入地址表(IAT):Import Address Table 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中.当PE 文件被装入内存的时候,Windows 装载器才将DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成.

为什么要手动修复IAT?

我们已经掌握了如何寻找OEP和脱壳,有的时候,Dump出来的时候不能正常运行,是因为还有一个输入表没有进行处理,这时候,我们可以尝试手动修复IAT。

原理

程序的IAT是连续的排列的,所以我们只需要找到IAT的起始位置和末位置,就可以确定IAT的地址和大小。在压缩壳中,我们只要找一个调用系统的API的Call的地址,然后在数据窗口中查找,确定IAT起始和结束地址。然后在OD中手动修复。

思路

  • 1.查壳
  • 2.找到程序入口
  • 3.OD插件脱壳-->失败
  • 4.LoadPE脱壳-->失败
  • 5.用ImportREC自动修复-->失败
  • 6.手动查找IAT,用ImportREC进行修复-->成功

实验过程

  • 查壳,显示FSG壳
    886825-20170621163033538-1611031416.png

  • 我们用ESP定律法脱壳,关键跳转后,没有到OPE,右键分析,从模块中删除分析。
    886825-20170621163049538-737669180.png

  • 到达OPE
    886825-20170621163057741-2067128269.png

  • 用OD的脱壳插件脱壳,这个插件是可以自动修复ITA的,如图勾择重建输入表。
    886825-20170621163121882-265266584.png

  • 用OD自带的插件脱壳以后,查壳显示无壳,但不能运行。
    886825-20170621163229116-644524941.png

  • 换一种方法脱壳试试~用LoadPE脱壳

  • 修正镜像大小
    886825-20170621163304398-24808612.png

  • 还是不能运行

  • 用ImportREC进行输入表重建,尝试修复程序,输入刚刚调试时找到的OPE地址,点击自动查找IAT
    886825-20170621163329882-532873085.png

  • 点击获取输入表,工具自动帮你填充RVA,这里的RVA是IAT起始的偏移量。RAV是偏移地址的意思,如果说Windows装载器将一个PE文件装入 00400000h处的内存中,而某个节中的某个数据被装入0040xxxxh处,那么这个数据的RVA就是(0040xxxxh- 00400000h)=xxxxh。
    886825-20170621163340179-2123608372.png

- 转储到文件,尝试运行,壳已经没有了,但是还是不行,不能运行……
886825-20170621163407835-2030865588.png

886825-20170621163417695-244445847.png

- 那我们只有试一下手动修复了

  • 随便找一个调用系统的API的Call,如果这个函数的调用地址在IAT中,那么我们根据这个地址就能找到IAT的地址范围。
    886825-20170621163430335-90335548.png

- 在输入表(IAT)中找到该地址
886825-20170621163559288-918244619.png

  • 记录地址0x425210,在命令下输入 d 425210
  • 到达数据窗口的这一段,这是IAT地址,名称与输入表重建工具中的函数对比,内容一致,可以确定这个CALL的调用函数地址在IAT中。
    886825-20170621163630241-1964155120.png

  • 因为IAT段是连续的,因此向上找到开头,向下找到结尾
  • IAT段开始:
    886825-20170621163636726-1043421571.png

  • IAT段结束
    886825-20170621163644445-1127674830.png

- 获取IAT信息
起始:00425000
结束:00425510
RAV:0x00425000-0x00400000=0x25000
Size:0x0042410-0x00425000=0x510

- 进行修复,输入IAT信息,RVA和SIZE,获取输入表。
886825-20170621163700882-178097018.png

- 转存,运行成功~脱壳完成~
886825-20170621163710335-1099168985.png

转载于:https://www.cnblogs.com/5315hejialei/p/7060315.html

程序名称:LordPE Deluxe 增强版 版 本:1.4 汉 化 人:cao_cong 联系方式:cao_cong_hx@yahoo.com.cn 使用说明: 这个工具大家应该也比较熟悉吧?这是另一款PE编辑工具,号称是“最好的PE文件修改工具”。这个增强版本是我在看雪学院上看到的,原来是看雪兄的大作。正好我以前汉化过这个软件(自己用的,没发布过),顺便套用一下以前的资源,把它给汉化了(里面所附带的工具基本上都汉化了)。可能有许多兄弟都比较喜欢用这个软件,这次发出来希望能给大家带来一点方便。这个增强版的主要更新(根据看雪兄的readme文件): (1) 为LordPE查看输入表部分加上搜索功能 (2) 为LordPE查看输入表部分加右键菜单(仅复制ThunkRVA/FirstThunk列). (3) 当点击LordPE查看输入表部分中"View always FirstThunk",保持光条在原来位置.(LordPE默认会将光条置到0行) (4) 修改FLC(File Location Calulator)窗口中各个文本框(VA,RVA,Offset)为只读属性,此时可以用鼠标复制里面的文本.(LordPE原来是将文本框禁止变灰,此时不可复制) 不过上面的第二条查看输入表部分的右键菜单我没看到。难道是我的系统(XP_SP2)有问题? 其它内容请看附带在内的readme.txt文件。LordPE的原版和增强版的原版我都放在英文原版文件夹中,大家可以进行比较。 声明: 1、此汉化软件是免费软件,请在转载时保留其内容的完整性! 2、此软件仅用于个人学习使用,禁止用于商业用途,否则后果自负! (1) 为LordPE查看输入表部分加上搜索功能 (2) 为LordPE查看输入表部分加右键菜单(仅复制ThunkRVA/FirstThunk列). (3) 当点击LordPE查看输入表部分中"View always FirstThunk",保持光条在原来位置.(LordPE默认会将光条置到0行) (4) 修改FLC(File Location Calulator)窗口中各个文本框(VA,RVA,Offset)为只读属性,此时可以用鼠标复制里面的文本.(LordPE原来是将文本框禁止变灰,此时不可复制) 文件列表: LordPE.EXE .............原版 LordPE_fix.EXE .............增强版 LordPlug.dll .............功能插件 LordPlug.dll_src .............功能插件源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值