pwndbg的使用
这个界面是pwndbg(GDB 的 CTF 专用插件)的调试界面,用于分析 32 位程序(你的pp_32),我会分区域拆解每一部分的含义:
一、顶部命令行区域
1 | pwndbg> b main # 你执行的GDB命令:在main函数处下断点 |
二、顶部状态栏
1 | LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA # pwndbg的颜色图例:不同内存段的颜色标识 |
STACK:栈内存(黄色 / 橙色)HEAP:堆内存(绿色)CODE:代码段(紫色)DATA:数据段(蓝色)RWX:可读写可执行内存(红色)RODATA:只读数据段(青色)
三、寄存器区域(REGISTERS)
显示当前 CPU 寄存器的值(32 位程序用 EAX/EBX 等寄存器):
1 | EAX: 0x565555b7 (main+0) # EAX寄存器:当前值是main函数的起始地址(+0表示偏移) |
四、反汇编区域(DISASM)
显示当前 EIP 指向的代码段指令(紫色是代码段):
1 | 地址 偏移 指令内容 |
五、栈区域(STACK)
显示当前ESP指向的栈内存内容(黄色是栈段):
1 | 行号相对偏移 | 内存地址 → 存储内容 # 注释(pwndbg自动补充的解释) |
六、调用栈区域(BACKTRACE)
显示当前程序的函数调用关系(从当前函数回溯到入口):
1 | 行 地址 函数 + 偏移 |
总结
这是pp_32程序在main函数内的调试状态:程序刚进入main,正在初始化局部变量(存了 4 和 5),准备调用add函数计算 4+5。
更新: 2026-01-14 22:34:28
原文: https://www.yuque.com/idcm/wnemg9/wkgopvm4q7qe01ib