2024 · 会议论文

BinaryAI:基于智能二进制—源代码匹配的二进制软件成分分析

BinaryAI: Binary Software Composition Analysis via Intelligent Binary Source Code Matching

BinaryAI 通过将剥离符号的二进制中的函数与源代码匹配,识别其复用了哪些开源 C/C++ 库。它先用 Ghidra 将每个二进制函数反编译为类 C 伪代码,再用以 CLIP 式对比损失、在约 1,000 万对二进制—源码函数上训练的 Pythia-410M 模型,把伪代码与源码函数嵌入同一向量空间。从包含 12,013 个库、56,342,179 个源码函数的语料中检索出候选后,方法借助链接时的位置局部性和调用图加以精炼;当某个库中被匹配函数的比例超过阈值时,即判定二进制包含该库。作者报告其 recall@1 为 22.54%,CodeCMR 为 10.75%;库识别的精确率与召回率分别为 85.84% 和 64.98%,一款未具名商业工具为 73.36% 和 59.81%。

研究范围与局限

训练函数对来自自动编译并保留 DWARF 调试信息的 ArchLinux 与 AUR 软件包,语料和测试集均只涵盖 C/C++ 项目。软件成分分析测试集是作者由 85 个 GitHub 项目编译出的 150 个剥离符号的二进制,其中 1,045 个被复用库依据构建文件、头文件和许可证元数据人工标注;函数级真实标签仅覆盖其中 15 个二进制(23,529 对)。recall@1 数据合并了模型验证集与这 15 个二进制。两款商业基线依保密协议匿名,所有基线均在作者的 12,013 个库数据集上重建。作者检查的 112 个误报都可追溯到不完整的库依赖数据。模型、训练函数对、源码函数语料和带标注的测试集均未公开;论文链接的在线服务所用模型与语料可能不同于 2024 年评测的系统。匹配结果说明复用了哪些源码,并不是反编译结果,也不能证明二进制未被修改。

与本合集的关联

补充二进制到源代码的函数匹配和二进制软件成分分析,用于识别剥离符号的二进制中复用的开源代码,与二进制间相似性及反编译研究互补。

发表与复核详情

发表载体
ICSE 2024
发表状态
会议论文
出版/提交日期
2024 年 4 月 12 日
日期依据
ACM 提交的 Crossref 元数据将纸质与在线出版日期均记为 2024-04-12,早于 4 月 14–20 日举行的 ICSE 2024 两天;本条目不以会议日期或 arXiv 日期替代该日期。
arXiv 首次提交
2024 年 1 月 20 日
arXiv
2401.11161
已复核的 arXiv 版本
v3
DOI
10.1145/3597503.3639100

Crossref 记录该文为 ICSE 2024 论文集文章,页码 1–13,七位作者顺序与 arXiv 一致。arXiv v1 发布于 2024-01-20,v2 为 2024-01-23,v3 为 2024-08-26;所审阅的 v3 带有 ICSE '24 的 ACM 引用格式与 DOI。ACM 文章页面拒绝自动访问,因此出版信息以 Crossref 和 arXiv v3 为准。摘要链接 binaryai.net,该地址现重定向至 binaryai.cn 在线服务;采用 GPL-3.0 许可的 binaryai/sdk 仓库是该服务的客户端,使用时需要服务凭据。两者都未发布模型、训练函数对、语料或带标注的测试集,因此 code_url 与 project_url 均为空。论文脚注说明该模块已在工业界部署且语料持续扩充;另一脚注说明基础模型此前曾采用 OPT 与 BLOOM,后改用 Pythia。本次未运行任何内容。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

一手来源

  1. https://dl.acm.org/doi/10.1145/3597503.3639100
  2. https://api.crossref.org/works/10.1145/3597503.3639100
  3. https://arxiv.org/abs/2401.11161
  4. https://arxiv.org/pdf/2401.11161v3
  5. https://www.binaryai.cn/
  6. README.md GitHub · binaryai/sdk · 修订 095d4ad