摘要
二进制代码相似性检测是逆向工程中的核心任务,支持恶意软件分析和漏洞发现,通过识别不同上下文中语义相似的代码。现代方法已从手工工程特征发展到向量表示。手工统计(如操作比率)可解释,但表面且无法泛化。嵌入方法通过学习强大的跨设置表示克服了这一点,但这些表示是模糊的向量,阻碍了快速验证。同时,它们面临可扩展性与准确性的权衡,因为高维最近邻搜索需要近似,从而降低了精度。因此,当前方法在可解释性、泛化性和可扩展性之间迫使妥协。
我们通过使用基于语言模型的代理进行结构化推理分析汇编代码,填补了这些空白,生成输入/输出类型、副作用、显著常量和算法意图等特征。与手工特征不同,这些特征更丰富且具有适应性;与嵌入不同,它们是人类可读的、可维护的,并可以通过倒排索引或关系索引直接搜索。在没有任何匹配训练的情况下,我们的方法在跨架构和跨优化任务中分别实现了42%和62%的 recall@1,接近经过训练的嵌入方法(39%和34%)。结合嵌入,它显著超越了当前最先进的技术,证明了准确性、可扩展性和可解释性可以共存。
博主点评: 该研究有效解决了二进制代码相似性检测中的可解释性和准确性之间的矛盾,提出了基于语言模型的特征提取方法,为逆向工程领域带来了新的思路。通过丰富的特征集合,研究者展示了在没有额外训练的情况下也能实现高效的性能,推动了这一领域的进一步发展。