您的位置:首页 > 其它

函数调用反汇编

2017-10-28 22:16 120 查看
windows堆栈:向低地址扩展。

堆栈平衡:

windows堆栈就是一块普通的内存,主要用来存储一些临时数据和参数等,可以想象成一个公共的箱子,大家都会用,每个人用完都要使它和用之前一样。

main函数中的调用:

0100176E 6A 02                push        2
01001770 6A 01                push        1     【函数参数】
01001772 E8 A7 F8 FF FF       call        FounC1 (0100101Eh)    【调用函数】
01001777 83 C4 08             add         esp,8    【平衡堆栈】


汇编中函数实现体:

008316A0  push        ebp
008316A1  mov         ebp,esp
【提升堆栈】为函数执行提供空间

008316A3  sub         esp,0C0h
008316A9  push        ebx
008316AA  push        esi
008316AB  push        edi
【保护现场】
函数在执行的时候可能会用到寄存器,但是寄存器中的值可能还会用到,所以要保存寄存器中的值

008316AC  lea         edi,[ebp-0C0h]
008316B2  mov         ecx,30h
008316B7  mov         eax,0CCCCCCCCh
008316BC  rep stos    dword ptr es:[edi]
【填充缓冲区】

008316BE  mov         eax,dword ptr [x]
008316C1  add         eax,dword ptr [y]
【函数功能】

008316C4  pop         edi
008316C5  pop         esi
008316C6  pop         ebx
【恢复现场】

008316C7  mov         esp,ebp
008316C9  pop         ebp
【降低堆栈,恢复栈底】

008316CA  ret
【返回:回到函数调用处】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: