论文部分内容阅读
二进制函数相似度检测是指检测不同平台,不同编译器,不同优化选项,不同软件版本的两个二进制函数是否相似。因其能够在无法获得源码的情况下分析二进制函数,所以常用在网络安全和知识产权保护领域中,例如恶意软件分析,漏洞检测,版权纠纷等问题。现有检测方法一部分依赖于图匹配算法,这种方法时间复杂度高且难以迁移到新任务;另一部分是基于神经网络的图嵌入方法,这种方法将二进制函数转换成属性控制流程图,并将其输入到神经网络转换成高维向量。它通过将图匹配过程转换成向量之间的数值运算,提高了相似度的检测效率。但在当前的图嵌入方法中,对属性流程图的特征抽取方法通常是人工提取,会引入人为偏差,且在转换过程中没有考虑到不同结点的重要性差异,因此降低了转换过程的准确性。为了改进人工提取特征引入人为偏差的缺陷,本文设计并实现了基于标准化的无监督特征提取方法。该方法不仅能够避免产生人为偏差,还能够更好的迁移到不同的应用领域。另外本文基于传统的structure2vec网络,通过引入注意力机制来自动学习函数属性流程图中不同结点之间的影响权重。进一步提高了检测精确度。本文主要工作如下:1.提出通用的二进制函数相似度检测框架FuncSim。该框架兼容当前主流的检测方法,并具有高度的模块化和可扩展性。FuncSim将检测过程分为三个模块:流程图抽取模块,基本块特征提取模块及语义转换模块。2.提出基于标准化的无监督特征提取方法。将自然语言处理中的无监督表示方法引入到指令特征的学习过程,同时对指令进行标准化处理,降低指令的特异性,从而提高了指令特征学习性能。实验表明,相比于人工特征提取的方法,相似度检测AUC提升约5%。3.提出基于注意力机制的图语义转换网络。相比于传统的structure2vec,该网络在结点表示过程中不仅能够通过迭代学习邻域结点的信息,还能够自动学习邻域中不同结点对当前结点的权重系数,增强语义转换的准确性。实验表明,相比于structure2vec,本文提出的转换网络的相似度检测AUC提升约3%。