[发明专利]基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法有效
申请号: | 201811237212.6 | 申请日: | 2018-10-23 |
公开(公告)号: | CN109542766B | 公开(公告)日: | 2020-08-18 |
发明(设计)人: | 刘烃;贾昂;徐茜;范铭;魏闻英;楼隽真 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 田洲 |
地址: | 710049 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法,采用两层相似性检测方法对大规模的软件样本进行抄袭检测与证据生成:首先使用代码映射方法对大规模程序进行粗粒度的相似性分析,快速搜索疑似相似的程序;然后采用词法分析对于可疑的相似程序进行细粒度分析,判定程序相似性和生成相似代码证据。通过以上方法,可以快速准确地在大规模样本找到抄袭代码,并提供相应的证据以作支撑。 | ||
搜索关键词: | 基于 代码 映射 词法 分析 大规模 程序 相似性 快速 检测 证据 生成 方法 | ||
【主权项】:
1.基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法,其特征在于,包括如下步骤:1)、基于代码映射的疑似相似程序搜索:步骤S101:通过分析待检测样本集A和源代码样本集B中样本程序的代码,获取每一个样本程序的第三方库调用信息和词频信息;基于代码映射思想,将样本程序的第三方库调用信息和词频信息转化为一个向量;对源代码样本集B,生成所有样本程序的向量集C;步骤S102:将向量集C中的程序的向量表示作为输入,程序的源代码相似性作为标签,采用机器学习方法训练相似计算网络,用于根据程序的向量表达判定程序代码相似性;步骤S103:利用步骤S102训练得到的相似计算网络,对向量集C和待检测样本集A中的每一个样本的向量表示进行相似度计算和相似性判定,得到向量集C和样本集A的向量集间的相似关系;步骤S104:对于待检测样本集A中的每一个程序,如果在向量集C中不存在与其有相似关系的样本,将归类到无显著相似性的程序样本集A1中;如果存在,将该样本与相似样本归类为可疑样本集A′,并保留其抄袭关系;2)、基于词法分析的程序相似判定与证据生成:步骤S105:将保留下的源代码按照其已有的抄袭关系与源代码样本集B中的样本使用贪婪字符串匹配算法进行计算,得到相应的相似度和相似部分;步骤S106:对经过相似度计算的源代码,按照其相似度大小是否大于阈值分为有无相似样本两类;若其具有相似样本,将该代码及其相似部分和相似关系归类到抄袭程序样本集A2中,如果不具有相似代码,将该代码归类到无显著相似性的程序样本集A1中;步骤S107:对于抄袭程序样本集A2中的每一个样本,提取步骤S105得到的相似部分,作为其抄袭证据,构建含证据的相似集A2;步骤S108:输出抄袭程序样本集A2和无显著相似性的程序样本集A1。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811237212.6/,转载请声明来源钻瓜专利网。