工具

RetroWrite 静态二进制改写框架

HexHive 开发的静态二进制改写工具,面向 x64 与 aarch64 的 Linux ELF 二进制:将二进制转换为符号化、可重新汇编的汇编代码,从而无需源码、也不依赖启发式规则即可插入插桩。附带的改写模块可添加仅针对二进制的 AddressSanitizer 和 AFL 覆盖率插桩,aarch64 上另有函数入口粗粒度控制流完整性模块;符号化的汇编也可在重新汇编前手工或用其他工具修改。x64 改写器的 KRetrowrite 变体可用 BASan 或 kcov 为 Linux 内核模块插桩,用于内核模糊测试。

使用条件与局限

  • 没有发布版本或标签,setup.py 标注的版本为 1.0.0。所审阅的 master 提交日期为 2025-04-26,调整了四天前新增的一个 x64 改写模块,该模块会打乱函数内的指令顺序;在此之前的最近提交来自 2023 和 2024 年,修复了 capstone 选项以及旧内核上的可执行栈问题。
  • 以 Python 3 编写(README 写明 3.6),依赖 pyelftools、capstone 4.0.2 或更高版本、intervaltree,以及固定为 9.1.11752 的 archinfo;README 建议用 pip 安装这些依赖,而不要使用发行版软件包。x64 输出可用 gcc 等普通编译器重新汇编,BASan 需链接 -lasan,AFL 覆盖率则改用 afl-gcc 或 afl-clang;在 aarch64 上由 retrowrite -a 完成汇编和链接。README 中 KRetrowrite 的安装步骤调用 setup.sh,但该脚本位于各演示目录中,而不在仓库根目录。
  • 输入为使用者自己的二进制或内核模块。根据 README 的功能表,x64 改写器要求位置无关、未去除符号且由标准编译器生成的二进制,不支持 C++;aarch64 改写器还能处理去除符号和非 PIE 的二进制,但不支持内核模块和 C++;--ignore-no-pie 与 --ignore-stripped 可跳过这些检查,需谨慎使用。两种架构采用不同的改写算法:IEEE S&P 2020 论文介绍 x64 版本,另一篇 HexHive 学位论文介绍 aarch64 版本。
  • CI 在自托管运行器上执行 SPEC CPU 基准脚本,测试脚本会克隆并改写 coreutils、SQLite 和 Debian 软件包。演示涵盖用户态、内核模块和模糊测试环境;Docker 模糊测试演示附带模糊测试种子和打过补丁的 AFL 2.52b 压缩包,但还需要自行构建的 clang 8、仓库的 git bundle 以及另行下载的 LAVA-M 语料;内核模糊测试的安装会下载约 10 GB 的 syzkaller 虚拟机文件。
  • 依据 LICENSE 文件与 README 采用 MIT 许可,但 GitHub 未能识别该许可;capstone 以子模块形式引入,适用其自身许可。所审来源未提及 REA 的使用,本收录未安装 RetroWrite,也未改写任何二进制。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

相关条目

依据相同的代码仓库或论文标识关联。

一手来源

  1. README.md GitHub · HexHive/retrowrite · 修订 3b1e366
  2. retrowrite#L160-L200 GitHub · HexHive/retrowrite · 修订 3b1e366
  3. requirements.txt GitHub · HexHive/retrowrite · 修订 3b1e366
  4. setup.py GitHub · HexHive/retrowrite · 修订 3b1e366
  5. .github/workflows/action.yml GitHub · HexHive/retrowrite · 修订 3b1e366
  6. demos/fuzzing/README.md GitHub · HexHive/retrowrite · 修订 3b1e366
  7. demos/fuzzing/docker/README.md GitHub · HexHive/retrowrite · 修订 3b1e366
  8. demos/kernel_demo/README.md GitHub · HexHive/retrowrite · 修订 3b1e366
  9. LICENSE GitHub · HexHive/retrowrite · 修订 3b1e366
  10. https://doi.org/10.1109/SP40000.2020.00009
  11. https://hexhive.epfl.ch/theses/20-dibartolomeo-thesis.pdf

同分区更多条目:原生二进制

原生二进制分区全部 118 项资源