2023 · 期刊论文
基于可解释特征工程重新审视二进制代码相似性分析及经验教训
Revisiting Binary Code Similarity Analysis Using Interpretable Feature Engineering and Lessons Learned
构建可复现的交叉编译基准 BinKit,包含由 51 个 GNU 软件包生成的 243,128 个二进制和 36,256,322 个函数,覆盖八种架构、九个 GCC 与 Clang 版本、五个优化级别,以及 PIE、LTO、禁止内联和 Obfuscator-LLVM 等选项构成的 1,352 种组合。可解释基线 TikNib 基于简单的前语义函数特征,衡量编译器、编译选项与架构如何改变这些特征。作者报告称,少量基本特征即可接近深度学习工具的准确率,加入类型特征后 AUC 超过 0.99,并将失败案例归因于 IDA Pro 分析错误、编译器后端差异和架构特定代码。
研究范围与局限
研究对象是函数级的前语义(语法与结构)特征,样本为从源码编译、带调试信息以构建真实标签的 Linux GNU 软件包;语义特征、基于 NLP 的模型以及整个二进制或其他相似性任务不在评测范围内。AUC 超过 0.99 的结果所用参数与返回类型通过 Ctags 和调试信息从源码获得,并非从剥离符号的二进制中恢复。与现有最优方法的比较是将 TikNib 在 VulSeeker 的 ASE 数据集上的 AUC 与 VulSeeker 作者报告的数值对照,而非重新运行,并且省略了原论文使用的固件映像。混淆仅涵盖 Obfuscator-LLVM 的指令替换、虚假控制流和控制流平坦化,且只应用一次。实验使用 IDA Pro 6.95,作者也无法排除 MIPS 特征提取有误的可能。结果不能用于对后续学习模型或大语言模型方法排名。
与本合集的关联
补充二进制函数匹配的公开可复现基准与可解释基线,并记录编译设置和反汇编器错误如何使相似性结果产生偏差,与 jTrans 等学习模型互补。
发表与复核详情
- 发表载体
- IEEE Transactions on Software Engineering
- 发表状态
- 期刊论文
- 出版/提交日期
- 2023 年 4 月
- 日期依据
- IEEE 向 Crossref 登记的第 49 卷第 4 期纸本刊期日期为 2023-04-01,本目录采用月份精度;不以 2020-11-21 的 arXiv v1 日期或 2022 年 6 月的录用说明替代期刊刊期日期。
- arXiv 首次提交
- 2020 年 11 月 21 日
- arXiv
- 2011.10749
- 已复核的 arXiv 版本
- v4
- DOI
- 10.1109/TSE.2022.3187689
IEEE TSE 第 49 卷第 4 期,页码 1661–1682;Crossref 记录自 2023-04-01 起适用 CC BY 4.0 许可。所审阅的 arXiv v4(2022-07-07)注明于 2022 年 6 月录用;其页眉仍为 2020 年 11 月,这是模板日期而非出版日期。IEEE 与 Crossref 标题中的 “Using” 首字母大写,arXiv 则写作 “using”。在所审阅的 BinKit 提交 f6565a3(2023-12-15,MIT)中,README 介绍了 BinKit 2.0,包含 371,928 个二进制、1,904 种选项组合、23 个编译器并新增 Ofast 级别,论文并未评测该版本;README 的 BinKit 1.0 部分与论文的 243,128 个二进制和 1,352 种组合一致,将四种混淆选项计为编译器(共 13 个),并在 Ubuntu 16.04 上测试。论文版数据集、特征 pickle 文件与工具链需从 Google Drive 下载。分析工具 TikNib 是独立的 MIT 仓库,审阅提交为 3b7c165(2025-05-18);其 README 为论文设置提供 IDA Pro 6.95 脚本,另提供 IDA Pro 7.5 脚本。本次未下载数据集,也未运行代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://doi.org/10.1109/TSE.2022.3187689
- https://api.crossref.org/works/10.1109/TSE.2022.3187689
- https://arxiv.org/abs/2011.10749
- https://arxiv.org/pdf/2011.10749v4
- README.md GitHub · SoftSec-KAIST/BinKit · 修订 f6565a3
- LICENSE.txt GitHub · SoftSec-KAIST/BinKit · 修订 f6565a3
- README.md GitHub · SoftSec-KAIST/TikNib · 修订 3b7c165
- LICENSE.txt GitHub · SoftSec-KAIST/TikNib · 修订 3b7c165