# GTIRB 二进制中间表示

> GrammaTech 开发的二进制中间表示，用于在各类二进制工具之间传递反汇编、分析与改写结果，其定位参照 LLVM-IR 在编译器中的作用。一个 IR 包含代表可执行文件或库的模块及其节、字节区间、代码块与数据块、符号和符号化操作数，另有过程间控制流图和存放分析结果的 AuxData 表，所有元素都通过 UUID 引用；它刻意不表示指令语义，机器码以原始字节保存，可交由 Capstone/Keystone 或其他中间语言处理。GTIRB 以 protobuf 序列化，提供 C++、Python 和 Common Lisp API 以及不完整的 Java API；另行收录的 ddisasm 可生成这种表示。

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

## 使用条件与局限

- PyPI 上最新的 gtirb 为 2.3.2，于 2026-06-16 以纯 Python wheel 上传，需要 Python 3.8+；更新日志称 PyPI 包需要 protobuf 4.21.1 或更新版本。同日所审阅的 master 提交把 version.txt 升至 2.3.3，CHANGELOG 将其标为尚未发布。GitHub 发布页止于 v2.0.0（2023-12-14，未附文件），之后的版本只有 git 标签。README 说明目前任何版本变化之间都不提供 ABI 兼容，并要求 stable 或 unstable 软件包与已安装的 ddisasm 和 gtirb-pprinter 保持一致。
- 预编译方式包括 GrammaTech 下载服务器上的 Windows .zip 构建和 Ubuntu 20.04（focal）apt 软件包，以及内含 GTIRB、ddisasm 和 gtirb-pprinter 的 grammatech/ddisasm Docker 镜像；README 提醒，stable gtirb 2.0.0 及更早版本的 apt 元软件包在升级时会冲突。从源码构建需要支持 C++17 的 64 位编译器（GCC、Clang 或 Visual Studio）、CMake 3.10+、Protobuf 3.0.0+ 和 Boost 1.68+；Common Lisp API 还需额外的手动配置，Java API 被标为不完整。
- GTIRB 是数据结构而非分析器：IR 来自 ddisasm 等生成工具。其模式中列出的文件格式包括 ELF、PE、COFF、XCOFF、Mach-O 和原始镜像，指令集从 IA-32、x64 到 ARM、MIPS、PowerPC，2.3.2 起还有 RISC-V；具体支持哪些取决于生成工具本身。doc/examples 中的程序演示 C++ API，并以多种语言计算 CFG 路径、数据符号和函数。
- GitLab CI 配置在 Ubuntu 20.04、22.04 和 24.04 上用 GCC 和 Clang 构建并测试，另有静态构建、Java、Common Lisp、Python 和覆盖率任务；GitHub Actions 工作流只负责构建并发布文档。
- LICENSE.txt 规定 GTIRB 采用 MIT（2018，GrammaTech），并附上适用于所含第三方代码的 Apache-2.0 with LLVM Exceptions，GitHub 因而未能归类；贡献者须签署 GrammaTech 的 CLA。

## 一手来源

1. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/README.md>
2. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/LICENSE.txt>
3. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/CHANGELOG.md>
4. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/version.txt>
5. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/CMakeLists.txt>
6. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/PROTOBUF.md>
7. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/AuxData.md>
8. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/proto/Module.proto>
9. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/CONTRIBUTING.md>
10. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/.ci/gitlab-ci.yml>
11. <https://github.com/GrammaTech/gtirb/blob/98fececb52ba36d86fe6798303a1904574dd5bb6/.github/workflows/actions.yml>
12. <https://github.com/GrammaTech/gtirb/tree/98fececb52ba36d86fe6798303a1904574dd5bb6/doc/examples>
13. <https://github.com/GrammaTech/gtirb/releases/tag/v2.0.0>
14. <https://pypi.org/project/gtirb/2.3.2/>

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

- [Quokka 二进制导出工具](https://awesomerea.org/zh/resources/quokka-binary-exporter/index.md) · 工具
- [knife 静态逆向工程工具包](https://awesomerea.org/zh/resources/knife/index.md) · 工具
- [BARF 二进制分析与逆向工程框架](https://awesomerea.org/zh/resources/barf/index.md) · 工具
- [rabbitizer MIPS 指令解码器](https://awesomerea.org/zh/resources/rabbitizer/index.md) · 工具
- [ghidrecomp 命令行 Ghidra 批量反编译工具](https://awesomerea.org/zh/resources/ghidrecomp/index.md) · 工具
- [Vivisect 二进制分析与调试框架](https://awesomerea.org/zh/resources/vivisect/index.md) · 工具

## 关于此条目

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