一种基于NLP的二进制代码相似性比对方法技术

技术编号:31020551 阅读:41 留言:0更新日期:2021-11-30 03:08
本发明专利技术涉及一种基于NLP的二进制代码相似性比对方法,属于代码比对领域。本发明专利技术利用代码中的跳转标识将汇编样本切分多个函数块,并利用NLP的方式将函数代码映射成函数特征向量,同时设计了以函数为基本分析单元的工程相似计算方法,从而完成代码溯源。该方法能满足二进制代码相似性对比中相似度检测的需求,且有着较高的准确率和召回率。有着较高的准确率和召回率。有着较高的准确率和召回率。

【技术实现步骤摘要】
一种基于NLP的二进制代码相似性比对方法


[0001]本专利技术属于代码比对领域,具体涉及一种基于NLP的二进制代码相似性比对方法。

技术介绍

[0002]开源复用是重要的软件开发模式,开源软件复用有助于缩减软件开发成本,提高了开发效率。但开源代码侵权与代码抄袭同样成为了当前软件行业的两个主问题,现有二进制代码相似性解决方案存在精确度和召回率低等问题。

技术实现思路

[0003](一)要解决的技术问题
[0004]本专利技术要解决的技术问题是如何提供一种基于NLP的二进制代码相似性比对方法,以解决二进制代码相似性比对精确度不高的问题。
[0005](二)技术方案
[0006]为了解决上述技术问题,本专利技术提出一种基于NLP的二进制代码相似性比对方法,该方法包括如下步骤:
[0007]第一步:二进制代码反汇编
[0008]将二进制代码文件Bin_0转换为汇编文件Asm_0;
[0009]第二步:汇编文件切分
[0010]Asm_0可视为二进制代码函数的集合,对Asm_0进行本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于NLP的二进制代码相似性比对方法,其特征在于,该方法包括如下步骤:第一步:二进制代码反汇编将二进制代码文件Bin_0转换为汇编文件Asm_0;第二步:汇编文件切分Asm_0可视为二进制代码函数的集合,对Asm_0进行函数、代码块提取,函数是多个代码块的集合;第三步:特征提取依据拆分好的代码块序列,利用NLP算法,结合函数特征信息,对二进制代码的文件、函数块、代码块分别进行编码,获得函数的特征向量;第四步:相似度计算通过计算函数特征向量之间的距离来获取函数的相似情况,根据函数的相似情况判断二进制代码工程的相似度。2.如权利要求1所述的基于NLP的二进制代码相似性比对方法,其特征在于,所述第一步具体包括:通过二进制代码反汇编工具,将二进制代码文件Bin_0转换为汇编文件Asm_0。3.如权利要求1所述的基于NLP的二进制代码相似性比对方法,其特征在于,所述第二步具体包括:S21、根据函数开始标识和函数结束标识,对汇编文件进行切分,提取汇编文件中的函数信息;函数用P表示,一个汇编代码S由S={P_1,P_2,
……
,P_n}表示;S22、每一个函数由多个代码基本块组成,并通过分支指令标记,代码块用L表示,每个函数表示为多个代码块的集合P={L_1,L_2,
……
,L_m};S23、对汇编文件中的函数标识、偏移地址、分支指令、函数地址、跳转地址和立即数进行标准化处理。4.如权利要求3所述的基于NLP的二进制代码相似性比对方法,其特征在于,分支指令标记包括jnz和jmp。5.如权利要求1

4任一项所述的基于NLP的二进制代码相似性比对方法,其特征在于,所述第三步具体包括如下步骤:S31、函数块P表示为代码块的集合,P={L_1,L_2,
……
,L_m};S32、对于代码块L_k进行分词处理:根据汇编语言的特征,对代码块的文本进行分词处理;S33、将代码块L_k序列映射成特征向量:使用哈希函数将每个代码块生成一组长度为64位向量,得到代码块L_k对应的哈希向量Hash_k;S34、分词词频统计,代码块L_k...

【专利技术属性】
技术研发人员:贾张涛付修锋李雅斯杨铁湃邵飒金玉川
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1