首页
社区
课程
招聘
[旧帖] [求助]关于ESP定律的问题! 0.00雪花
发表于: 2009-7-5 15:15 2873

[旧帖] [求助]关于ESP定律的问题! 0.00雪花

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

  现在,根据上面的ESP原理,我们知道多数壳在运行到OEP的时候ESP=0012FFC4。这就是说程序的第一句是对0012FFC0进行写入操作!
  
  最后我们得到了广义的ESP定律,对只要在0012FFC0下,硬件写入断点,我们就能停在OEP的第二句处!!

我有个问题麻烦大家下!
为什么说多数壳运行到OEP的时候ESP=0012FFC4 ?

pushad  压栈后如下! ESP指向0012FFA4   
0012FFA4   77F517E6  返回到 ntdll.77F517E6 来自 ntdll.77F78C4E           //EDI
0012FFA8   77F51778  返回到 ntdll.77F51778 来自 ntdll.77F517B5          //ESI
0012FFAC   0012FFF0                                                    //EBP
0012FFB0   0012FFC4                                                   //ESP
0012FFB4   7FFDF000                                                  //EBX
0012FFB8   7FFE0304                                                 //EDX
0012FFBC   0012FFB0                                                //ECX
0012FFC0   00000000                                               //EAX

我的理解是 当popad  从栈中取出完数据的时候 栈指针ESP应该指向 0012FFC0啊!
为什么会是0012FFC4 呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
中间还有个疑问
popad  的时候 第一次把栈地址0012FFA4的数据77F517E6送入EDI    这样依次到栈地址0012FFB0 把数据 0012FFC4送入ESP
这时候ESP指针指向 0012FFC4了吧!   下面再pop怎么办?
2009-7-5 16:18
0
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是搞明白了! 为什么没人帮我解释下?
2009-7-5 17:09
0
游客
登录 | 注册 方可回帖
返回
//