[论文解读] A Survey of Binary Code Similarity
本文首次全面综述了二进制代码相似性研究,分析了4个维度(应用、方法特征、实现与评估)下的61种方法。系统梳理了该领域中的关键趋势、挑战与开放性问题,包括跨架构支持、混淆对抗能力以及大规模固件分析的可扩展性,为二进制分析与软件安全领域的研究人员提供了基础性参考。
Binary code similarity approaches compare two or more pieces of binary code to identify their similarities and differences. The ability to compare binary code enables many real-world applications on scenarios where source code may not be available such as patch analysis, bug search, and malware detection and analysis. Over the past 20 years numerous binary code similarity approaches have been proposed, but the research area has not yet been systematically analyzed. This paper presents a first survey of binary code similarity. It analyzes 61 binary code similarity approaches, which are systematized on four aspects: (1) the applications they enable, (2) their approach characteristics, (3) how the approaches are implemented, and (4) the benchmarks and methodologies used to evaluate them. In addition, the survey discusses the scope and origins of the area, its evolution over the past two decades, and the challenges that lie ahead.
研究动机与目标
- 提供对二进制代码相似性研究的系统性分析,该领域此前缺乏全面的综述。
- 基于应用、设计特征、实现与评估方法,识别并分类61种二进制代码相似性方法。
- 追溯该领域从二进制代码差异比对到跨架构、语义感知相似性检测的演进历程。
- 突出显示关键开放挑战,如对混淆攻击的鲁棒性、对数十亿函数的可扩展性,以及不同方法间评估的公平性。
- 倡导建立标准化基准与开放数据集,以支持可复现且可比较的研究。
提出的方法
- 对来自安全、软件工程、编程语言与机器学习领域超过100篇论文进行了系统性文献综述。
- 将识别出的61种方法按四个维度分类:支持的应用、方法特征(如粒度、分析类型、相似性类型)、实现(平台、编程语言、架构、是否公开发布)以及评估(数据集、指标、抗变换鲁棒性测试)。
- 本综述包含详细的表格,总结每种方法的特性,支持在“一对一”与“多对多”比较、“静态”与“动态”分析,以及哈希、嵌入或索引技术在可扩展性中的应用等维度上进行并行对比。
- 作者评估了方法对常见代码变换(如编译器更改、优化级别、不同操作系统与CPU架构)的鲁棒性。
- 综述还探讨了语义相似性技术,特别是针对领域无关与领域特定函数(如加密操作)的应用。
- 论文讨论了当前评估实践的局限性,包括数据集不一致与源代码不可用问题,并呼吁建立标准化基准。
实验结果
研究问题
- RQ1二进制代码相似性方法的主要应用场景是什么?过去二十年中这些应用如何演变?
- RQ2不同二进制代码相似性方法在粒度、分析类型(静态/动态/符号执行)和相似性建模(语法、结构、语义)方面有何差异?
- RQ3现有方法中最常见的实现平台、编程语言和所支持的架构是什么?
- RQ4这些方法如何被评估?当前基准测试实践在数据集多样性与对代码变换鲁棒性方面存在哪些局限?
- RQ5二进制代码相似性中的关键开放挑战是什么,特别是针对混淆对抗、跨架构支持以及大规模固件分析的可扩展性?
主要发现
- 该领域已从基础的二进制差异比对发展为先进的二进制代码搜索,对结构与语义相似性的关注日益增加,以提升鲁棒性。
- 共识别并系统化了61种二进制代码相似性方法,其中多数采用静态分析与语法/结构比较,而越来越多的方法采用基于学习的技术(如嵌入)。
- 仅有30%的被调研方法公开发布,且许多缺乏源代码,严重阻碍了可复现性与公平比较。
- 迄今为止最大的评估分析了8,126个固件镜像中的4.2亿个函数,但扩展至500亿个函数(例如,10万个IoT固件镜像)仍是重大开放挑战。
- 目前尚无方法能处理基于虚拟机的打包器(如Themida或VMProtect),且最先进的解包工具仍因函数检测不完整而漏检20%–60%的代码。
- 亟需建立标准化、开放的基准数据集,涵盖真实世界的混淆技术与多样化代码变换,以实现跨方法的公平且可复现的评估。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。