赵文豪 GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析
使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器:
使用gdb调试代码。
使用break main指令在main函数处设置断点,然后调试,直到mian函数处。


使用diassemble指令获取汇编代码




查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0

使用命令display /i $pc每次程序中断后可以看到即将被执行的下一条汇编指令

call将下一条指令的所在地址(即当时程序计数器PC的内容)入栈

准备传参

查看f函数的汇编代码

g分配栈空间

pop %ebp指令将栈顶弹到%ebp中

ret返回g中call的调用位置

ret返回f中call的调用位置,结束f函数

主函数汇编代码

将%edx于%eax相加

ret结束main函数

| 指令 | %eip | %esp | %ebp | %eax | 堆栈 |
|---|---|---|---|---|---|
| push $0x8 | 0x804840b | 0xffffd048 | 0xffffd048 | 0xf7fb8dbc | 0x0 |
| call 0x80483ef | 0x804840d | 0xffffd044 | 0xffffd048 | 0xf7fb8dbc | 0x8 0x0 |
| push %ebp | 0x80483ef | 0xffffd040 | 0xffffd048 | 0xf7fb8dbc | 0x8048412 0x8 0x0 |
| mov %esp,%ebp | 0x80483f0 | 0xffffd03c | 0xffffd048 | 0xf7fb8dbc | |
| mov 0x804a01c,%edx | 0x80483f2 | 0xffffd03c | 0xffffd03c | 0xf7fb8dbc | 0xffffd048 0x8048412 0x8 0x0 |
| mov 0x8(%ebp),%eax | 0x80483f8 | 0xffffd03c | 0xffffd03c | 0xf7fb8dbc | 0xffffd048 0x8048412 0x8 0x0 |
| call 0x80483db | 0x80483fe | 0xffffd038 | 0xffffd03c | 0xa | 0xa 0xffffd048 0x8048412 0x8 0x0 |
| push %ebp | 0x80483db | 0xffffd034 | 0xffffd03c | 0xa | 0x8048403 0xa 0xffffd048 0x8048412 0x8 0x0 |
| mov %esp,%ebp | 0x80483dc | 0xffffd030 | 0xffffd03c | 0xa | 0xffffd03c 0x8048403 0xa 0xffffd048 0x8048412 0x8 0x0 |
| ret | 0x80483ee | 0xffffd034 | 0xffffd03c | 0xb | 0x8048403 0xa 0xffffd048 0x8048412 0x8 0x0 |
| leave | 0x8048406 | 0xffffd03c | 0xffffd03c | 0xb | 0xffffd048 0x8048412 0x8 0x0 |
| ret | 0x8048407 | 0xffffd040 | 0xffffd048 | 0xb | 0x8048412 0x8 0x0 |
| add $0x4,%esp | 0x8048407 | 0xffffd040 | 0xffffd048 | 0xb | 0x8 0x0 |
| leave | 0x804841c | 0xffffd048 | 0xffffd048 | 0xe | 0x0 |
| ret | 0x804841d | 0xffffd04c | 0x0 | 0xe |
赵文豪 GDB调试汇编堆栈过程分析的更多相关文章
- GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...
- 20145212——GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 测试代码 #include <stdio.h> short val = 1; int vv = 2; int g(int xxx) { return xxx + ...
- 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析
20145223<信息安全系统设计基础> GDB调试汇编堆栈过程分析 分析的c语言源码 生成汇编代码--命令:gcc -g example.c -o example -m32 进入gdb调 ...
- 20145337 GDB调试汇编堆栈过程分析
20145337 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...
- 20145208 GDB调试汇编堆栈过程分析
20145208 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...
- 20145218 GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 虚拟机中分析过程 输入gcc - g example.c -o example -m32指令在64位机器上产生32位汇编,但出现以下错误: 这时需要使用sudo apt-g ...
- 20145236 GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 首先需要输入sudo apt-get install libc6-dev-i386安装一个库才能产生汇编代码,然后输入gcc - g example.c -o exampl ...
- 20145312 GDB调试汇编堆栈过程分析
20145312 GDB调试汇编堆栈过程分析 参考资料 卢肖明同学的博客:<GDB调试汇编堆栈过程分析>: http://www.cnblogs.com/lxm20145215----/p ...
- 20145240 GDB调试汇编堆栈过程分析
20145240 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...
随机推荐
- php json_encode
1.该函数只接受utf-8编码的字符串,其他编码的字符串会返回false 2.字符串中的斜线'/'会被自动转义成'\/',如果不想被转义,可用如下方式(适用于php5.4及以上) json_encod ...
- [转]金融业容灾技术分析 (终于看到QREP了)
源地址:http://www.cnblogs.com/SuperXJ/p/3480929.html 数据复制技术很多,初步比较如下. 后面重点讨论银行最常用的存储复制和数据库复制..当然,我最推荐的还 ...
- sublime如何自动保存
sublime是前端开发者喜欢使用的工具,它有很多快捷方式可以让我们快速的编写代码:在开发过程中,每次修改代码之后都要按Ctrl+S保存.在这里向大家介绍一下如何设置让它自动保存. 一.打开subli ...
- Js动态设置rem来实现移动端字体的自适应
//设置根元素字体 var win = window, doc = document; function setFontSize() { var winWidth = $(window).width( ...
- tensorflow中的lstm的state
考虑 state_is_tuple Output, new_state = cell(input, state) state其实是两个 一个 c state,一个m(对应下图的 ...
- Linux学习内容
Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...
- C#运算符号
double x=5.1e3;// 5.1乘以10 的3次方. x就是 5100 //注 : 5.1e+3=5.1e3=5.1e03=5.1e+03 double y=5.1e-3;// 5.1乘以 ...
- [转]js实现各种进制的转换
关键点: parseInt(string, radix).toString(target_radix); 参考:http://www.cnblogs.com/guowei1027/archive/20 ...
- Startcom SSL证书申请 IIS设置 配置 攻略
申请具体参考:http://www.cnblogs.com/yibinboy/p/6137426.html 制作要导入服务器IIS上的证书. 点击控制面板的左上角的TOOL BOX,然后点击Creat ...
- vaadin学习,重要的网址
比较重要的几个:UI组件及示例程序:http://demo.vaadin.com/samplerBook of Vaadin:https://vaadin.com/bookAPI:https://va ...