关于程序中寄存器 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早进去了