先介绍一下脱壳的基本知识吧! <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

常见脱壳知识:

1.PUSHAD (压栈) 代表程序的入口点

2.POPAD (出栈) ? 一般找到这个 OEP 就在附近拉!

3.OEP :程序的入口点,软件加壳就是隐藏了 OEP (或者用了假的 OEP ),

只要我们找到程序真正的 OEP ,就可以立刻脱壳。

开始正式介绍方法啦!!

方法一:

1. OD 载入,不分析代码!

2. 单步向下跟踪 F8 ,是向下跳的让它实现

3. 遇到程序往回跳的(包括循环),我们在下一句代码处按 F4 (或者右健单击代码,选择断点 —— 运行到所选)

4. 绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!

5. 如果刚载入程序,在附近就有一个 CALL 的,我们就 F7 跟进去,这样很快就能到程序的 OEP

6. 在跟踪的时候,如果运行到某个 CALL 程序就运行的,就在这个 CALL F7 进入

7. 一般有很大的跳转,比如 jmp XXXXXX 或者 JE XXXXXX 或者有 RETE 的一般很快就会到程序的 OEP

方法二:

ESP 定理脱壳( ESP OD 的寄存器中,我们只要在命令行下 ESP 的硬件访问断点,就会一下来到程序的 OEP 了!)

1. 开始就点 F8 ,注意观察 OD 右上角的寄存器中 ESP 有没出现。

2. 在命令行下: dd 0012FFA4( 指在当前代码中的 ESP 地址 ) ,按回车!

3. 选种下断的地址,下硬件访问 WORD 断点。

4. 按一下 F9 运行程序,直接来到了跳转处,按下 F8 ,到达程序 OEP ,脱壳

方法三:

内存跟踪:

1 :用 OD 打开软件!

2 :点击选项 —— 调试选项 —— 异常,把里面的忽略全部 上! CTRL+F2 重载下程序!

3 :按 ALT+M,DA 打开内存镜象,找到第一个 .rsrc. F2 下断点,

然后按 SHIFT+F9 运行到断点,接着再按 ALT+M,DA 打开内存镜象,找到 .RSRC 上面的 CODE ,按

F2 下断点!然后按 SHIFT+F9 ,直接到达程序 OEP ,脱壳!

方法四:

一步到达 OEP (前辈们总结的经验)

1. 开始按 Ctrl+F, 输入: popad (只适合少数壳,包括 ASPACK 壳),然后按下 F2 F9 运行到此处

2. 来到大跳转处,点下 F8 ,脱壳之!

方法五:

1 :用 OD 打开软件!

2 :点击选项 —— 调试选项 —— 异常,把里面的 全部去掉! CTRL+F2 重载下程序!

3 :一开是程序就是一个跳转,在这里我们按 SHIFT+F9 ,直到程序运行,记下从开始按 F9 到程序

运行的次数!

4 CTRL+F2 重载程序,按 SHIFT+F9 (次数为程序运行的次数 -1

5 :在 OD 的右下角我们看见有一个 SE 句柄,这时我们按 CTRL+G ,输入 SE 句柄前的地址!

6 :按 F2 下断点!然后按 SHIFT+F9 来到断点处!

7 :去掉断点,按 F8 慢慢向下走!

8 :到达程序的 OEP ,脱壳!