Rogue Framework 是一个桌面工作台,用于 AFL++、跨架构 QEMU 模糊测试、harness 开发、轻量级 Ghidra 无头分析、自定义变异器以及补丁比较。 它有意设计为一个可审计的工作台,而非仅提供按钮的封装工具:每一条生成的 AFL++ 命令在执行前都可见,生成的 harness 也是研究者可以编辑的普通源文件。 它旨在成为“漏洞利用开发者的 BurpSuite”。
Rogue Framework 目前面向 Linux 和 Python 3.11+,并使用 PyQt6。
在 Kali Linux 上,安装程序会配置 Python 环境,克隆官方
AFL++ stable 分支并构建其完整发行版和插桩 QEMU
后端,然后安装 Ghidra 无头模式、原生/多架构 GDB、GDB server、QEMU
用户态/系统态模拟、编译器/构建依赖、用户启动器,以及
持久化的 shell PATH 条目。AFL++ 会被下载到被忽略的本地
AFLplusplus/ 目录中,不作为 Rogue Framework 的一部分分发:
chmod +x install.sh
./install.sh
rogue-framework
使用以下命令同时安装常见的交叉编译器及其客户机 sysroot(下载量会大得多):
./install.sh --with-cross-toolchains
安装程序是幂等的。使用 ./install.sh --check 审计现有安装,或使用 ./install.sh --rebuild-afl 强制重新构建 AFL++/QEMU。使用 ./install.sh --update-afl 可将下载的检出目录显式快进到最新的官方稳定修订版。以桌面用户身份运行;它仅对 apt 软件包请求 sudo。新写入的 PATH 无法改变已在运行的父 shell,因此请打开新终端、source ~/.zshrc/~/.bashrc,或通过安装程序打印的绝对路径 ~/.local/bin/rogue-framework 启动 Rogue。
仍可从检出目录手动启动:
python3 run.py
用于可编辑环境:
python3 -m pip install -e .
rogue-framework
跨架构动态二进制文件需要配合通过 QEMU_LD_PREFIX 选择的匹配客户机 sysroot;这本质上与目标平台/发行版相关。Ghidra 的 analyzeHeadless 路径可在 Tools → External tools 下覆盖。
.rgp 项目是可读的、带版本号的 JSON,包含可移植的项目定义。大型且可变的产物存放在其管理的配套工作区中:
example.rgp
example.rgp-work/
workspace.json
project.sqlite3
corpus/
output/
harnesses/
mutators/
analysis/
logs/
runs/
staging/
recovery/
backups/
objects/sha256/
这种拆分方式使项目文件保持可审查性,并避免将崩溃语料、发现结果、分析索引或 Ghidra 状态嵌入 JSON。workspace.json 将清单绑定到正确的工作区标识,而 project.sqlite3 存储操作/索引状态。受管引用使用 workspace://;显式外部资源使用 external://。机器本地的工具路径和 UI 状态存储在可移植项目之外。
另存为会创建一个具有新项目和工作区标识的独立克隆。Rogue 在切换打开的文档之前会暂存并验证目标,因此克隆失败时源项目保持不变。规范保存使用咨询式写入者租约以及修订版/SHA-256 冲突检查,保留先前良好的清单,使用 fsync 原子发布文件,并维护包括活动编辑器草稿在内的崩溃恢复快照。生成的 harness、变异器、Ghidra JSON、补丁差异结果和最小化发现结果也以事务方式发布,因此替换失败不会删除先前有效的产物。
.fuzz 项目Rogue 可以导入旧版 schema 0–2 的 .fuzz 清单及其 .fuzz-work 伴随文件。旧版源永远不会成为规范目标:首次保存会将其升级为同级的 .rgp 项目和 .rgp-work 工作区,同时保留原始旧版文件。新项目和另存为目标始终使用 .rgp。