# TYGR：基于图神经网络的剥离符号二进制类型推断

> TYGR 在 angr 的 VEX 中间表示上执行与架构无关的过程内数据流分析，并用图神经网络对每个变量的数据流图进行分类，从而推断剥离符号二进制中栈变量与堆变量的类型。它可预测基本类型、指针及结构体成员布局，覆盖其数据中观察到的 97.1% 的类型。作者还构建了 TyDa：由 Gentoo 与 Debian 的 C 软件包以 O0–O3 编译、保留调试信息的 163,643 个二进制，涵盖 x86、x64、AArch64、Arm32 与 MIPS，并在划分评测子集前对其中函数去重。作者报告在 x64 的 O0–O3 上整体准确率为 76.6%、结构体准确率为 45.2%，并称整体准确率与结构体准确率分别至少超出已有工作 26.1% 和 10.2%。

- 作者：Chang Zhu; Ziyang Li; Anton Xue; Ati Priya Bajaj; Wil Gibbs; Yibo Liu; Rajeev Alur; Tiffany Bao; Hanjun Dai; Adam Doupé; Mayur Naik; Yan Shoshitaishvili; Ruoyu Wang; Aravind Machiry
- 原标题：TYGR: Type Inference on Stripped Binaries using Graph Neural Networks
- 发表载体：USENIX Security 2024
- 发表状态：会议论文
- 出版／提交日期：2024 年 8 月
- 日期依据：采用 USENIX 官方论文集 BibTeX 中的出版月份；不以 2024 年 8 月 14–16 日的会议日期推定具体出版日。
- 来源复核于：2026-10-19
- 收录于：2026-10-27
- 原始论文：<https://www.usenix.org/conference/usenixsecurity24/presentation/zhu-chang>
- PDF：<https://www.usenix.org/system/files/usenixsecurity24-zhu-chang.pdf>
- 代码：<https://github.com/sefcom/TYGR>
- BibTeX：<https://awesomerea.org/papers/citations/paper-tygr.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-tygr/>
- 记录 JSON：<https://awesomerea.org/papers/paper-tygr/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-tygr/index.md)

## 研究范围与局限

真实标签来自作者自行编译的二进制中的 DWARF 信息，训练与测试使用 TyDa-min，即约 8% 的 TyDa 二进制，因此结果不涵盖野外样本、混淆代码或 C++ 代码。分析是过程内的，仅覆盖栈变量与堆变量，不包括全局变量；未解析的间接跳转可能使部分代码未被分析，相邻的栈上结构体会被预测为一个结构体，但作者发现这种情况在 TyDa 中很少见。随着训练数据增加，准确率在 80% 左右趋于平稳，作者将其归因于罕见类型以及仅凭使用方式无法区分的类型。比较按各基线的原始设定进行：DIRTY 与 OSPREY 仅在 x64 上比较，OSPREY 则使用其作者提供的 Coreutils x64-O0 结果。准确率未直接与 Ghidra 或 IDA Pro 比较。预测结果取自固定的基本类型、指针类型与结构体成员类型集合，并不恢复类型名称或完整的结构体声明。

## 与本合集的关联

补充基于数据流图和图神经网络的类型推断方法及多架构类型恢复数据集，与基于反编译输出、大语言模型及程序合成的类型恢复研究互补。

## 发表与复核说明

USENIX 页面、其 BibTeX 条目与最终 PDF 的 14 位作者顺序、页码 4283–4300 及 ISBN 978-1-939133-44-1 一致。USENIX 不为论文分配 DOI，也未找到 arXiv 版本。论文在 github.com/sefcom/TYGR 发布研究产物。在所审阅的 2024-08-22 提交中，该仓库没有许可证文件；仓库附带训练好的 MODEL_base 与 MODEL_struct 模型，环境文件固定 Python 3.8、PyTorch 1.8.1（CUDA 10.2）与 angr 9.0.7491。TyDa 不在仓库内：README 链接了两个 Dropbox 文件夹，其一被描述为附有各优化级别 JSON 元数据的 Gentoo C 与 C++ x86-64 二进制，另一个包含其余 C 二进制，并说明数据集中仍有重复函数。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity24/presentation/zhu-chang>
2. <https://www.usenix.org/system/files/usenixsecurity24-zhu-chang.pdf>
3. <https://github.com/sefcom/TYGR/tree/280320129a7f8bbfb9ee61b9a2155d2ddeac44c6>
4. <https://github.com/sefcom/TYGR/blob/280320129a7f8bbfb9ee61b9a2155d2ddeac44c6/readme.md>
5. <https://github.com/sefcom/TYGR/blob/280320129a7f8bbfb9ee61b9a2155d2ddeac44c6/environment.yml>
6. <https://github.com/sefcom/TYGR/tree/280320129a7f8bbfb9ee61b9a2155d2ddeac44c6/model>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
