# MAMBO 动态二进制修改框架

> 曼彻斯特大学开发的动态二进制修改框架，可在 32 位 Arm（A32/T32）、AArch64 和 RV64GC RISC-V 上运行未经修改的 Linux 用户态程序，并在执行过程中把代码翻译到代码缓存里运行。事件驱动的 C 插件 API 可在代码扫描与执行事件上注册回调并生成插桩代码；示例插件可统计指令构成、分支与基本块次数，跟踪内存访问和系统调用，查找热点，模拟缓存，检查内存错误并检测数据竞争。

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

## 使用条件与局限

- 所审阅的 master 提交（2025-01-21）更新了 HiPEAC 2025 教程。项目没有带版本号的发布；GitHub 上的 1 和 2 两个发布只用于存放演讲幻灯片。README 称会按需改进应用兼容性，列出 SPEC CPU2006、PARSEC 3.0、GCC、LibreOffice 和 GIMP 等可在 Arm 上正常运行的程序，并说明大部分开发在私有仓库中进行。
- 需在 Armv7、Armv8 或 RV64GC 的 Linux 系统（物理机或虚拟机）上构建和运行，依赖 GCC、libelf 开发文件和 Ruby 1.9.1+；构建时会根据随附的 PIE 规格生成指令编码器与解码器，并静态链接 dbm。作者使用 armhf/arm64 版 Debian、Ubuntu 和 Arch Linux ARM，以及 RISC-V 上的 Ubuntu 22.04；对于其他主机，Dockerfile 会下载 Arm64 和 RISC-V 的 Ubuntu 24.04 预装服务器镜像并在 QEMU 中运行。插件需通过 makefile 的 PLUGINS 列表编译进来。
- README 列出的已知问题：SA_SIGINFO 处理函数收到的 siginfo_t 数据不正确，同步信号的处理函数无法 sigreturn，munmap 或缓存刷新后的代码缓存失效只在发起调用的线程中进行，RISC-V 上的信号处理也不完整。MAMBO 并非为防范被翻译程序的攻击而设计，因此 README 指出未经加固不能用作安全沙箱。
- CI 在 QEMU 用户态模拟下的 Ubuntu 20.04 chroot 中为 arm64、armhf 和 riscv64 构建 MAMBO，且只在其下运行 /bin/ls；test/ 中的指令、信号与自修改代码测试程序不在 CI 中运行。作者请使用者引用其 2016 年的 ACM TACO 论文，并列出之后的 ICPE 2018、CC 2020、VEE 2020 和 ISPASS 2023 论文。
- 采用 Apache-2.0，pie/ 目录中也附有相同许可证。待插桩的程序由使用者提供。

## 一手来源

1. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/README.md>
2. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/LICENSE>
3. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/makefile>
4. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/.github/workflows/main.yml>
5. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/docker/README.md>
6. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/docker/Dockerfile>
7. <https://github.com/beehive-lab/mambo/blob/dcdf19a751092c18cccc1e31fea684dfc599c8b8/api/plugin_support.h>
8. <https://github.com/beehive-lab/mambo/tree/dcdf19a751092c18cccc1e31fea684dfc599c8b8/plugins>
9. <https://github.com/beehive-lab/mambo/tree/dcdf19a751092c18cccc1e31fea684dfc599c8b8/test>
10. <https://doi.org/10.1145/2896451>

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

- [Class Informer MSVC RTTI 类信息插件](https://awesomerea.org/zh/resources/class-informer/index.md) · 工具
- [Kam1n0 汇编代码克隆搜索平台](https://awesomerea.org/zh/resources/kam1n0/index.md) · 工具
- [iblessing iOS 应用与 Mach-O 分析工具集](https://awesomerea.org/zh/resources/iblessing/index.md) · 工具
- [SiMBA 线性 MBA 表达式化简工具](https://awesomerea.org/zh/resources/simba-mba-simplifier/index.md) · 工具
- [GTIRB 二进制中间表示](https://awesomerea.org/zh/resources/gtirb/index.md) · 工具
- [Quokka 二进制导出工具](https://awesomerea.org/zh/resources/quokka-binary-exporter/index.md) · 工具

## 关于此条目

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