pwndbg学习
安装pwndbg
环境:ubuntu 20.04
git clone https://github.com/yichen115/GDB-Plugins
进入 pwndbg 文件夹
git init 初始化
运行./setup.sh 安装
使用pwndbg:echo "source ~/GDB-Plugins/pwndbg/gdbinit.py" > ~/.gdbinit
pwndbg默认显示分别是寄存器、汇编指令、栈空间、函数调用。如图所示
基本使用
运行
start start进入程序的入口点
r run,执行程序或者执行到第一个断点
c continue,执行到下一个断点
调试
ni 步过,执行完整个子函数,相当于执行一条汇编指令
si 步入,进入子函数的实现中
finish 步出,从步入里退出
断点
b 设置断点
d 2 删除断点(一般不用,而是让断点失效,'2'是断点的标号)
disable b 2 让断点失效
enable b 2 让断点生效
内存
print [$寄存器][函数名] 打印函数地址或寄存器的值
x/20xg $rbp-0x10 查看某个地址开始存放的数据
x/20i $rip 查看固定行数的汇编代码
set *0x7fffffffde20=0x61 修改某个地址的值
vmmap 虚拟内存地址段范围、权限
反汇编
disassemble $rip 查看当前执行函数的汇编指令
set disassembly-flavor intel 设置反汇编的模式
当前调试信息
info r info register,查看寄存器状况
info b info breakpoints,查看已经设置的断点