ESP定律法脱壳

上一篇使用单步调试的方法非常慢,还可以使用ESP定律法快速定位。
ESP定律是根据栈帧只受本函数改变,如果有其它函数想改变的话,ESP值必定会改变。
如果在ESP处设置断点,就可以快速定位程序入口OEP。
OllyDbg打开notepad.exe文件:
ESP定律法脱壳

这里我们看到程序用了pushad来保存现场环境。我们单步,按F8步过一下,运行至0040D002的位置:
ESP定律法脱壳

这时在Ollydbg右侧的寄存器面板上,ESP对应的数值变为红色:

ESP定律法脱壳
也就是你会发现,ESP对应的0018FF6C是红色的

我们右键点击0018FF6C,选择HW break[ESP],然后直接运行,
即按F9,我们来到了0040D3B0的位置处,
ESP定律法脱壳
我们继续向下按F8到retn返回,就到达了OEP,这时我们按Ctrl+A后用Ollydump脱壳即可。
ESP定律法脱壳