首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于程序中寄存器 EBP的疑点~

2012-09-18 
关于程序中寄存器 EBP的疑问~~我用od调试一个用汇编写的程序,是感染PE文件的,当OD第一次载入时,是要执行入

关于程序中寄存器 EBP的疑问~~
我用od调试一个用汇编写的程序,是感染PE文件的,当OD第一次载入时,是要执行入门点的那个指令,此时栈顶正好是kernel32.dll的返回地址,我看到了程序是这样重定向的:

call _reloc

_reloc:
pop ebp  
sub ebp,offset _reloc ;程序重定位
mov dword ptr [ebp+appBase],ebp  
mov eax,[esp]  
   

我的问题是这里他的ebp没有保存,那样不就破坏了kernel32.dll的ebp了吗??当程序返回kernel32.dll时为什么不会出错呢?
是不是kernel32.dll自己在调用时自己保存了自己的ebp???

[解决办法]
你栈顶都是返回地址了,kernel32的ebp早进去了

热点排行