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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - PKICA

汇编语言语法详解 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