基础复习(GDB调试)

1.GDB环境配置

这里只说Pwndbg
Pwndbg的安装简单,访问Github主页,https://github.com/pwndbg/pwndbg
在“How”栏中看到安装说明
在这里插入图片描述

2.打开文件

GDB打开文件的方式与图形化的工具不同,需要通过传入参数或执行命令

  • 方式1:在GDB的命令行后直接接可执行文件,形如“gdb./文件”
  • 方式2:使用GDB的–args参数执行,形如“gdb–args./ping -c 10 127.0.0.1"
  • 方式3:打开GDB后,使用file命令指定可执行文件

3.调试程序

GDB调试方式也与图形化的工具不同,完全由命令控制,而不是快捷键
(1)控制程序执行

  • r(run):启动程序
  • c(continue):让暂停的程序继续执行
  • si(step instruction):汇编指令层面上的单步步入
  • ni(next instruction):汇编层面上的单步步过
  • finish:执行到当前函数返回

(2)查看内存、表达式等

  • x/dddFFF:ddd代表长度,FFF代表格式,如”x/10gx“,具体格式列表可以查看https://visualgdb.com/gdbreference/commands/x
  • p(print):输出一个表达式的值,如”p 1+1“,p命令同样可以在后面添加指定格式,如”p/x111222“
    在这里插入图片描述(3)断点相关命令
  • b(break):blocation,location可以为十六进制、名称的等,如”b0x8005a0“ “b*main”。“ * “是指中断在指定的地址,而不是对应的源代码行
  • info b 或 info bl (Pwndbg加入):列出所有的断点,每个断点会有自己的序号
  • del(delete):删除指定序号的断点,如“del 1”
  • clear:删除指定位置的断点,如“clear*main”
    在这里插入图片描述

(4)修改数据

  • 修改寄存器:set $rax=0x100000
  • 修改内存:set{要赋值的类型}地址=值,形如“set{int}0x405000=0x12345”
    注意
    GBD不会在入口点处暂停程序,所以用户需要在程序执行前设置好自己的断点,此外GDB不像OD和X
    64DBG一样会自动保存用户的断点数据,需用户每次重新设置断点

在GDB的命令执行中,无输入直接回车代表重复上一条命令

更多查看:https://zhuanlan.zhihu.com/p/297925056

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Back~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值