【技术实现步骤摘要】
一种从汇编语言中挖掘特征的克隆代码检测方法及系统
[0001]本专利技术涉及代码克隆检测
,特别涉及一种从汇编语言中挖掘特征的克隆代码检测方法及系统。
技术介绍
[0002]代码克隆(Code Clone),是指存在于代码库中相同或相似度达到设定阈值的代码片段,是软件开发中的常见现象。通过“复制
‑
粘贴
‑
修改”的方式,开发者能够在短时间内重写出与源代码功能性相似的代码段,进而缩短开发周期,提升开发效率。随着开源代码社区的推行,为促进社区内开发者的学习与交流,代码克隆重用的方式正被社区所鼓励。虽然适度的代码克隆重用能够为开发带来便利,但是仿照网络上现有代码进行大量代码改造的代码克隆行为,也会产生诸多负面影响。在教育领域,学生代码作业抄袭现象屡见不鲜,在一定程度上影响教育公平性。在企业中,会造成知识产权归属等敏感问题。在软件开发领域,此类行为不仅会为软件质量的维护带来较大困难,还可能引入难以发现的漏洞等等。因此,对软件系统中的代码进行克隆识别与检测,能够让开发者更加直观地面对代码克隆问 ...
【技术保护点】
【技术特征摘要】
1.一种从汇编语言中挖掘特征的克隆代码检测方法,其特征在于,包括以下步骤:S1、获取目标代码和比对代码;基于多种目标编译平台生成各自对应的目标汇编代码集和对比汇编代码集;将所述目标汇编代码集和对比汇编代码集,分别使用Asm2vec模型,生成对应的目标语义嵌入特征集和对比语义嵌入特征集;S2、对所述目标代码和比对代码,分别采用BERT模型生成对应的高级源代码的目标文字嵌入特征和对比文字嵌入特征;S3、将所述目标语义嵌入特征集和目标文字嵌入特征进行串联,形成目标代码特征表示;将所述对比语义嵌入特征集和对比文字嵌入特征进行串联,形成对比代码特征表示;S4、将所述目标代码特征表示和对比代码特征表示,输入基于DNN深度神经网络的分类模型,输出检测结果。2.根据权利要求1所述的一种从汇编语言中挖掘特征的克隆代码检测方法,其特征在于,在所述步骤S1的Asm2Vec模型中,将汇编代码的每个函数均视为一组序列的集合,通过边缘抽样和随机游走的方式将汇编代码转换为一个序列,得到汇编代码中所有函数的向量表示。3.根据权利要求1所述的一种从汇编语言中挖掘特征的克隆代码检测方法,其特征在于,所述步骤S1包括:S11、获取目标代码和比对代码,去除无关信息;S12、选择多种目标编译平台,采用GCC交叉编译器工具作为汇编代码生成器,并使用参数
‑
S转储汇编代码,生成各自对应的目标汇编代码集和对比汇编代码集;S13、将每一个所述目标汇编代码集和对比汇编代码集,分别使用Asm2vec模型,得到目标汇编代码集合中所有函数的向量表示,以及得到对比汇编代码集合中所有函数的向量表示;S14、对每一种目标编译平台下的所述目标汇编代码集合中所有函数的向量表示,进行平均池化操作,获得平均值;将多种目标编译平台各自对应的平均值,作为目标语义嵌入特征集;对每一种目标编译平台下的所述对比汇编代码集合中所有函数的向量表示,进行平均池化操作,获得平均值;将多种目标编译平台各自对应的平均值,作为对比语义嵌入特征集。4.根据权利要求1所述的一种从汇编语言中挖掘特征的克隆代码检测方法,其特征在于,所述步骤S2中的所述BERT模型具有一个线性层和文本分类块;所述线性层用来调整BERT模型的输出维度,平衡目标文字嵌入特征和对比文字嵌入特征的比例;所述文本分类块用于生成任务级别的特征嵌入。5.根据权利要求1所述的一种从汇编语言中挖掘特征的克隆代码检测方法,其特征在于,所述步骤S4中,基于DNN深度神经网络的分类模型,用于将克隆检测任务作为二分类任务处理;模型的输入是两个源代码的特征表示,输出克隆检测结果;所述克隆检测结果包括:同一任务下的两个源代码视为克隆对,而不同任务下的两个源代码视为非克隆对。6.一种从汇编语言中挖掘特征的克隆代码检测系统,其特征在于,包括...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。