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调试汇编堆栈过程分析的更多相关文章

  1. GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...

  2. 20145212——GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 测试代码 #include <stdio.h> short val = 1; int vv = 2; int g(int xxx) { return xxx + ...

  3. 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析

    20145223<信息安全系统设计基础> GDB调试汇编堆栈过程分析 分析的c语言源码 生成汇编代码--命令:gcc -g example.c -o example -m32 进入gdb调 ...

  4. 20145337 GDB调试汇编堆栈过程分析

    20145337 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...

  5. 20145208 GDB调试汇编堆栈过程分析

    20145208 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...

  6. 20145218 GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 虚拟机中分析过程 输入gcc - g example.c -o example -m32指令在64位机器上产生32位汇编,但出现以下错误: 这时需要使用sudo apt-g ...

  7. 20145236 GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 首先需要输入sudo apt-get install libc6-dev-i386安装一个库才能产生汇编代码,然后输入gcc - g example.c -o exampl ...

  8. 20145312 GDB调试汇编堆栈过程分析

    20145312 GDB调试汇编堆栈过程分析 参考资料 卢肖明同学的博客:<GDB调试汇编堆栈过程分析>: http://www.cnblogs.com/lxm20145215----/p ...

  9. 20145240 GDB调试汇编堆栈过程分析

    20145240 GDB调试汇编堆栈过程分析 测试代码 #include<stdio.h> short addend1 = 1; static int addend2 = 2; const ...

随机推荐

  1. python升级

    一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才有的,但是系统的自带的 ...

  2. REPL环境

    一.Node的REPL基本操作 REPL(Read-eval-print-loop):交互式解析器 在REPL环境下,可以定义和运行变量.函数.对象. REPL的常用命令: 进入node,即进入了RE ...

  3. 已知当前地理位置经纬度查询几个点中最近的一个地点demo

    1.首先定义一个点与点之间测算距离的方法 2.然后定义找出基本点和集合中最近的一个点的方法 3.取第一条数据即是最近的点的坐标 public class Location { public int i ...

  4. javascript 核心语言笔记 5 - 语句

    表达式在 JavaScript 中是短语(phrases),那么语句(statements)就是 JavaScript 整句或命令,语句以分号结束.表达式计算出一个值,语句用来执行以使某件事情发生 表 ...

  5. Swift - 代码创建NSLayoutConstraint布局

    NSLayoutConstraint参数说明: /** * 创建约束 NSLayoutConstraint 参数 说明: * item 自己 * attribute * relatedBy 大于等于 ...

  6. Unity Cookie

    1   在Unity里面,选择脚本单击左键打开 Sync Mono Development  这样就可以打开整个工程的脚本文件 进而才能在脚本中继续进行切换      Mesh    MeshFilt ...

  7. Google Analytics 链接点击次数记录

    <span> <a href="http://protect-your-family.hansaplast.com.my/upload/<?php echo $fil ...

  8. 网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  9. 攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行

    此种方式不能直接在eclipse中调试代码. 首先需要在src下放置服务器上的hadoop配置文件:core-site.xml\yarn-site.xml\hdfs-site.xml\mapred-s ...

  10. 各类坐标系相互之间的转换(84互转GC02,GC02互转BD09)

    在遥感行业我们经常会用到各类的坐标系相互之间的转换,常见的度分秒转化为度很简单,直接上代码: //经纬度 ////118度48分54.152秒=118+(48/60)+(54.152/3600)=11 ...