函数调用反汇编
2017-10-28 22:16
120 查看
windows堆栈:向低地址扩展。
堆栈平衡:
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 【返回:回到函数调用处】
相关文章推荐
- 反汇编深入分析函数调用
- Linux下NASM汇编函数和C语言函数相互调用的方法
- C++中的虚函数调用原理的反汇编实例分析(2)
- 从汇编的角度分析函数调用过程(1)
- C/C++与汇编混编时的内嵌汇编调用C/C++写的函数的演示
- C++代码反汇编后的函数调用过程,堆栈寄存器EBP和ESP
- 汇编函数与C函数的相互调用(2)
- 从汇编角度来理解linux下多层函数调用堆栈运行状态
- 汇编中调用_kbhit()函数
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- 反汇编及函数调用堆栈分析
- 汇编中函数调用与中断的区别
- INTEL汇编的函数调用过程
- C/C++与汇编的函数相互调用分析
- linuxC一站式编程的函数调用的过程汇编理解
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- 函数调用堆栈的汇编解析
- ARM基础:为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
- 用汇编实现C库函数的调用
- Linux汇编---函数调用过程