内存镜像法的步骤
(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,却发现不是常见的“push ebp”,而是出 现如下图这种情况,其实这是OD将这段代码当做数据了没有进行反汇编识别,解决方 法是,选中一行右键选择“分析”菜单,选择“分析”下的“分析代码”,OEP就会出 现在眼前了
3 脱壳
可以使用OD自带插件,也可以用LordPE,方法和前面"单步跟踪法"中使用方法一样
4 修复
可以使用ImportFix,方法和前面"单步跟踪法"中使用方法一样