






















pwndbg 是一款专为漏洞利用(Pwn)和逆向工程设计的 GDB 插件。相比于 GEF,它在堆(Heap)分析、QEMU 模拟支持以及与 Ghidra 等反编译器的集成方面更具优势。
pwndbg 建议安装在 Ubuntu 或 Debian 等 Linux 发行版上。它通过克隆 GitHub 仓库并运行安装脚本来自动配置依赖项(如 Python 虚拟环境和必要的库)。
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh #务必检查脚本中更新你系统软件的命令,以免引起系统兼容性问题。
~/.gdbinit 文件以加载插件。建议注释掉更新命令,以免引起gdb软件不兼容问题。包括含有“update”和“install”行的命令。
安装完成后,在全局或者用户环境中添加“export PWNDBG_NO_AUTOUPDATE=1”,以免自动更新软件。
~/.gdbinit 中添加 source /path/to/pwndbg/gdbinit.py。(后续配置独立脚本,删除该行即可。)pwndbg $HOME/.pwndbggdb。如果启动界面显示 pwndbg 字样且提示符变为 pwndbg>,则表示成功。pwndbg 的主要优势在于其高度可视化的 Context(上下文) 视图,每当程序停止时,它会自动刷新以下面板:
这些命令是 GDB 的增强版,更符合二进制漏洞分析的习惯:
start:在 main 函数处自动停下(非常实用)。b [address/function]:下断点(如 b *0x4005d1)。c (continue):继续执行。n (next) / ni (nexti):单步跳过(源码级/汇编级)。s (step) / si (stepi):单步步入(源码级/汇编级)。vmmap 查看程序的内存布局(堆栈权限、加载基址等)。checksec 快速检查二进制文件的保护机制(NX, PIE, Canary, ASLR)。heap:列出堆块(chunks)。bins:查看 fastbins, unsorted bins 等各类堆桶。visualize:以色彩丰富的图形化方式展示堆布局。cyclic [length]:生成特征字符串。cyclic -l [value]:在程序崩溃后,通过崩溃地址快速计算偏移量。如果你同时安装了 PEDA、GEF 和 pwndbg,可以在 ~/.gdbinit 中使用 define 语法来创建切换开关。例如,创建一个 init-pwndbg 命令,这样你就可以在启动 GDB 时通过执行该命令来手动激活 pwndbg,而不是默认加载。参考:gdb调试插件gef
当然,经过尝试,可以使用比较简单的配置:
1). 修改脚本 /usr/bin/gdb-gef
将脚本改为手动解析参数的模式。这种写法可以确保:先加载插件,后挂载进程。
#!/bin/bash
exec gdb -q -ex init-pwndbg "$@"
2). 检查 /etc/gdb/gdbinit 配置
确保你的 define 块指向的是绝对路径,这样最稳妥:
define init-pwndbg
source $HOME/.pwndbg/gdbinit.py
end
document init-pwndbg
Initializes PwnDBG
end
参考资料:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。