逆向工程核心原理学习笔记(二十二):栈帧9:调用printf()函数
2017-05-09 21:42
381 查看
我们可以清楚的看到printf函数的调用。
然后我们转向汇编代码:
首先PUSH EAX,将add()函数的返回值放进EAX寄存器中,
然后将打印的内容压入410DC4地址
紧接着调用40107C地址的函数,这个地址的函数是C的标准函数——printf,我们不必跟进去。
最后,ADD ESP,8
为啥呢,因为printf的参数为%d\n,占用了8个字节,ESP加上8个字节就将参数从栈中删除了。
32位寄存器 + 32位常量 = 64位 = 8字节
相关文章推荐
- 逆向工程核心原理学习笔记(十六):栈帧3:add()函数参数传递与调用
- 逆向工程核心原理学习笔记(十八):栈帧5:设置add()函数的局部变量(x,y)
- 逆向工程核心原理学习笔记(二十):栈帧7:删除函数add()的栈帧&函数返回
- 逆向工程核心原理学习笔记(二十三):栈帧10:设置返回值,删除栈帧&main()函数终止
- 逆向工程核心原理学习笔记(二十一):栈帧8:删除函数add()的参数(整理栈)
- 逆向工程核心原理学习笔记(十四):栈帧1
- 逆向工程核心原理学习笔记1-通过IAT手工定位notepad.exe中的导入函数
- 逆向工程核心原理学习笔记(十五):栈帧2:设置局部变量
- 逆向工程核心原理学习笔记(十九):栈帧6:ADD运算
- 逆向工程核心原理学习笔记(三):检索API方法
- 逆向工程核心原理学习笔记(七):总结
- 逆向工程核心原理学习笔记(十一):栈
- 逆向工程核心原理学习笔记(二十七):abex'crackme #2 破解算法
- 逆向工程核心原理学习笔记(二十五):abex'crackme #2初步破解
- 逆向工程核心原理学习笔记2-基址重定位基本原理
- 逆向工程核心原理学习笔记(十二):分析abex' crackme #1
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
- 逆向工程核心原理学习笔记(一):寻找程序的主函数(Main)
- 逆向工程核心原理学习笔记(三):检索API方法
- 逆向工程核心原理学习笔记(十):IA-32寄存器基本讲解