尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Pwndbg config 命令完全指南:查看、过滤与持久化配置参数

Pwndbg config 命令完全指南:查看、过滤与持久化配置参数 Pwndbg config 命令完全指南查看、过滤与持久化配置参数【免费下载链接】pwndbgExploit Development and Reverse Engineering with GDB LLDB Made Easy项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbgPwndbg 的config命令用于查看当前调试会话中全部 Pwndbg 专属配置参数如 context 显示行数、hexdump 宽度、堆启发式解析策略等。本文基于 config 命令文档 与仓库源码系统讲解该命令的用法、过滤原理、输出解读以及配套的set/show修改与configfile持久化方案帮助你在 GDB/LLDB 中快速定位并调优任意配置项。命令速览config是 Pwndbg 的命令体系CommandCategory.PWNDBG中的一员其官方用法如下源码定义见 pwndbg/commands/config.pyusage: config [-h] [filter_pattern]参数类型参数名说明Positionalfilter_pattern应用于配置参数名称/描述的过滤器可省略Optional-h,--help显示帮助信息并退出config不带参数列出当前作用域下所有Pwndbg 配置参数config filter_pattern只列出名称或描述命中过滤模式的参数。从实现上看命令本体只是对通用展示逻辑display_config(filter_pattern, Scope.config)的一层薄封装因此它与theme命令pwndbg/commands/config.py共用同一套输出逻辑区别仅在于作用域。filter_pattern 过滤大小写不敏感的子串匹配过滤并非正则或通配符而是大小写不敏感的子串包含匹配。核心逻辑位于get_config_parameterspwndbg/commands/config.pyif filter_pattern: filter_pattern filter_pattern.lower() values [ v for v in values if filter_pattern in v.name.lower() or filter_pattern in v.set_show_doc.lower() ]也就是说只要满足以下任一条件参数就会被保留参数名v.name形如context-code-lines包含该子串参数的一句话说明v.set_show_doc形如Number of source code lines to print by the context command包含该子串。因此config context不仅能命中名为context-sections、context-code-lines的参数也能命中描述里含 context 字样但名称不同的参数。若没有任何参数命中命令会输出提示No config parameter found with filter filter_pattern见 pwndbg/commands/config.pyscope名会根据实际作用域替换为config或theme。读懂 config 输出config的输出是一张对齐的表格表头固定为Name / Value / Default / Documentation四列随后按参数名排序逐行打印pwndbg/commands/config.py。实际形如Name Value Default Documentation -------------------------------------------------------------- context-code-lines 14 14 Number of source code lines to print by the context command context-sections regs disasm code ghidra stack backtrace expressions threads heap_tracker last_signal ... Which context sections are displayed (controls order) emulate on on Unicorn emulation of code from the current PC register布尔与字符串的表示值的格式化由Parameter.pretty()决定pwndbg/lib/config.py布尔值渲染为on/off对应 GDB 的原生表示而非True/False字符串与枚举值用单引号包裹例如on、regs disasm ...便于区分字符串型与数值型参数枚举PARAM_ENUM与自动布尔PARAM_AUTO_BOOLEAN会以auto、on、off等候选值呈现。当前值与默认值不同时额外标注默认值若某参数当前值已被修改输出中会以当前值 (默认值)的形式同时给出默认值pwndbg/commands/config.py 的extend_value_with_default。这一设计让你在排查为什么行为变了时能一眼看出哪些参数偏离了出厂设置。对齐与排序列宽按当前结果集中最长的参数名与说明动态计算并使用ljust_colored做颜色感知的对齐pwndbg/commands/config.py避免 ANSI 颜色码破坏列对齐结果按参数名排序输出for v in sorted(values)pwndbg/lib/config.py 中Parameter.__lt__按name比较方便查阅。从查看走向修改set / show / helpconfig只负责展示修改与查询需借助 GDB/LLDB 原生的参数机制。每次执行config后命令末尾都会打印提示pwndbg/commands/config.pyYou can set a config variable with set config-var value, and read more about it with help set config-var.即三条配套操作show context-code-lines # 查看当前值 set context-code-lines 20 # 修改值 help set context-code-lines # 查看完整帮助文档底层实现中每个参数都注册为一个 GDBParameterpwndbg/gdblib/config.py 的init_params。参数名中的连字符对应 GDB 命令语法而其 Python 侧属性名将连字符替换为下划线attr_namepwndbg/lib/config.py例如context-code-lines对应pwndbg.config.context_code_lines。设置时布尔会被翻译为on/off整数0与-1在特定参数类下会被解释为unlimitedpwndbg/gdblib/config.py。configfile一键导出当前配置若希望把调试中调好的参数固化下来可以借助configfile命令configfile 命令文档。它只注册于 GDB 环境pwndbg/commands/config.py用法usage: configfile [-h] [--show-all]不带参数仅输出被修改过的参数is_changed判断见 pwndbg/lib/config.py每条以可执行的set语句给出--show-all输出全部配置项。输出形如pwndbg/commands/config.py# context-code-lines: Number of source code lines to print by the context command # default: 14 set context-code-lines 20把输出追加到你的~/.gdbinit中务必放在 pwndbg 初始化之后即可在下次启动时自动恢复配置详见 configuration/index.md。与configfile对应主题类参数可用themefilethemefile 命令文档导出。theme 与 config两套作用域的对照Pwndbg 将配置参数划分为两个作用域Scope枚举pwndbg/lib/config.pyScope.config—— 通用行为参数由config命令展示Scope.theme—— 配色主题参数由theme命令展示。两个命令签名完全一致均支持filter_pattern并共用display_config。theme 作用域在打印时会有特殊处理ColorParameter会先经generate_color_function渲染出带颜色的示例值再输出pwndbg/commands/config.py使你在终端里直接预览实际配色效果。configfile/themefile也分别对应这两个作用域完整参数清单可查阅 configuration/config.md 与 configuration/theme.md。常用配置参数速览以当前仓库 configuration/config.md 收录的参数为准config输出中常见的几类高频调优项包括参数默认值说明context-sectionsregs disasm code ghidra stack backtrace expressions threads heap_tracker last_signal控制 context 展示哪些区块及顺序context-code-lines/context-disasm-lines/context-stack-lines14/10/8各 context 区块打印行数emulateonUnicorn 模拟开关on/off/jumps-only关闭可提升性能hexdump-width/hexdump-bytes16/64hexdump 行宽与单次字节数hexdump-limit-mb10hexdump单次读取上限MB防止 GDB 因超大内存申请崩溃0表示不限dereference-limit5指针链最大解引用深度resolve-heap-via-heuristicauto堆解析启发式策略auto/force/neverauto-explore-auxv/auto-explore-stackwarn栈/AUXV 信息探索开关yes/warn/no可能显著拖慢调试max-decimal-number9大于该值的数字以十六进制显示unlimited全十进制0全十六进制运行config 关键词即可按名称或描述快速检索上述任意一项例如config heap会聚合所有堆相关参数config context则聚焦 context 显示行为。常见问题config xxx没有任何输出过滤是子串匹配且大小写不敏感请检查关键词是否与参数名或描述中的单词一致也可能确实没有命中命令会打印No config parameter found ...提示。不知道某参数能取哪些值使用help set config-var查看完整帮助文档文档中会自动附加Default:与Valid values:字段pwndbg/lib/config.py例如emulate的合法值为on、off、jumps-only。希望配置在重启后仍然生效使用configfile生成set语句并写入~/.gdbinitGDB或对应的 lldb init 文件注意置于 Pwndbg 加载之后。只想看被改过的参数configfile不带--show-all默认只导出变更项便于回顾本次会话的改动。通过config命令配合set/show/help以及configfile导出你可以在不重启调试会话的前提下完成对 Pwndbg 的精细化调优并将成果固化为可复用的启动配置。【免费下载链接】pwndbgExploit Development and Reverse Engineering with GDB LLDB Made Easy项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表