工程开发
rr-debugger avatar

rr-debugger

使用 rr 进行确定性记录与重播调试。支持反向执行、崩溃轨迹提取,以及针对软件与二进制漏洞的 GDB 根因分析。

简介

rr-debugger 技能提供了基于 rr (record-replay) 框架的确定性调试高级接口。它专为需要检查 C/C++ 程序复杂执行路径的安全研究人员、软件工程师和漏洞分析师设计,特别是在处理崩溃、内存损坏或难以捉摸的 ASAN (AddressSanitizer) 错误时。通过仅记录程序执行一次并允许无限重播,此技能消除了困扰竞争条件 (race conditions) 和间歇性软件缺陷调试的非确定性问题。

  • 启用完整的反向执行控制,使用 reverse-next、reverse-step、reverse-continue 和 reverse-stepi 等指令,允许开发人员向后浏览指令流,以找出状态损坏发生的确切时刻。
  • 自动化崩溃轨迹提取,提供针对标准崩溃和复杂 ASAN 报告的特定工作流程,包括自动跳转至故障发生前的最后一个应用程序指令帧。
  • 提供全面的内存和变量检查功能,包括 GDB 风格的本地变量打印、指针解引用和十六进制格式内存转储。
  • 支持通过 list 和 layout src 指令进行源代码级调试,以及使用 disassemble 和 layout asm 进行底层汇编语言分析,以验证二进制行为。
  • 与 RAPTOR 的自主研究工作流程集成,允许研究人员从崩溃检测(例如通过 AFL++ 模糊测试)过渡到深度根因分析,而无需手动重建执行状态。

使用此技能时,请确保目标环境支持必要的 ptrace 功能,因为 rr 需要特定的内核配置(通常需要在 Docker 容器中使用 --privileged 模式)。工作流程通常从使用 rr record 记录执行开始,随后进行交互式的 rr replay 会话。建议用户利用提供的 crash_trace.py 辅助工具进行自动化轨迹提取。该工具针对 Linux 环境进行了优化,对于传统调试器无法提供足够背景信息或可重复性的二进制文件审计非常有效。它是 RAPTOR 管道中验证漏洞和制作精确安全补丁的重要组件。

仓库统计

Star 数
2,385
Fork 数
367
Open Issue 数
17
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 07:42
在 GitHub 查看