ESP = 堆栈平衡
ESP定理脱壳:
(1)开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)(这只是一 般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)
(2)在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX), 按回车
(3)选中下断的地址,断点--->硬件访--->WORD断点
(4)按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP
(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
实验程序:UnPackMe.exe
用exeinfo查壳,为UPX壳,如图:
程序用OD打开,停在这里。
按F8,ESP变红,说明可以用ESP定律。
ESP定律脱壳法 :
先用dd命令转到堆栈刚才esp中的内容指的位置,即dd 0060ff64。随即在该处下硬件断点,如图:
按F9运行,看到popad,oep到了,在此处dump出来,完成脱壳。
向下法(暂时就叫它一路向下法吧 (-_- 吧。):
原理:遇到向上的跳转都按F4到一条指令,不管它,直到遇到第一个大跳转,调后即是OEP。
在该处实现一个大跳转,到达oep,perfect!