论坛首页 安全工具分享区 阅读主题

[分享] pwndbg+tmux真乃天作之合

374 浏览 8 回复
#1 楼主 2026-06-01 21:09:20
一直以来都在使用tmux作为终端复用的工具,非常喜欢它可以自由切换、分割当前终端的功能。现在自己每次都是通过ssh登录到调试机,然后使用tmux创建一个session在后台,这样就算因为网络原因ssh断掉,当前终端正在进行的工作也不会断掉。
最基础的流程就是:更多操作可以参考这个教程:Tmux 使用教程 - 阮一峰的网络日志最近在看pwndbg的FEATURES.md时,发现其支持一个特性:将其section重定向到任意的tty。那么通过这个功能就可以实现将pwndbg的各个section重定向到终端由tmux切割出来的不同pane上,从而最大化利用当前的屏幕(也更好看)。也有人在pwndbg的基础上开发出了另外一个插件splitmind,其官方库中给出的一个实现效果如下,在一个由tmux分割的终端上,让pwndbg调试信息区域按照使用人员最喜欢的方式排列、输出。
如上的实现配置文件gdb.init如下,其大概原理就是:在tmux的一个window中,会默认打开一个名为main的gdb调试pane,然后基于该main的上、下、左、右可以自由进行窗口的切割和划分,并将pwndbg相应的section重定向到切割出来的pane中。例如:.above(of="main", display="disasm", size="80%", banner="top"),就是对main进行切割,展示pwndbg的disasm区域,并且控制所占据的大小为80%。pwndbg所支持的section如下,在gdb中由context-sections变量控制:与之配合的还有一些其他的gdb调试环境变量,例如等等,这些都可以在pwndbg/pwndbg/commands/context.py去查询含义以及默认值。了解section和控制section大小的环境变量可以让我们更好自定义属于自己的gdb界面。在如上的基础上,我定制了自己的一个gdb配置,能达到的效果就是,在gdb启动的时候选择模式,并按照自己的习惯展示gdb调试信息:s:源码模式,如下
d:汇编模式,如下
m:混合模式,如下
那么直接给出我的gdb配置文件,也给出了相应的注释,更多的配置还可以参考我个人的GitHub配置文件库:

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-276203.htm
#2 2026-06-01 21:09:20
感谢分享,一直以来都是一个窗口显示gdb,一个用来操作文件内容,没想到tmux还能这么用,学到了
#3 2026-06-01 21:09:20
感谢分享,用"set context-clear-screen on"清除重定向的输出屏幕,很方便。
#4 2026-06-01 21:09:20
感谢分享
#5 2026-06-01 21:09:20
师傅一直显示我AttributeError: module 'splitmind' has no attribute 'Mind'' 说我的splitmind中没有Mind,按道理来说不应该啊 splitmind包识别到了 识别不到里面的东西
#6 2026-06-01 21:09:20
感谢分享
#7 2026-06-01 21:09:20
但是各个窗口不能同步滚动,或者说我没找到方法,往上回溯各个窗口都不对应就很痛苦了,最后还是改回了单窗口
#8 2026-06-01 21:09:20
izeroo


但是各个窗口不能同步滚动,或者说我没找到方法,往上回溯各个窗口都不对应就很痛苦了,最后还是改回了单窗口

我一般是到对应的子窗口,然后使用tmux的命令去滚动
#9 2026-06-01 21:09:20
很实用的技巧,谢谢师傅

请登录后参与讨论

立即登录 注册账号