首先这篇文章不是讲ESP定律
的原理,第一次接触ESP定律
,跟着教程做了一遍,做个笔记,记录手动脱壳的过程。
首先载入OD,F8
执行到pushad
下面的call
,然后观察寄存器,如果只有ESP
和EIP
是红色的,那么可以用ESP定律
。
右键ESP
的数据,选择数据窗口中跟随,可以看到左下角的数据窗口发生了跳转。
然后选择第一个数据 --> 右键 --> 断点 --> 硬件访问 --> Byte(Word和Dword也行)
然后可以通过调试菜单下硬件断点来查看刚才下的断点。
下完断点后点击运行,然后程序停在一个popfd
的指令,下面有一个大的跳转,F8
执行。
会出现下图的界面,我们右键 --> 分析 --> 从模块中删除分析。
删除分析后就可以用OllyDump脱壳调试进程
进行脱壳保存了。
下面是脱壳之前和脱壳之后,程序用IDA打开的对比,可以明显发现二者之间的区别。