惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
Recorded Future
Recorded Future
爱范儿
爱范儿
美团技术团队
博客园_首页
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
T
Tailwind CSS Blog
雷峰网
雷峰网
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
量子位
Stack Overflow Blog
Stack Overflow Blog
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
V
Visual Studio Blog
罗磊的独立博客
Jina AI
Jina AI
宝玉的分享
宝玉的分享
C
CERT Recently Published Vulnerability Notes
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
T
Tenable Blog
S
Securelist
D
DataBreaches.Net
P
Proofpoint News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
Martin Fowler
Martin Fowler
W
WeLiveSecurity
MyScale Blog
MyScale Blog
The Cloudflare Blog
Security Latest
Security Latest
Hugging Face - Blog
Hugging Face - Blog
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cloudbric
Cloudbric

博客园 - PKICA

博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 rust线程-std::thread::park和unpark 配合Builder实现轻量级的线程挂起与唤醒 rust自定义线程属性std::thread::Builder rust线程 rust关联函数 rust高并发设计实践进阶 rust高并发设计实践 rust性能优化与安全边界 联合体union在rust和C语言中有什么区别 rust并发与异步编程 如何预防rust不良的代码设计总结 rust类型系统与零成本抽象 rust内存模型 告别大显存依赖!用 Rust 新一代深度学习框架 Burn 打造纯 CPU 文本分类推理引擎 rust类型系统标记 编译配置解答 git实用命令 rust底层设计理念值得注意的几个地方总结 rust可变引用作为函数参数的机理详解 Rust内存重解释transmute C与Rust类型映射 Rust FFI 安全抽象范式 rust延迟初始化原语 rust重借用机制与原理 rust参数传递模型 汇编语言语法详解 gdb汇编调试 gdb调试插件gef C语言thread_local linux系统readelf命令使用指南 gcore转储进程内存 gdb查看命令 RGB与YUV颜色编码的区别 Rust原子类型 C++ STL求两个集合交集差集 gdb调试集锦 ubuntu24.0.4使用root用户登录 ubuntu24.0.4输入密码后跳回登录界面 AI内存压缩技术TurboQuant及存疑 ubuntu切换到指定内核版本 在没有顶级科技大佬直接背书的情况下deepseek为啥能够异军突起? HuggingFace和deepseek的关系 当前主流AI大模型 Rust写时克隆Cow系列2
gdb-pwndbg的安装与使用指南
PKICA · 2026-04-15 · via 博客园 - PKICA

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文件:安装完成后,mv pwndbg $HOME/.pwndbg
  • 验证安装:
    启动 GDB:gdb。如果启动界面显示 pwndbg 字样且提示符变为 pwndbg>,则表示成功。

二、 核心使用指南

pwndbg 的主要优势在于其高度可视化的 Context(上下文) 视图,每当程序停止时,它会自动刷新以下面板:

  • REGISTERS:显示 CPU 寄存器及其指向的内容(支持指针追踪/Telescoping)。
  • DISASM:显示当前执行指令及其前后代码。
  • STACK:显示栈顶内容及详细的内存分布。
  • BACKTRACE:显示函数调用链。

1. 基础调试命令

这些命令是 GDB 的增强版,更符合二进制漏洞分析的习惯:

  • start:在 main 函数处自动停下(非常实用)。
  • b [address/function]:下断点(如 b *0x4005d1)。
  • c (continue):继续执行。
  • n (next) / ni (nexti):单步跳过(源码级/汇编级)。
  • s (step) / si (stepi):单步步入(源码级/汇编级)。

2. Pwn 专用高级功能

  • 内存查看:vmmap 查看程序的内存布局(堆栈权限、加载基址等)。
  • 安全检查:checksec 快速检查二进制文件的保护机制(NX, PIE, Canary, ASLR)。
  • 堆分析(pwndbg 强项):
    • heap:列出堆块(chunks)。
    • bins:查看 fastbins, unsorted bins 等各类堆桶。
    • visualize:以色彩丰富的图形化方式展示堆布局。
  • 溢出偏移计算:
    • cyclic [length]:生成特征字符串。
    • cyclic -l [value]:在程序崩溃后,通过崩溃地址快速计算偏移量。

三、 插件切换小贴士

如果你同时安装了 PEDAGEFpwndbg,可以在 ~/.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

参考资料:

Pwndbg + GEF + Peda — One for all, and all for one

gdb调试插件gef