基于改进编辑距离和LCS的同源性检测技术
发布时间:2021-06-21 08:42
传统基于Token的同源性检测算法存在代码变体结构化信息定位困难、模块提取、识别能力差、同源性度量精度低的问题.为此,提出了一种基于改进编辑距离和LCS(longest common sequence)的结构化识别同源性检测技术.在编辑距离(edit distance)计算中,引入交换算子,提高模块内部同源性度量精度.在LCS算法中,引入相似模块度量的最小尺寸监测机制和代码行间最大动态相关性度量,提供代码结构边界划分、模块行关联、代码有效结构化信息抽取的能力.实验证明,该方法是一种有效的基于结构化信息的同源性检测技术,其随机抽样检测结果的准确率、召回率及F值均有较优表现,且稳定性较好.
【文章来源】:北京理工大学学报. 2017,37(02)北大核心EICSCD
【文章页数】:7 页
【部分图文】:
图1基于Token的源代码级同源性检测的处理流程Fig.1FlowchartofToken-basedsource-levelhomologydetection代码行摘要值计算模型及确保摘要值的唯一性是实
-win32,运用Java语言实现.目前,该同源性检测软件可以针对多种程序语言进行检测,主要支持C、C++、C#、java等语言.采用多线程并发批量检测模式,支持一对多、多对一、多对多检测.软件具有格式化输出功能,支持word2003模板的报告导出功能,将检测结果格式化为非结构化数据存储.作为有效性验证实验,软件参数设置为rdef=3,Wi=4,Wj=3.实验对象包括java、C、C++、C#语言代码,软件界面如图4所示.图4本文算法检测结果Fig.4Resultsofthispaperalgorithm本文引用了开源软件snort2.9.6.0中的snort.c源文件,filezilla-3.0.0中的directorycache.cpp源文件,hadoop-0.21.0中的hdfs_test.c源文件,tomcat-8.0.3的WsWebSocketContainer.java源文件,Npgsql-2.1.1中的LinqBridge-1.3.cs源文件作为同源性检测的基准文件.在指定结构化模块范围内,随机选择变种位置,并基于C语言脚本产生3种场景的代码变种,形成检测样本对.实验中,共计产生了50个样本对,并自动记录各样本的变种位置.由于CCFinder[12]是基于Token的源代码级同源性检测的典型应用工具,在业内的认知度也较高,因此采用此工具作为实验比对对象.实验通过172北京理工大学学报第37卷
DRNRM×100%,(10)式中:R为召回率;NDR为正确检测出的变种模块的行数;NRM为实际变种模块的行数.准确率为P=NDRNDM×100%,(11)式中:P为准确率;NDM为检测出的变种模块的行数.此外,作为召回率和准确率的调和平均值,F值定义为F=2RPR+P.(12)分别对50对样本进行了同源性检测,并记录了检测结果的召回率、准确率以及F值,分别如图5、图6、图7所示.图5召回率情况Fig.5Caseofrecall图6准确率情况Fig.6Caseofprecision从实验结果可以看出,本文算法具有较高的有效性和稳定性.表1给出了50次实验的统计结果,本文算法的召回率、正确率和F值的均值分别为92.83%、90.55%和0.89,均高于CCFinder的33.84%、30.97%和0.32,说明算法具有较高的有图7F值情况Fig.7CaseofFvalues效性.本文算法召回率、正确率和F值的方差分别为7.51%、4.04%和8.97×10-4,分别小于CCFinder的19.86%、59.97%和2.00×10-3,说明算法具有较好的稳定性.本文算法召回率、正确率和F值的最大值分别为97.36%、94.24%和0.97,最小值分别为88.64%、86.68%和0.85,处于较高水平.同时,整体上看,本文算法召回率要略高于正确率,说明算法本身产生的误检率要略高于漏检率,但相差
本文编号:3240362
【文章来源】:北京理工大学学报. 2017,37(02)北大核心EICSCD
【文章页数】:7 页
【部分图文】:
图1基于Token的源代码级同源性检测的处理流程Fig.1FlowchartofToken-basedsource-levelhomologydetection代码行摘要值计算模型及确保摘要值的唯一性是实
-win32,运用Java语言实现.目前,该同源性检测软件可以针对多种程序语言进行检测,主要支持C、C++、C#、java等语言.采用多线程并发批量检测模式,支持一对多、多对一、多对多检测.软件具有格式化输出功能,支持word2003模板的报告导出功能,将检测结果格式化为非结构化数据存储.作为有效性验证实验,软件参数设置为rdef=3,Wi=4,Wj=3.实验对象包括java、C、C++、C#语言代码,软件界面如图4所示.图4本文算法检测结果Fig.4Resultsofthispaperalgorithm本文引用了开源软件snort2.9.6.0中的snort.c源文件,filezilla-3.0.0中的directorycache.cpp源文件,hadoop-0.21.0中的hdfs_test.c源文件,tomcat-8.0.3的WsWebSocketContainer.java源文件,Npgsql-2.1.1中的LinqBridge-1.3.cs源文件作为同源性检测的基准文件.在指定结构化模块范围内,随机选择变种位置,并基于C语言脚本产生3种场景的代码变种,形成检测样本对.实验中,共计产生了50个样本对,并自动记录各样本的变种位置.由于CCFinder[12]是基于Token的源代码级同源性检测的典型应用工具,在业内的认知度也较高,因此采用此工具作为实验比对对象.实验通过172北京理工大学学报第37卷
DRNRM×100%,(10)式中:R为召回率;NDR为正确检测出的变种模块的行数;NRM为实际变种模块的行数.准确率为P=NDRNDM×100%,(11)式中:P为准确率;NDM为检测出的变种模块的行数.此外,作为召回率和准确率的调和平均值,F值定义为F=2RPR+P.(12)分别对50对样本进行了同源性检测,并记录了检测结果的召回率、准确率以及F值,分别如图5、图6、图7所示.图5召回率情况Fig.5Caseofrecall图6准确率情况Fig.6Caseofprecision从实验结果可以看出,本文算法具有较高的有效性和稳定性.表1给出了50次实验的统计结果,本文算法的召回率、正确率和F值的均值分别为92.83%、90.55%和0.89,均高于CCFinder的33.84%、30.97%和0.32,说明算法具有较高的有图7F值情况Fig.7CaseofFvalues效性.本文算法召回率、正确率和F值的方差分别为7.51%、4.04%和8.97×10-4,分别小于CCFinder的19.86%、59.97%和2.00×10-3,说明算法具有较好的稳定性.本文算法召回率、正确率和F值的最大值分别为97.36%、94.24%和0.97,最小值分别为88.64%、86.68%和0.85,处于较高水平.同时,整体上看,本文算法召回率要略高于正确率,说明算法本身产生的误检率要略高于漏检率,但相差
本文编号:3240362
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3240362.html