[发明专利]二进制代码文件溯源方法在审
申请号: | 201910853284.1 | 申请日: | 2019-09-10 |
公开(公告)号: | CN110569629A | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 陶金龙;纪祖赑;高艳鹍;冯大成;张建伟;汪进银 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F21/16 | 分类号: | G06F21/16;G06F8/53 |
代理公司: | 11011 中国兵器工业集团公司专利中心 | 代理人: | 赵欣 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制代码 溯源 时间和空间复杂度 二进制文件 文件相似性 倒排索引 汉明距离 汇编代码 汇编指令 代码库 反汇编 准确率 比对 分析 | ||
本发明提出了一种二进制代码文件溯源方法,该方法通过反汇编生成汇编代码,然后基于汇编指令生成二进制文件的Simhash特征值,最后结合倒排索引方法和Simhash汉明距离计算,实现二进制代码文件相似性比对,并最终完成二进制代码文件溯源。该方法具有较好的时间和空间复杂度,能够满足在海量代码库中进行二进制代码文件快速溯源分析的要求,具有较高的准确率和召回率。
技术领域
本发明属于代码溯源分析领域,提出了一种二进制代码文件溯源方法。
背景技术
基于代码复用的开发模式,作为提高软件开发效率和质量的重要手段,已成为软件开发的主流方式,这就造成最终开发出来的软件构成复杂、来源广泛,从而为软件安全性和知识产权自主性带来巨大挑战。软件中可能同时包含多种类型或多种来源的构件或代码,如包含组织内部开发的构件代码、软件外包开发的代码、从多个开源社区复用的构件代码或者代码片段、购买的第三方商业构件代码等。
为了提高软件的可控性,降低软件安全性和知识产权风险,必须进行软件组成及溯源分析。软件组成及溯源分析方法可以分成基于源代码的溯源分析和基于目标代码的溯源分析两类,对于海量代码库的二进制代码文件,现有方法无法快速实现其溯源。
发明内容
本发明的目的在于提供一种二进制代码文件溯源方法,解决了基于海量代码库的二进制代码快速溯源问题。该溯源方法不仅具有较好的时间和空间复杂度,而且具有较高的准确率和召回率,实现程序代码复用的快速溯源分析。
本发明的技术方案如下:一种二进制代码文件溯源方法,其特征在于,具体包括以下步骤:
第一步,二进制文件反汇编:将二进制文件中的代码段转化成汇编代码;
第二步,二进制代码特征计算:基于汇编代码生成二进制代码文件的Simhash值;
第三步,基于特征的文件溯源:通过计算两个Simhash值之间的汉明距离,就可以判定两个二进制代码文件是否相似,完成二进制代码文件的溯源。
有益效果:本发明通过反汇编生成汇编代码,基于汇编指令生成Simhash特征值,结合倒排索引技术和Simhash汉明距离计算,实现二进制代码文件相似性比较,并最终完成二进制代码文件溯源。该方法具有较好的时间和空间复杂度,能够满足在海量代码库中进行二进制代码文件快速溯源分析的要求。具有较高的准确率和召回率,从而为软件安全性和知识产权自主性提供技术支撑;可以基于海量代码库的二进制代码文件溯源应用场景。
附图说明
图1为本发明的流程图;
图2为二进制文件代码特征计算流程图;
图3为Simhash特征值汉明距离的计算方法示意图。
具体实施方式
如图1所示,本发明提供一种二进制代码文件溯源方法,具体实施步骤为:
第一步、二进制文件反汇编
二进制文件反汇编是指借助反汇编工具,将二进制文件中的代码段转化成汇编代码,删除与程序代码特征无关信息,并对汇编代码中的偏移地址、函数地址、立即数和部分跳转指令等进行特殊处理。汇编代码相对于二进制指令,更加容易理解,而且每一条汇编指令都代表一定的语义,是天然的程序“指纹”。
使用IDAPro工具可以对二进制代码文件逆向未加壳或脱壳获取汇编代码。由于软件源代码的轻微改动都将造成汇编代码中寄存器、立即数、内存地址等的大幅变动,为了忽略这种差异对于代码溯源分析的影响,需要对获取到的汇编代码进行如下处理:
(1)寄存器如EAX、AX、AL等依据所占位数分别标准化为REG32、REG16、REG18;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910853284.1/2.html,转载请声明来源钻瓜专利网。