100个gdb小技巧

start:程序自动中断在main函数处
c:继续运行

b main:main处下断点
r/run:运行程序,遇到断点停下
vmmap:查看内存映射,各加载文件的加载地址信息

-q:参数不显示欢迎信息等
-n:不加载任何插件,使用原生 gdb
info:后面跟上想要查看的信息,如函数信息 info functions

b/breakpoint:设置断点
del/delete breakpoints n:删除断点,n是断点编号,可用info breakpoints命令查看断点信息

start命令启动程序并停在开辟完主函数栈帧的地方
c/continue:继续执行程序,遇到断点停下
f/finish:结束程序

ni:单步步过,一步一步执行指令遇到函数调用时直接执行完整个函数
si:单步步入,一步一步执行指令遇到函数调用时跳转到函数内部

checksec:查看程序的防护措施

pdisass/disassemble:查看当前函数帧的反汇编代码,前一个命令有高亮显示只是需要安装pwndbg插件,后面一个命令时gdb自带的命令无高亮显示

p/print:打印信息,如寄存器 p $ebp
p & __libc_argv[0]:可以得到argv[0]的地址

x/<n/f/u> <addr>:查看某地址处的值,n/f/u 参数为可选,n代表想要查看多少个内存单元即从当前地址开始计算,每个内存单元的大小由后面的u参数指定;f表示显示格式,如s表示字符串形式,i为指令形式;u指定内存单元大小,b(一个字节)、h(双字节)、w(四个字节)、g(八字节)默认为w; 后面跟上x代表以十六进制的形式查看变量

set *addr = value:设置某个地址的值