gdb逆向调试知识点

  1. disassemble    //gdb下使用可以查看汇编代码
    disassemble /m 函数名      /m 源码和汇编一起排列
    disassemble 不带参数,默认的反汇编范围是 所选择帧的pc附近的函数
    单个参数, 就是pc, 当然也可以是函数名,因为函数名 也是一个 地址; 
    这样范围就是该pc附近的函数
    两个参数,就是内存地址范围
  2. 使用display /i $pc(结合display命令和寄存器/pc内部变量)指令进行设置
  3. info register查看寄存器的情况,可以简写成i r
    主要是%eip、%eax、%esp和%ebp
     列出的结果主要有三行
        最左边是寄存器名称外,中间是寄存器存的值(也就是一个内存地址),右边是这个值对应的内存
        地址中的值。打印一下$eax可验证
  4. si,ni:
        下一条语句遇到函数调用的时候,nexti不会跟踪进入函数,而是继续执行下面的语句,
        而step命令则会跟踪进入函数内部。
        si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指
        令,而s/n针对的是源代码。     
  5. i代表指令(instruction)
         n(ext)i
         s(tep)i
  6. $pc   代表pc程序计数器的值
  7. set disassembly-flavor intel          gdb设置intel汇编 ,默认是att
  8. print其实是有计数器的,每次print打印,其实都有一个类似count
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用GDB调试程序的基本流程如下: 1. 编译程序时需要加上-g选项,以便在程序中添加调试信息。 2. 启动GDB调试器,可以通过以下命令启动: ``` $ gdb <executable> ``` 其中,`<executable>`是要调试的可执行文件。 3. 设置断点,可以使用以下命令在代码中设置断点: ``` (gdb) break <line> ``` 其中,`<line>`是要设置断点的行号或函数名。 4. 运行程序,可以使用以下命令运行程序: ``` (gdb) run <args> ``` 其中,`<args>`是程序的命令行参数。 5. 当程序运行到断点处时,GDB会停止程序的执行,并等待用户输入命令。 6. 在程序停止时,可以使用以下命令查看程序的状态: ``` (gdb) info <args> ``` 其中,`<args>`可以是以下任意一个选项: - `info locals`:查看本地变量。 - `info breakpoints`:查看已设置的断点。 - `info threads`:查看正在运行的线程。 7. 恢复程序的执行,可以使用以下命令: ``` (gdb) continue ``` 8. 在程序执行过程中,可以使用以下命令单步执行程序: ``` (gdb) step ``` 或者使用以下命令跳过函数调用: ``` (gdb) next ``` 9. 在程序执行过程中,可以使用以下命令查看变量的值: ``` (gdb) print <var> ``` 其中,`<var>`是要查看的变量名。 10. 在调试完成后,可以使用以下命令退出GDB: ``` (gdb) quit ``` 这只是GDB调试的基本流程,GDB还有许多其他的命令和选项,可以根据需要自行学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值