# Tupni：输入格式的自动逆向工程

> Tupni 利用字节级动态污点跟踪，从 x86 程序解析单个输入时的执行轨迹推断输入格式。它依据处理污点字节的指令把输入切分为字段，从解析循环中找出记录序列，按处理代码将记录归为不同记录类型，并输出带有长度、取值及部分跨报文约束的增强 BNF 文法。多个输入得到的文法可以合并为更完整的规范。评测覆盖五种文件格式（WMF、BMP、JPG、PNG、TIF）和五种网络协议（DNS、RPC、TFTP、HTTP、FTP），并将输出用于 ShieldGen 的零日漏洞签名生成。

- 作者：Weidong Cui; Marcus Peinado; Karl Chen; Helen J. Wang; Luis Irun-Briz
- 原标题：Tupni: Automatic Reverse Engineering of Input Formats
- 发表载体：ACM CCS 2008
- 发表状态：会议论文
- 出版／提交日期：2008 年 10 月 27 日
- 日期依据：ACM 提交的 Crossref 元数据将印刷与在线出版日期均记为 2008-10-27，ACM 论文页面的存档副本显示相同日期。本条目不以 CCS 会议日期替代。
- DOI：10.1145/1455770.1455820
- 来源复核于：2026-10-19
- 收录于：2026-10-28
- 原始论文：<https://dl.acm.org/doi/10.1145/1455770.1455820>
- PDF：<https://dl.acm.org/doi/pdf/10.1145/1455770.1455820>
- BibTeX：<https://awesomerea.org/papers/citations/paper-tupni.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-tupni/>
- 记录 JSON：<https://awesomerea.org/papers/paper-tupni/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-tupni/index.md)

## 研究范围与局限

Tupni 需要解析程序以及每个输入对应的已记录执行轨迹，不能仅凭捕获的流量或文件工作。原型将 iDNA 轨迹与重新实现的 Vigilante 污点引擎结合，轨迹来自 Windows XP SP2 上的二进制，例如 gdi32.dll、gdiplus.dll、nslookup.exe 及 IIS 组件。单输入准确性评测每种格式只用一个输入，由作者对照公开规范判定；WMF、DNS 与 HTTP 用于指导设计，压缩图像数据被跳过，只分析容器结构；由于早期工具不可获得，未运行定量基线。所有记录序列均被识别，但存在部分误报序列；PNG 的 1,551 个字段中有 889 个识别错误，原因是程序忽略了重复数据块的内容。覆盖范围取决于输入的多样性，约束可能只适用于样本；字节级污点难以处理与字节边界不对齐的字段（包括许多加密或压缩格式），超出正则表达式描述能力的格式也不在适用范围内。跨报文约束只在 TFTP 上评估，多输入聚合只在 150 个 WMF 文件上评估。

## 与本合集的关联

补充一种经典的基于执行的输入格式推断方法，可恢复记录序列、记录类型与字段约束，与合集中基于流量及借助二进制的协议格式研究互补。

## 发表与复核说明

Crossref 与 ACM 页面存档按此顺序列出五位作者，记载 CCS ’08 第 391–402 页，主标题为“Tupni”，副标题为“automatic reverse engineering of input formats”；本条目采用论文中的大小写。Microsoft Research 出版物页面提供的 12 页副本将第五位作者写作“Luiz Irun-Briz”；本条目沿用 ACM 与 Crossref 的拼写。论文说明，不计 Vigilante 与 iDNA，原型含 14,000 行 C++ 与 4,100 行 Perl；论文未链接代码或数据，Windows 测试二进制及来自 Microsoft 内部库的 150 个 WMF 文件也不是公开产物。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/1455770.1455820>
2. <https://web.archive.org/web/20250206195542/https://dl.acm.org/doi/10.1145/1455770.1455820>
3. <https://api.crossref.org/works/10.1145/1455770.1455820>
4. <https://dl.acm.org/doi/pdf/10.1145/1455770.1455820>
5. <https://www.microsoft.com/en-us/research/publication/tupni-automatic-reverse-engineering-of-input-formats/>
6. <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tupni-ccs08.pdf>

## 关于此条目

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