GDB¶
GDB (GNU Debugger) 是一个强大的调试工具,广泛用于调试 C/C++ 程序。在 CTF 竞赛中,GDB 常被用来分析和调试二进制文件,以发现漏洞和理解程序行为。
基本命令¶
gdb <binary>:启动 GDB 并加载指定的二进制文件。run或r:运行程序。break <location>或b <location>:在指定位置设置断点。位置可以是函数名、行号或地址。continue或c:继续执行程序直到下一个断点。step或s:单步执行,进入函数调用。next或n:单步执行,但不进入函数调用。stepi或si:单步执行一条汇编指令。nexti或ni:单步执行一条汇编指令,但不进入函数调用。finish或fin:继续执行直到当前函数返回。print <variable>或p <variable>:打印变量的值。info或iinfo registers或i r:显示当前寄存器的值。info breaks或i b:显示断点信息。info functions或i f:列出所有函数。x/<format> <address>:以指定格式查看内存内容。例如,x/16x $esp查看栈顶的 16 个十六进制数。backtrace或bt:显示当前调用栈。disas <function>:反汇编指定函数。set <register> = <value>:设置寄存器的值。shell <command>:在 GDB 中执行 shell 命令。quit或q:退出 GDB。
pwndbg 插件的基本命令¶
context:显示当前的寄存器、堆栈和反汇编信息。heap:显示堆的状态和分配信息。telescope <address>:以易读的格式查看内存内容。vmmap:显示进程的内存映射。search <pattern>:在内存中搜索指定的模式。rop:帮助构建 ROP 链。asm <instruction>:汇编一条指令并显示其机器码。