内存镜像法脱壳

内存镜像法一般用于稍微复杂的脱壳,在本例中不是很适用,但也能找到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处的真正代码了