【逆向知识】堆栈图-汇编中的函数

push        ebp                 ; 提升堆栈
mov         ebp,esp   
sub         esp,0CCh  
------------------------------------------
push        ebx                 ; 保留现场,函数在执行的时候会用到一些寄存器,但这些寄存器中
push        esi                 ; 值很可能会被程序用到,所以要先存储到内存中
push        edi  
push        ecx  
------------------------------------------
lea         edi,[ebp-0CCh]      ; 向分配的空间填充数据
mov         ecx,33h  
mov         eax,0CCCCCCCCh  
rep stos    dword ptr es:[edi]  
----------------------------------
pop         ecx                 ; 函数实际实现的功能
mov         dword ptr [this],ecx  

mov         eax,dword ptr [this]  
mov         dword ptr [eax+4],1  

mov         eax,dword ptr [nID]  
push        eax  
push        offset string "\r\nID:%d Who is your God? I am!\r\n"... (0EC6E94h)  
call        _printf (0E33D73h)  
add         esp,8  
----------------------------------------
pop         edi                 ; 恢复现场,将之前保留的寄存器的值恢复
pop         esi  
pop         ebx  
-----------------------------------------
add         esp,0CCh            ; 堆栈平衡
cmp         ebp,esp  
call        __RTC_CheckEsp (0E32356h)  
mov         esp,ebp             ; 降低堆栈 
pop         ebp                 ; 恢复栈底
ret         4                   ; 函数执行完毕,返回到调用处,等同于pop eip

转载于:https://www.cnblogs.com/17bdw/p/8451376.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值