# 机器学习如何解决二进制函数相似性问题

> 在统一的、基于 IDA Pro 的框架中重新实现来自安全、程序语言与机器学习三个研究社区的十种代表性方法，对二进制函数相似性研究开展测量，方法涵盖模糊哈希（Catalog1、FunctionSimSearch）以及图神经网络、NLP 编码器与 Transformer 模型。两个新数据集支撑六项改变优化级别、编译器、位宽与架构的任务，以 AUC 和排序指标评分，另含一项固件漏洞搜索案例。作者报告称，模糊哈希在较难的跨架构场景中失效，基于图神经网络的模型几乎在所有任务中表现最佳，许多近期模型在相同数据上的得分相近。

- 作者：Andrea Marcelli; Mariano Graziano; Xabier Ugarte-Pedrero; Yanick Fratantonio; Mohamad Mansouri; Davide Balzarotti
- 原标题：How Machine Learning Is Solving the Binary Function Similarity Problem
- 发表载体：USENIX Security 2022
- 发表状态：会议论文
- 出版／提交日期：2022 年 8 月
- 日期依据：采用 USENIX 官方 BibTeX（month = aug）及第 31 届 USENIX Security Symposium（2022 年 8 月 10–12 日）最终版 PDF 封面所载的出版月份，不推定具体出版日。
- 来源复核于：2026-10-20
- 收录于：2026-11-03
- 原始论文：<https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli>
- PDF：<https://www.usenix.org/system/files/sec22-marcelli.pdf>
- 代码：<https://github.com/Cisco-Talos/binary_function_similarity>
- BibTeX：<https://awesomerea.org/papers/citations/paper-binary-function-similarity.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-binary-function-similarity/>
- 记录 JSON：<https://awesomerea.org/papers/paper-binary-function-similarity/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-binary-function-similarity/index.md)

## 研究范围与局限

这是 2022 年对作者自行重新实现版本的比较，并非对原论文代码或所报告数值的比较，作者也未尝试复现这些数值；CodeCMR 由其原作者运行，Trex 仅在 Dataset-2 上使用其作者提供的模型测试。研究按设计排除了动态分析、符号执行及其他较慢的直接比较方法，也不涵盖基于大语言模型的相似性模型。Dataset-1 使用 GCC 与 Clang，在关闭函数内联的条件下，将七个开源项目（ClamAV、Curl、Nmap、OpenSSL、Unrar、Z3、Zlib）编译为 x86-64、ARM 与 MIPS 的 32 位及 64 位版本，优化级别为 O0–O3 与 Os，并剔除少于五个基本块的函数。Dataset-2 复用 Trex 作者发布的十个 GCC 7.5 项目。特征提取依赖 IDA Pro 7.3；由于缺少较新的 Hex-Rays MIPS 反编译器许可证，BinaryAI 仅覆盖部分数据。固件案例在两个映像中搜索十个 OpenSSL 函数。研究未评估混淆代码，结果也不代表当前排名。

## 与本合集的关联

补充在统一框架下对二进制函数匹配的测量研究；逆向工程人员借助函数匹配，将已知函数的标签迁移到剥离符号的代码上。该研究与 jTrans、BinaryAI 等单一模型条目互补。

## 发表与复核说明

未核实论文 DOI 或 arXiv 标识符；本条目采用经审阅的 USENIX Security 报告页面与 sec22-marcelli.pdf 配对规则。USENIX BibTeX 给出第 31 届 USENIX Security Symposium、页码 2099–2116、出版方 USENIX Association 及八月份；报告页面另链接预发表版 PDF 与幻灯片。仓库 README 列出勘误，涉及第 3.2 节关于 BinDiff 与 Diaphora 跨架构支持的表述及图 2 说明。在所审阅的提交 f0da093（2024-05-15）中，仓库代码采用 MIT 许可证，但 README 列出 GPL-3.0（Catalog1、SAFE、IDA CodeCMR 插件）、LGPL-2.1（基于 Gensim 的 Asm2vec）、Apache-2.0（FunctionSimSearch、GGSNN/GMN）及 CC BY-NC-SA 4.0（GNN-s2v）组件；编译出的二进制保留各自许可证。二进制（约 15 GB）与提取的特征（约 38 GB）需从 Google Drive 下载，生成新的 IDB 或特征需要 IDA Pro。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli>
2. <https://www.usenix.org/system/files/sec22-marcelli.pdf>
3. <https://github.com/Cisco-Talos/binary_function_similarity/blob/f0da093ed5662de51182822991ebee68c1a93cc2/README.md>
4. <https://github.com/Cisco-Talos/binary_function_similarity/blob/f0da093ed5662de51182822991ebee68c1a93cc2/LICENSE>
5. <https://github.com/Cisco-Talos/binary_function_similarity/blob/f0da093ed5662de51182822991ebee68c1a93cc2/Binaries/README.md>
6. <https://github.com/Cisco-Talos/binary_function_similarity/blob/f0da093ed5662de51182822991ebee68c1a93cc2/DBs/README.md>
7. <https://github.com/Cisco-Talos/binary_function_similarity/blob/f0da093ed5662de51182822991ebee68c1a93cc2/IDA_scripts/README.md>

## 关于此条目

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