|
摘要: 二进制代码相似性检测是逆向工程中的一个核心任务。它通过识别不同上下文中语义相似的代码来支持恶意软件分析和漏洞发现。现代方法已经从手工设计的特征发展到向量表示。手工制作的统计数据(例如操作比例)可解释,但是浅显且无法泛化。基于嵌入的方法通过学习稳健的跨环境表示克服了这一问题,但这些表示是不透明的向量,阻碍了快速验证。它们还面临着可扩展性与准确性的折衷,因为高维度的最近邻搜索需要减少精度的近似。当前的方法因此在可解释性、泛化性和可扩展性之间强迫进行妥协。 我们利用基于语言模型的代理来进行结构化推理分析汇编代码,并生成输入/输出类型、副作用、显著常量和算法意图等特征。与手工制作的特征不同,它们更丰富且适应性更强。与嵌入不同,它们是可读的、可维护的,并且可以直接通过倒排索引或关系索引进行搜索。在没有任何匹配训练的情况下,我们的方法在跨架构和跨优化任务中分别实现了42%和62%的recall@1,与具有训练的嵌入方法相当(39%和34%)。与嵌入结合使用,它显著优于现有技术,表明准确性、可扩展性和可解释性可以共存。 更新时间: 2025-09-27 18:34:32 领域: cs.AI,cs.CR,cs.SE
|