一种利用结构信息的二进制代码克隆检测方法和系统技术方案

技术编号:42239116 阅读:22 留言:0更新日期:2024-08-02 13:51
本发明专利技术涉及代码克隆检测技术领域,具体涉及一种利用结构信息的二进制代码克隆检测方法和系统;所述方法包括获取软件程序,进行反编译得到二进制代码指令序列,并对二进制代码指令序列提取出基本块和基本块间的结构信息;对二进制代码指令序列、基本块分别进行预处理;对预处理后的二进制代码指令序列和基本块中的各个指令通过预先训练好的词向量模型表征为词向量,得到词向量序列;将词向量序列和结构信息输入到预先训练好的深度学习模型中,提取出语义特征向量;计算出目标软件程序的语义特征向量与其他软件程序的语义特征向量间的相似度距离,根据相似度距离判断所述目标软件程序是否为代码克隆。本发明专利技术能够充分检测出软件代码是否为克隆代码。

【技术实现步骤摘要】

本专利技术涉及代码克隆检测,具体涉及一种利用结构信息的二进制代码克隆检测方法和系统


技术介绍

1、随着科技时代的来临,人们所开发出的软件程序数不胜数。但在软件开发的过程中,人们不可避免的会进行或多或少的代码克隆行为,代码克隆指的是对代码进行复制和粘贴的行为,在复制粘贴过程中也可能会对代码进行适当修改。虽然代码克隆会提高开发人员的效率,降低开发成本和开发难度,但是也会提高后期软件的维护成本。特别是在当今时代,软件程序的代码重构、漏洞修复,甚至是软件剽窃,都迫切需要进行代码克隆检测。

2、目前针对源代码的克隆检测技术较为成熟,无论是语义克隆还是非语义克隆,源代码克隆检测技术都能达到不错的检测效果。但是针对二进制代码克隆检测的研究及应用较少,一方面是因为对于二进制代码的理解有难度,另一方面是因为通常需要涉及到逆向工程方面的知识。但在这些场景下,通常都无法直接获取到二进制程序的源代码,由此可见二进制代码克隆检测的重要性和应用价值。

3、但在当前,二进制代码克隆检测存在以下的不足和局限:

4、1、没有充分利用二进制代码中存在的结本文档来自技高网...

【技术保护点】

1.一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述基本块间的结构信息为基本块通过控制流所指向的其他基本块的位置关系;所述控制流表示为基本块的执行顺序,其中,每一个基本块至多有两条控制流指向下一个基本块。

3.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,对所述二进制代码指令序列进行预处理包括:

4.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述词向量模型的训练过程包括采用第一语料库数据对所...

【技术特征摘要】

1.一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述基本块间的结构信息为基本块通过控制流所指向的其他基本块的位置关系;所述控制流表示为基本块的执行顺序,其中,每一个基本块至多有两条控制流指向下一个基本块。

3.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,对所述二进制代码指令序列进行预处理包括:

4.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述词向量模型的训练过程包括采用第一语料库数据对所述词向量模型进行预训练;当再训练数据筛选单元补充的第二语料库数据达到预设阈值时,采用第二语料库数据对所述词向量模型进行再训练。

5.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述深度学习模型的训练过程包括采用第一训练集数据对所述深度学习模型进行预训练;当再训练数据筛选单元补充的第二训练集数据达到预设阈值时,采用第二训练集数据对所述深度学习模型进行再训练。

6.根据权利要求1所述的一种利用结构信息的二进制代码克隆检测方法,其特征在于,所述深度学习模型包括:利用第一双向长短期记忆神经网络提取出每个基本块的初始特征;利用结构信息和迭代网络更新每一个基本块的初始特征;将迭代更新特征后的基本块作为序列性数据输入到第二双向长短期记忆神经网络中提取出函数级特征;采用注意力机制从函数级特征中提取出最终的的注意力特征;采用全连接层提取出所述注意力特征的语义特征向量。...

【专利技术属性】
技术研发人员:万邦睿周建军钱鹰刘歆陈奉漆益王莹
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

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

1