linux环境使用gdb调试
安装插件
安装peda
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
偏好设置
设置汇编样式
set disassembly-flavor intel
调试控制
进入gdb
gdb executable_name
或gdb -q executable_name
设置断点
b function_name
,如b main
b *addr
,如b *0x12345ab
b num
,在第num行设置断点,行号可以通过l
命令获取
查看断点信息
info breakpoints
删除断点
delete num
删除标号为num的断点
delete num1-num2
删除标号为num1至num2的断点
运行程序
r
反汇编
disas function_name
单步跳过
n
单步进入函数
s
执行到下一个断点
c
回车自动执行上一条命令
Enter
查看和修改内存
查看某地址的字符串
x/s addr
,如x/s 0x123456ab
打印从某变量开始的n个字节
p /x (char[n])*var_name
,如p /x (char[10])*buff
修改寄存器的值
set $eax = 0
修改某块内存的值
set {int}addr=num
,如set {int}0x123456ab=4