论文部分内容阅读
二进制文件比对技术目前主要运用于软件同源性检测,软件安全性分析和软件信息移植等多个不同领域。传统的二进制文件比对技术主要分为字节级的比较和汇编指令级的比较两大类。其中基于字节内容的比较方法由于缺乏对于程序语义和结构的理解,只适用于若干字节变化的比较。基于汇编指令的比较方法克服了前者的缺点,提出了基于函数签名的结构化比对技术,提高了比对结果的准确度。结构化比对技术在解决了编译优化导致的指令序列不一致问题的同时,也带来了一些新的问题,如针对大型软件的比较,存在时间效率较低的问题和匹配结果不够准确的问题。同时,当前二进制比对方法中仅仅关心函数间的相似度结果,而忽略了文件的结构特征,对于文件相似度的描述还不够完善。本文针对当前二进制文件比对方法中存在的关键性问题展开两方面的研究工作。一方面提出了两种新的算法机制,提高了对于大型软件比对的时间效率和结果准确性;另一方面提出一种文件相似度计算的方案,综合考量了文件的结构特征和内部函数间的相似性关系。主要的研究成果如下:1.针对时间效率问题,提出了基于SimHash的相似函数查询算法,实验表明,该算法在保证准确率达到90%以上的同时(正确结果的漏选率在10%以下),对函数的集合进行了大幅压缩,平均缩小幅度在25倍以上。2.提出了一种基于函数属性的启发式匹配算法。对函数的签名进行了扩展,并设计了符合签名要素特征的签名距离计算公式。同时,针对稳定匹配迭代次数较多的问题,设计了一种启发式匹配机制。3.提出了一种文件相似度计算方式,综合考虑了文件的结构特征和函数间的相似关系。实验表明,本文所提算法在提高了比对结果准确性的同时,提高了文件比较的时间效率(提升幅度为1.3~8.3倍)。本文是国家自然科学基金项目(61472437)的重要组成部分,对于二进制文件比对的发展有一定的推动作用。