内存镜像法脱壳
内存镜像法一般用于稍微复杂的脱壳,在本例中不是很适用,但也能找到OEP。
如果在资源段加一个断点,第一次访问资源段地址的是脱壳程序。
首先用Ollydbg打开notepad.exe文件
在菜单栏的【选项】,选择【调试设置】,然后切换到【异常】标签页
勾选该页上的各种忽略异常,然后关闭
按下Alt+M
键打开内存镜像,找到notepad的资源段
,也就是
地址=00407000,大小=00005000的.rsrc
段,也就是第一个看到的.rsrc
资源段,选中这行按下F2设置断点
然后按下F9运行,程序执行到了0040D75F
处
然后再按Alt+M打开内存镜像,在.rsrc
上面的.text
代码段(也就是notepad的代码段)按F2设下断点。
继续按下F9运行。
正常情况下,这次F9运行会到达OEP继续执行,但是对于这次的notepad.exe我们运行后会弹出一个提示框。
提示称应用程序发生异常,位置为004010CC
,那么实际上004010CC
也就是我们的OEP了.
我们选择取消,进行程序调试。
因为我设置为Ollydbg为默认调试器,提示称无法继续附加到我们调试的这个进程(windows一次只能调试一个进程)
我们关闭这个弹出的Ollydbg,回到原先的调试的Ollydbg里
会发现我们已经到达了OEP。
右键【分析】选择【从模块中删除分析】后,就是OEP处的真正代码了