# TypeForge：为去符号二进制合成并选择最适配的复合数据类型

> TypeForge 从去符号二进制中恢复复合数据类型，包括结构体布局、联合体以及指针引用和嵌套关系。它在 Ghidra 反编译器推断出的变量之上构建全程序类型流图，传播成员偏移与大小，切断由类型转换和联合体引起的冲突边，并合成候选类型声明。大语言模型只在这些静态合成的候选中进行选择：每个候选通过反编译器的重定类型接口应用，再以双败淘汰赛比较所得伪代码的可读性。作者在 OSPREY 的 coreutils 数据集上报告复合类型识别 F1 为 81.7%、布局恢复 F1 为 88.2%、关系恢复 F1 为 72.1%。

- 作者：Yanzhong Wang; Ruigang Liang; Yilin Li; Peiwei Hu; Kai Chen; Bolun Zhang
- 原标题：TypeForge: Synthesizing and Selecting Best-Fit Composite Data Types for Stripped Binaries
- 发表载体：IEEE S&P 2025
- 发表状态：会议论文
- 出版／提交日期：2025 年（具体日期未核实）
- 日期依据：IEEE Xplore 与出版方提交的 Crossref 元数据确认出版年份为 2025。两者均列出 2025 年 5 月 12 日，即 5 月 12—15 日研讨会的首日；IEEE 于 2025 年 6 月 16 日将文章加入 Xplore。本条目不将这两个日期视为已核实的出版日。
- DOI：10.1109/SP61157.2025.00193
- 来源复核于：2026-10-18
- 收录于：2026-10-18
- 原始论文：<https://ieeexplore.ieee.org/document/11023499>
- PDF：<https://noobone123.github.io/papers/typeforge-sp25.pdf>
- 代码：<https://github.com/noobone123/TypeForge>
- BibTeX：<https://awesomerea.org/papers/citations/paper-typeforge.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-typeforge/>
- 记录 JSON：<https://awesomerea.org/papers/paper-typeforge/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-typeforge/index.md)

## 研究范围与局限

恢复的是成员偏移、大小和类型间关系，而非原始类型名或成员名；由于名称不可得，关系是否正确以布局匹配判定。主要评测使用 OSPREY 的数据集，包括 GNU coreutils 与 Howard 数据集中较大的程序，涵盖超过 10,000 个函数和 11,000 个复合类型变量，优化级别为 O0–O3，真实标签取自调试信息；论文未按架构分别报告结果。基线比较中，OSPREY 的结果由其作者提供，运行时间为估算值，ReSym 的数据取自其已发表结果，因此并非所有基线均经重新运行。保守地删除冲突边可能遗漏有效成员；合并或展平成员的编译器优化会降低较高优化级别下的准确率。约 75% 的运行时间用于大语言模型选择阶段；默认模型为 GPT-4o mini，每轮比较执行三次。下游可读性与漏洞检测示例属于案例研究，不能证明语义等价。

## 与本合集的关联

补充以静态分析恢复复合类型与结构体布局、进而提升反编译结果可读性的方法，与基于学习的变量命名、数据结构符号恢复及大语言模型改写反编译输出的研究互补。

## 发表与复核说明

IEEE Xplore 与 Crossref 的标题、六位作者顺序和 DOI 一致；按标题检索 arXiv 未发现预印本。两者均列出按文章计的页码 1–18，而仓库提供的 BibTeX 为 2847–2864。作者托管的 PDF 是最终论文，包含 S&P 元评审附录。2026-03-17 快照是在 Ghidra 11.0.3 上测试的 Ghidra 扩展；其 Python 3.13 选择脚本固定 LangChain 0.3.23 与 openai 1.75.0，README 示例使用 gpt-4.1-mini，而非论文中的 GPT-4o mini。提取真实标签需要 DWARF 4 调试信息。LICENSE 文件采用 BSD 3-Clause 风格条款，另加在学术工作中须引用论文的要求；README 徽章标为 BSD 3-Clause，GitHub 则报告 NOASSERTION。Evaluation.md 链接的是 LLM 选择阶段之前、由早期版本生成的数据，说明投稿后于 2025 年 6 月修复了影响类型识别的缺陷，并且未公开变量对齐评估脚本，因此仅凭发布内容无法重新计算论文指标。

## 一手来源

1. <https://ieeexplore.ieee.org/document/11023499>
2. <https://api.crossref.org/works/10.1109/SP61157.2025.00193>
3. <https://noobone123.github.io/papers/typeforge-sp25.pdf>
4. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/README.md>
5. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/LICENSE>
6. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/Evaluation.md>
7. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/scripts/README.md>
8. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/scripts/requirements.txt>
9. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/scripts/judge/README.md>
10. <https://github.com/noobone123/TypeForge/blob/0f2ceff872362a1e4a4e927c589f9f5be465ebeb/scripts/judge/llm.py>

## 关于此条目

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