ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Pwndbg 调用路径可视化指南:3 条真实命令看懂“谁调用了谁“

Pwndbg 调用路径可视化指南:3 条真实命令看懂“谁调用了谁“ Pwndbg 调用路径可视化指南3 条真实命令看懂谁调用了谁【免费下载链接】pwndbgExploit Development and Reverse Engineering with GDB LLDB Made Easy项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg凌晨三点程序崩在 libc 的 memcpy 里二十层栈全是十六进制地址你只想知道谁调用了谁。Pwndbg 的函数调用路径可视化调用图把这条链变成带颜色、带帧号的可读列表一眼看出坏数据是哪层传进来的断点该打在哪。几条真实命令5 分钟上手。 先看效果调用图长什么样先说实话Pwndbg 的调用路径可视化没有一键导出大图的命令。它的做法是用栈画图——context 面板里的 backtrace 区按层列出调用链► 标记当前帧retaddr 再把栈上所有返回地址摊开给你。看这张截图backtrace 区最上面一行是你当前停住的函数下面每一行是它上面的调用者函数名和返回地址并排给出。这就是程序的地铁线路图——每站是一个函数顺序就是程序一层层走进来的顺序。 5分钟上手如何生成第一张调用路径环境要求Linux 或 macOS装好 GDB 和 Python 3就这些。git clone https://gitcode.com/GitHub_Trending/pw/pwndbg cd pwndbg ./setup.sh装完重新打开 GDB提示符变成 pwndbg 说明加载成功。pwndbg file ./vuln pwndbg break main pwndbg runrun 跑到 main 后上下文自动刷新backtrace 区列出从栈底到 main 的链条。跑完这条命令你的第一张调用路径图就出来了。 三个真实场景把调用图用在漏洞分析下面三个场景覆盖了 Pwndbg 调用路径可视化在漏洞分析中的大部分用法。漏洞初筛如何看清崩溃点前面是谁在调用痛点崩溃发生在 libc 深处你要证明坏数据是谁带进来的只能手动翻栈帧。在危险函数处下断点run 停在断点。跑 retaddr把栈上所有返回地址列出来。pwndbg retaddr你看到了什么一串栈地址按位置排开每条地址都标注它落在哪个函数里——哪些帧是真实的调用返回点哪些是垃圾数据对照 backtrace 区一眼分清。它的实现见 pwndbg/commands/retaddr.py本质是扫描栈并与 callstack() 匹配。审计调用链如何用 nextcall 逐层走完整条链痛点想顺着输入→危险函数的路径走一遍单步 stepi 慢到眼睛疼。nextcall 会自动停在下一条 call 指令每停一次上下文就显示你在链中的位置。只关心特定危险函数时加正则比如 nextcall memcpy。走深了用 nextret 回上一层或 up 2 直接跳上去两帧。pwndbg nextcall memcpy你看到了什么停在调用 memcpy 的现场backtrace 区是完整调用链旁边的 args 区直接给出这次调用的参数。命令源码在 pwndbg/commands/next.py。复盘长日志崩溃前的调用路径怎么留档痛点程序跑了一小时才崩等你接上调试器现场已经没了。启动前用 contextoutput 把 backtrace 区挂到文件上contextoutput backtrace /tmp/bt.txt no。正常运行每次停住都会把当前调用链追加写进文件。崩溃后打开文件现场就回来了。pwndbg contextoutput backtrace /tmp/bt.txt no你看到了什么文件随每次停止不断增长崩溃那一刻的调用路径可以逐条回放不用再猜。 关键参数速查调用路径相关参数一览参数默认值什么时候改context-backtrace-lines8调用链太深、backtrace 区被截断时调大nextcall 的 symbol_regex空任意 call 都停只关心特定危险函数时如 nextcall memcpyauto-explore-stackwarn栈区域空白或提示找不到栈时设为 yesbacktrace-prefix►想换当前帧的标记符号时这些都是 GDB 里的配置项直接用 set 命令改即可不用碰任何文件。 踩坑急救调用图常见问题解答backtrace 区只显示几行但我的调用链有 30 层执行 set context-backtrace-lines 30 加行嫌长就用 up 10 直接跳到上层看参数只关心关键那几层。backtrace 或栈区域是空的提示找不到栈常见于 qemu 或裸机目标。先跑一次 stack-explore会提示较慢或者 set auto-explore-stack yes让 pwndbg 自己扫描出栈的范围。retaddr 只显示地址、没有函数名二进制缺符号。带调试信息重编译或用 nm 检查二进制是否导出符号这是用户侧的问题不是 pwndbg 配置问题。 收尾把 Pwndbg 调用路径可视化用顺Pwndbg 不导出单张大图而是用彩色 backtrace 加 retaddr 加 nextcall 把调用图画出来覆盖绝大多数漏洞分析需求。跟踪深度保持 3 到 5 层看到可疑层立刻 up 回去看参数。细节参考 nextcall 命令文档 和 retaddr 命令文档。【免费下载链接】pwndbgExploit Development and Reverse Engineering with GDB LLDB Made Easy项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表