# 代码并非自然语言：释放面向语义的图表示在二进制代码相似性检测中的潜力

> HermesSim 将每个函数提升为 Ghidra P-code，并构建面向语义的图，以显式表示指令内部的操作数结构、定义—使用关系、控制流及副作用顺序，同时舍弃与语义无关的细节，例如由哪个寄存器临时保存某个值。它使用带多头 softmax 聚合器的门控图神经网络对图进行嵌入，再按嵌入相似度比较函数。作者在 Marcelli 等人发布的 Dataset-1 基准上报告：在 10,000 个函数的候选池中进行 x64 跨编译器检索时，RECALL@1 为 48.1%，经微调的 jTrans 为 31.4%；HermesSim 模型参数量为 388K。

- 作者：Haojie He; Xingwei Lin; Ziang Weng; Ruijie Zhao; Shuitao Gan; Libo Chen; Yuede Ji; Jiashui Wang; Zhi Xue
- 原标题：Code is not Natural Language: Unlock the Power of Semantics-Oriented Graph Representation for Binary Code Similarity Detection
- 发表载体：USENIX Security 2024
- 发表状态：会议论文
- 出版／提交日期：2024 年 8 月
- 日期依据：采用 USENIX 官方论文集 BibTeX 中的出版月份；不以 2024 年 8 月 14–16 日的会议日期推定具体出版日。
- 来源复核于：2026-10-19
- 收录于：2026-10-27
- 原始论文：<https://www.usenix.org/conference/usenixsecurity24/presentation/he-haojie>
- PDF：<https://www.usenix.org/system/files/usenixsecurity24-he-haojie.pdf>
- 代码：<https://github.com/NSSL-SJTU/HermesSim>
- BibTeX：<https://awesomerea.org/papers/citations/paper-hermessim.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-hermessim/>
- 记录 JSON：<https://awesomerea.org/papers/paper-hermessim/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-hermessim/index.md)

## 研究范围与局限

实验室结果沿用 Marcelli 等人的 Dataset-1：训练、验证与测试集分别含 257K、13K 与 522K 个函数，覆盖 x86、ARM 和 MIPS 的 32 位与 64 位代码，由 GCC 和 Clang 以 O0–O3 及 Os 编译。HermesSim 保留该数据集由 IDA Pro 7.3 恢复的控制流和基本块边界，仅用 Ghidra 反汇编并提升各基本块，因此结果并不衡量函数或控制流图的恢复能力。每项设置抽取 1,000 个查询函数，候选池最多为 10,000 个函数；性能提升是相对于论文自行运行的 SAFE、Asm2Vec、GMN、Trex 和 jTrans 而言，其中 jTrans 仅支持 x86，只在 x64 子集上比较。真实场景实验在来自三家厂商 12 个 RTOS 固件映像的 62,605 个 ARM32 与 MIPS32 函数中，检索与 5 个 CVE 相关的 10 个函数；其真实标签来自对各比较方法前 20 个结果的人工检查。方法不编码字符串、整数及外部符号引用，只建模内存副作用，未解析的间接跳转也会使图不完整。相似度用于为人工审查排列候选，并不能证明等价性或存在漏洞。

## 与本合集的关联

补充基于学习的二进制代码相似性检索；逆向工程中常借此跨版本匹配函数、在剥离符号的二进制中识别库函数并定位已知漏洞代码，与反编译和符号恢复研究互补。

## 发表与复核说明

USENIX 页面、其 BibTeX 条目与最终 PDF 的九位作者顺序、页码 1759–1776 及 ISBN 978-1-939133-44-1 一致；该页面另列有预发表版 PDF。USENIX 不为论文分配 DOI，也未找到 arXiv 版本。论文链接 github.com/NSSL-SJTU/HermesSim。在所审阅的 2024-12-10 提交中，其 LICENSE 文件为项目声明 MIT 许可证，并附有所含 Cisco Talos 与 DeepMind 代码的 MIT 和 Apache-2.0 声明，因此 GitHub 未识别出单一许可证。README 中的论文链接使用 /presentation/he，该地址会重定向至 he-haojie 页面。提升步骤调用独立的 GPL-3.0 GSAT Ghidra 工具包（gsat-1.0.jar）。README 链接的 Zenodo 记录 10.5281/zenodo.10369788（CC BY 4.0）包含 Dataset-RTOS 二进制，以及约 17 GB、19 GB 和 5 GB 的压缩包，内含提取的特征、模型输入与输出；该 DOI 标识的是数据，而非论文。Dataset-1 的二进制来自 Cisco Talos 的 binary_function_similarity 仓库。固定版本的依赖面向 Python 3.10、PyTorch 1.13.1（CUDA 11.6）及 PyTorch Geometric 2.3.0。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity24/presentation/he-haojie>
2. <https://www.usenix.org/system/files/usenixsecurity24-he-haojie.pdf>
3. <https://github.com/NSSL-SJTU/HermesSim/tree/db37ec664fda4ea9d26afe46ec28ff4de0d8ebc3>
4. <https://github.com/NSSL-SJTU/HermesSim/blob/db37ec664fda4ea9d26afe46ec28ff4de0d8ebc3/README.md>
5. <https://github.com/NSSL-SJTU/HermesSim/blob/db37ec664fda4ea9d26afe46ec28ff4de0d8ebc3/LICENSE>
6. <https://github.com/NSSL-SJTU/HermesSim/blob/db37ec664fda4ea9d26afe46ec28ff4de0d8ebc3/requirements.txt>
7. <https://github.com/sgfvamll/gsat/releases/tag/v1.0.0>
8. <https://zenodo.org/records/10369788>

## 关于此条目

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