现在的位置: 首页 > 综合 > 正文

EBP与ESP寻址

2013年10月14日 ⁄ 综合 ⁄ 共 571字 ⁄ 字号 评论关闭

EBP被ESP赋予了栈地址后就可以用

EBP-XXX方式去访问栈中数据,

而ESP则在为局部变量与函数参数忙碌着..所以他的值是不断变化的

而用ESP进行寻址的规则则是

当前ESP地址+push个数*4+SUB减去的大小=此时的ESP应该与EBP相等

 

所以的话此时再用ESP得到的值-要访问元素所在位置*4就可以得到正确的地址值

mov eax,dword ptr ss:[ esp+4c]  ESP+4c 与mov dword ptr ss:[ebp-14].相同

并且验证了一点,上面有个CALL调用部分,但是在执行到

mov eax,dword ptr ss:[ esp+4c]的时候堆栈已经平衡,并不会影响其对 ebp-14的寻址

 

由此证明一点,

 

在被调用函数中是可以访问调用函数中的局部变量的...

下面是调用函数中五个局部变量的地址及其值

 

0012FF6C  00000005

0012FF70  00000004

0012FF74  00000003

0012FF78  00000002

0012FF7C  00000001

 

不过他们的计算出来的公式稍微麻烦点..祈祷以后别有这样的加壳软件出现,若真这样光计算数据来源就得累死人的不行

 

 

 

抱歉!评论已关闭.