WEB开发网
开发学院网络安全黑客技术 寻找真正的入口(OEP)--广义ESP定律 阅读

寻找真正的入口(OEP)--广义ESP定律

 2007-01-14 16:44:36 来源:WEB开发网   
核心提示: 于是我们停在0040EE10这一行!总结:我们可以把壳假设为一个子程序,当壳把代码解压前和解压后,寻找真正的入口(OEP)--广义ESP定律(3),他必须要做的是遵循堆栈平衡的原理,让ESP执行到OEP的时候,F90040D05364:892500000000movdwordptrfs:[

于是我们停在0040EE10这一行!

总结:我们可以把壳假设为一个子程序,当壳把代码解压前和解压后,他必须要做的是遵循堆栈平衡的原理,让ESP执行到OEP的时候,使ESP=0012FFC4。

4.广义ESP定律

很多人看完了教程就会问:ESP定律是不是就是0012FFA4,ESP定律的适用范围是不是只能是压缩壳!

我的回答是:NO!

看完了上面你就知道你如果用0012FFA8也是可以的,ESP定律不仅用于压缩壳他也可以用于加密壳!!!

首先,告诉你一条经验也是事实---当PE文件运行开始的时候,也就是进入壳的第一行代码的时候。寄存器的值总是上面的那些值,不信你自己去试试!而当到达OEP后,绝大多的程序都第一句都是压栈!(除了BC编写的程序,BC一般是在下面几句压栈)

现在,根据上面的ESP原理,我们知道多数壳在运行到OEP的时候ESP=0012FFC4。这就是说程序的第一句是对0012FFC0进行写入操作!

最后我们得到了广义的ESP定律,对只要在0012FFC0下,硬件写入断点,我们就能停在OEP的第二句处!!

下面我们来举个例子,就脱壳进阶第一篇吧!

载入OD后,来到这里:

0040D042N> B800D04000   moveax,Notepad.0040D000//停在这里
0040D047  684C584000   pushNotepad.0040584C
0040D04C  64:FF3500000000pushdwordptrfs:[0]  //第一次硬件中断,F9
0040D053  64:892500000000movdwordptrfs:[0],esp
0040D05A  66:9C      pushfw
0040D05C  60       pushad
0040D05D  50       pusheax

直接对0012FFC0下硬件写入断点,F9运行。(注意硬件中断)

在0040D04C第一次硬件中断,F9继续!

上一页  1 2 3 4 5  下一页

Tags:寻找 真正 入口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接