# RetroWrite 静态二进制改写框架

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

- 类型：工具
- 目标：二进制
- 类别：原生分析工具
- 关联：基础工具
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始资源：<https://github.com/HexHive/retrowrite>
- 一手来源：<https://github.com/HexHive/retrowrite/blob/3b1e366ff8d2449a4f4c3157dd95c6f39c0a310b/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/retrowrite/>
- 记录 JSON：<https://awesomerea.org/resources/retrowrite/record.json>
- 英文版：[English](https://awesomerea.org/resources/retrowrite/index.md)

## 使用条件与局限

- 没有发布版本或标签，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 以子模块形式引入，适用其自身许可。

## 一手来源

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

## 相关条目

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

- [RetroWrite：为模糊测试与内存检测静态插桩商用现成二进制](https://awesomerea.org/zh/papers/paper-retrowrite/index.md) · 研究论文

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

- [Interruptor 系统调用跟踪库](https://awesomerea.org/zh/resources/interruptor/index.md) · 工具
- [dyld_cache_extract dyld 共享缓存提取工具](https://awesomerea.org/zh/resources/dyld-cache-extract/index.md) · 工具
- [FLARE IDA Pro 实用脚本合集](https://awesomerea.org/zh/resources/flare-ida/index.md) · 工具
- [Binlex 二进制特征词法框架](https://awesomerea.org/zh/resources/binlex/index.md) · 工具
- [Driver Buddy Reloaded Windows 内核驱动分析插件](https://awesomerea.org/zh/resources/driver-buddy-reloaded/index.md) · 工具
- [FA（Firmware Analysis）符号定位自动化工具](https://awesomerea.org/zh/resources/fa-firmware-analysis/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
