脱壳第二讲,手动脱壳PECompact 2.x

时间:2023-11-18 19:42:08

              脱壳第二讲,手动脱壳PECompact 2.x

PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式

首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具

但是他有壳,先查壳.

脱壳第二讲,手动脱壳PECompact 2.x

发现是这个壳

利用Esp定律,脱掉这个壳.

首先,inc2l.exe是32位的,所以要放到虚拟机中.

一丶OD打开分析

1.OD分析

脱壳第二讲,手动脱壳PECompact 2.x

发现,首先给eax赋值,然后压栈eax,那么eax肯定会访问,那么我们F8到push eax的下面,也就是4022EA的位置

2.查看栈数据

查看栈数据.

脱壳第二讲,手动脱壳PECompact 2.x

那么在栈位置12FFC0的位置,肯定会有访问,我们数据窗口 定位到ESP的位置,也就是0012FFC0

3.在数据窗口定位栈顶位置.

CTRL + G命令定位.

脱壳第二讲,手动脱壳PECompact 2.x

由于方便一起截图,事先已经定位过来了.

4.针对栈内容下硬件访问断点(4个字节)

选中栈中地址的值,也就是 push 的eax的值,下硬件访问断点

脱壳第二讲,手动脱壳PECompact 2.x

5.F9运行起来,直到跟到我们的模块分析

第一次F9

脱壳第二讲,手动脱壳PECompact 2.x

依次类推,下方肯定会跳转到我们的程序里面.

脱壳第二讲,手动脱壳PECompact 2.x

一直找到一个跳转到eax的位置

此时EAX的值是 004022E4

而JMP的位置是0040AC1E

由此可以判断出,入口点的位置是4022E4

为什么?

因为壳一般加密之后,如果跳转到入口点,那么它是一个远跳

此时看JMP的地址,和跳的位置就是一个远跳.

6.F7跟入JMP eax

此时如果F7跟进来了,那么就是下面的样子

脱壳第二讲,手动脱壳PECompact 2.x

真正的入口点

8.使用OD插件,Dump内存,脱壳.

此时我们可以使用OD插件的dump内存的插件,在入口点位置脱壳了.

脱壳第二讲,手动脱壳PECompact 2.x

弹出界面:

脱壳第二讲,手动脱壳PECompact 2.x

点击脱壳,选择位置,存储你脱壳后的文件.

脱壳第二讲,手动脱壳PECompact 2.x

此时OD不要关闭.

9.使用导入表修复工具,修复脱壳后的IAT表

(关于IAT表请熟悉PE格式后看)

此时OD调试的进程不要关闭,也就是带壳的inc2l程序,如果关闭了,那么重新进行上面几步,只需到定位到入口点即可.

现在脱壳完毕,IAT表肯定让壳给抹掉了,而OD的dump工具修复的IAT表也不全,所以使用一个IAT表格修复工具修复.

我用的工具是 ImportREC1.7  具体下载可以去下载看雪大礼包.

(当然我会上传,但是此工具比较老,会有Bug,一会修复完之后手工修复即可.)

9.1打开工具.并选择我们OD挂起的未脱壳的inc2l的程序.

脱壳第二讲,手动脱壳PECompact 2.x

9.2 OEP位置给我们的OPE的偏移

OEP位置给我们的OEP的偏移,或者让它自动查找.

然后点击Get Imports

脱壳第二讲,手动脱壳PECompact 2.x

9.3 点击 Fix Dump 给我们脱壳的程序修复

现在导入表已经有了,那么点击Fix Dump给我们刚才脱壳后的程序修复一下.

脱壳第二讲,手动脱壳PECompact 2.x

9.4运行我们的脱壳程序查看是否可以运行.

脱壳第二讲,手动脱壳PECompact 2.x

提示错误,Winhex打开,查看PE格式.

脱壳第二讲,手动脱壳PECompact 2.x

首先,我们发现我们的导入表,被我们的导入表修复工具加了一个新的节, 也就是mackt的节

那么我们此时我们首先定位 sizeofHead (DOS头+ NT头 + 节表的总大小)我们看下是多少.

有没有自动给我们增加.

脱壳第二讲,手动脱壳PECompact 2.x

并没有增加,大小还是200,那么是错的,因为加了一个分页

也就是mackt的位置的大小并没有加上,也不是说没有加上,而是正好在200的位置处,也就是文件中1F0的位置.

那么这个程序出BUG了,此时我们改为1000 或者你自己看下多大.

脱壳第二讲,手动脱壳PECompact 2.x

保存文件,重新打开我们的壳程序试一下还会崩溃吗.

为了方便,拷贝到住电脑上,然后命令行打开查看.

脱壳第二讲,手动脱壳PECompact 2.x

成功运行,因为这个程序点开会一闪而过,所以截图不了,所以命令行打开,出来这个界面就成功了.

课堂代码资料:  链接:http://pan.baidu.com/s/1kVL1f6Z 密码:2ltj

作者:IBinary
出处:http://www.cnblogs.com/iBinary/
版权所有,欢迎保留原文链接进行转载:)