gdb逆向调试知识点

本文介绍了GDB中用于逆向调试的关键命令和技巧,包括disassemble查看汇编代码、display/i $pc设置指令显示、info register查看寄存器状态、si和ni命令在汇编层面单步执行,以及如何设置断点、查看内存、修改寄存器值等。此外,还讲解了如何在运行中的程序中使用GDB和如何退出GDB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值