# 从网络协议实现提取精确格式规范及其安全应用

> NetLifter 将可获取源码的 C 协议解析器静态转换为 BNF 风格的报文文法及报文字段之间的一阶逻辑约束。它分析经过标注的 LLVM 位码，结合抽象格式图、局部路径敏感分析、展开与重排序。所得字段边界、约束与名称可用于报文生成及解析器构建。

- 作者：Qingkai Shi; Junyang Shao; Yapeng Ye; Mingwei Zheng; Xiangyu Zhang
- 原标题：Lifting Network Protocol Implementation to Precise Format Specification with Security Applications
- 发表载体：ACM CCS 2023
- 发表状态：会议论文
- 出版／提交日期：2023 年 11 月 15 日
- 日期依据：ACM 提交的 Crossref 元数据将 published／纸质出版日期记为 2023-11-15，另列在线／发表历史日期为 2023-11-21。本条目采用 published／纸质出版日期，而非 11 月 26–30 日的会议日期。
- arXiv 首次提交：2023 年 5 月 19 日
- arXiv：2305.11781
- 已复核的 arXiv 版本：v1
- DOI：10.1145/3576915.3616614
- 来源复核于：2026-10-17
- 收录于：2026-10-18
- 原始论文：<https://dl.acm.org/doi/10.1145/3576915.3616614>
- PDF：<https://qingkaishi.github.io/public_pdfs/CCS23.pdf>
- 代码：<https://github.com/qingkaishi/netlifter>
- BibTeX：<https://awesomerea.org/papers/citations/paper-netlifter.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-netlifter/>
- 记录 JSON：<https://awesomerea.org/papers/paper-netlifter/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-netlifter/index.md)

## 研究范围与局限

需要源码／LLVM 中间表示及报文缓冲区、长度标注，并非对闭源二进制或仅凭流量进行恢复。论文面向常见的自顶向下 C 解析器，不支持 C++、内联汇编及缺少源码的库。指针和循环分析仍有近似；可识别校验和字段，但部分校验和约束会被省略，实现中忽略的字段也可能遗漏。精确率／召回率在选定的十种协议上进行人工核对。报告的模糊测试采用每次三小时、重复二十次的实验，并绕过校验和检查。方法推断的是格式，而非协议状态机或实现等价性的证明。

## 与本合集的关联

补充包含跨字段约束的源码到格式推断方法，与基于流量及借助二进制的协议重建研究互补。

## 发表与复核说明

最终作者版 PDF 与 Crossref 确认五位作者顺序、CCS 2023 DOI 和页码。19 页的 arXiv v1 保留旧的 CCS 2022 投稿模板及占位 DOI；出版身份以最终 15 页论文为准。仓库将原型称为 Popeye，并提示仍有粗糙之处。所审阅的 2025-04-21 快照在源码头部声明 AGPL-3.0-or-later。CMake 要求 3.10+、LLVM 12.x 与 Z3>=4.8.12；README 推荐 LLVM 12.0.1 及作者修改的 Z3 4.8.12-popeye 分支。不支持向量化中间表示：README 说明使用 -fno-vectorize 和 -fno-slp-vectorize，并建议保留调试信息、移除优化选项，以帮助字段命名。依赖与目标代码保留各自条款。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/3576915.3616614>
2. <https://api.crossref.org/works/10.1145/3576915.3616614>
3. <https://qingkaishi.github.io/public_pdfs/CCS23.pdf>
4. <https://arxiv.org/abs/2305.11781>
5. <https://arxiv.org/pdf/2305.11781v1>
6. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/README.md>
7. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/LICENSE.txt>
8. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/CMakeLists.txt>
9. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/tools/popeye/popeye.cpp>
10. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/tools/popeye/LiftingPass.cpp>
11. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/benchmarks/popeye/readme.txt>
12. <https://github.com/qingkaishi/netlifter/blob/362fe1edc2c2027d6e404c5d27cf9fee8a6b6a48/benchmarks/popeye/regression.sh>
13. <https://github.com/qingkaishi/z3/blob/b42b2d6d6994f593976cb8cc7eb6b093532954c9/README-CMake.md>
14. <https://github.com/qingkaishi/z3/blob/b42b2d6d6994f593976cb8cc7eb6b093532954c9/LICENSE.txt>

## 关于此条目

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