内存镜像法的步骤
( 1 )用 OD 打开软件
( 2 )点击选项——调试选项——异常,把里面的忽略全部√上。 CTRL+F2 重载下程序
( 3 )按 ALT+M, 打开内存镜象,找到程序的第一个 .rsrc. 按 F2 下断点,然后按 SHIFT+F9 运 行到断点,接着再按 ALT+M, 打开内存镜象,找到程序的第一个 .rsrc. 上面的代码段 .text (或者 CODE )(也就是 00401000 处),按 F2 下断点。然后按 SHIFT+F9 (或者是在没异常情况下按 F9 ), 直接到达程序 OEP
实战
1 查壳
用 PEID 查壳的结果如下图,可以看出程序加了 ASPack2.12 的壳
2 寻找 OEP
(1)用 OD 载入该程序
(2)依次选择OD 选项( T )下的调试设置( D )子选择,弹出如下对话框,切到异常选项卡,将忽略下的子项全部勾上
(3)Ctrl+F2 重新载入要脱壳的程序, Alt+M 打开内存镜像,找到程序的第一个 .rsrc. 按 F2 下断点,按下 F9 运行程序
(3)再按 ALT+M, 打开内存镜象,找到程序的第一个代码段 .rsrc. 上面的 .text ,按 F2 下断点, 按下 F9 运行程序
(3)直接到达 OEP
注:有时候在给软件脱壳,千心万苦找到了OEP ,却发现不是常见的“ pushebp ”,而是出 现如下图这种情况,其实这是 OD 将这段代码当做数据了没有进行反汇编识别,解决方 法是,选中一行右键选择“分析”菜单,选择“分析”下的“分析代码”, OEP 就会出 现在眼前了
3脱壳
可以使用OD 自带插件,也可以用 LordPE ,方法和前面 " 单步跟踪法 " 中使用方法一样
4 修复
可以使用 ImportFix ,方法和前面 " 单步跟踪法 " 中使用方法一样