跳转至

GDB

GDB (GNU Debugger) 是一个强大的调试工具,广泛用于调试 C/C++ 程序。在 CTF 竞赛中,GDB 常被用来分析和调试二进制文件,以发现漏洞和理解程序行为。

基本命令

  • gdb <binary>:启动 GDB 并加载指定的二进制文件。
  • runr:运行程序。
  • break <location>b <location>:在指定位置设置断点。位置可以是函数名、行号或地址。
  • continuec:继续执行程序直到下一个断点。
  • steps:单步执行,进入函数调用。
  • nextn:单步执行,但不进入函数调用。
  • stepisi:单步执行一条汇编指令。
  • nextini:单步执行一条汇编指令,但不进入函数调用。
  • finishfin:继续执行直到当前函数返回。
  • print <variable>p <variable>:打印变量的值。
  • infoi
  • info registersi r:显示当前寄存器的值。
  • info breaksi b:显示断点信息。
  • info functionsi f:列出所有函数。
  • x/<format> <address>:以指定格式查看内存内容。例如,x/16x $esp 查看栈顶的 16 个十六进制数。
  • backtracebt:显示当前调用栈。
  • disas <function>:反汇编指定函数。
  • set <register> = <value>:设置寄存器的值。
  • shell <command>:在 GDB 中执行 shell 命令。
  • quitq:退出 GDB。

pwndbg 插件的基本命令

  • context:显示当前的寄存器、堆栈和反汇编信息。
  • heap:显示堆的状态和分配信息。
  • telescope <address>:以易读的格式查看内存内容。
  • vmmap:显示进程的内存映射。
  • search <pattern>:在内存中搜索指定的模式。
  • rop:帮助构建 ROP 链。
  • asm <instruction>:汇编一条指令并显示其机器码。

常用变量