​上一篇​​使用单步调试的方法非常慢,还可以使用ESP定律法快速定位。

ESP定律是根据栈帧只受本函数改变,如果有其它函数想改变的话,ESP值必定会改变。

如果在ESP处设置断点,就可以快速定位程序入口OEP。

OllyDbg打开notepad.exe文件:

ESP定律法脱壳_d3

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

ESP定律法脱壳_寄存器_02

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

ESP定律法脱壳_d3_03


也就是你会发现,ESP对应的​​0018FF6C​​​是红色的我们右键点击​​0018FF6C​​​,选择​​HW break[ESP]​​,然后直接运行,

即按F9,我们来到了​​0040D3B0​​的位置处,

ESP定律法脱壳_寄存器_04


我们继续向下按F8到retn返回,就到达了OEP,这时我们按Ctrl+A后用Ollydump脱壳即可。

ESP定律法脱壳_右键_05