[发明专利]基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法有效
申请号: | 201811237212.6 | 申请日: | 2018-10-23 |
公开(公告)号: | CN109542766B | 公开(公告)日: | 2020-08-18 |
发明(设计)人: | 刘烃;贾昂;徐茜;范铭;魏闻英;楼隽真 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 田洲 |
地址: | 710049 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 代码 映射 词法 分析 大规模 程序 相似性 快速 检测 证据 生成 方法 | ||
本发明公开一种基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法,采用两层相似性检测方法对大规模的软件样本进行抄袭检测与证据生成:首先使用代码映射方法对大规模程序进行粗粒度的相似性分析,快速搜索疑似相似的程序;然后采用词法分析对于可疑的相似程序进行细粒度分析,判定程序相似性和生成相似代码证据。通过以上方法,可以快速准确地在大规模样本找到抄袭代码,并提供相应的证据以作支撑。
技术领域
本发明涉及源代码程序分析及软件抄袭检测技术领域,特别涉及一种多层的源代码程序相似度检测方法。
背景技术
随着计算机软件产业的迅速发展,软件的安全问题得到了越来越多的研究人员、教育人员及软件企业的重视。而计算机软件的开源,给软件的抄袭带来了更便利的条件。近几年来,各类软件侵权案件时有发生,Google、Apple、eBay等都曾卷入到相关案件中。
为了对抗软件抄袭案件,保护软件知识产权,国内外的研究人员提出了大量的软件抄袭检测技术。以应用场景和技术手段作为基准,可将现有的软件抄袭检测技术归为三类:源码抄袭检测技术,基于软件水印的抄袭检测技术,以及基于软件胎记的抄袭检测技术。目前发展最为成熟、使用最为广泛的是源码检测技术。
但是,目前的源代码抄袭检测技术存在一系列的局限性:
1)目前大部分源码检测技术都面向小规模的抄袭检测,无法满足大规模抄袭检测场景下的快速检测需要;
2)混淆技术的发展增加软件抄袭检测的难度,会使得一部分的抄袭检测技术失效;
3)现有的很多抄袭检测技术都只是提供了一个简单的结果,并没有提供具体有力的抄袭证据;
4)现有的抄袭检测技术很难做到检测精度和时间开销的同步优化,很多抄袭检测方法不能投入应用。
发明内容
本发明的内容在于提出一种基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法,以解决上述技术问题。本方法采用两层相似性检测方法对大规模的软件样本进行抄袭检测与证据生成:首先使用代码映射方法对大规模程序进行粗粒度的相似性分析,快速搜索疑似相似的程序;然后采用词法分析对于可疑的相似程序进行细粒度分析,判定程序相似性和生成相似代码证据。通过以上方法,可以快速准确地在大规模样本找到抄袭代码,并提供相应的证据以作支撑。
为了实现上述目的,本发明采用以下技术方案:
基于代码映射和词法分析的大规模程序相似性快速检测与证据生成方法,包括如下步骤:
1)、基于代码映射的疑似相似程序搜索:
步骤S101:通过分析待检测样本集A和源代码样本集B中样本程序的代码,获取每一个样本程序的第三方库调用信息和词频信息;基于代码映射思想,将样本程序的第三方库调用信息和词频信息转化为一个向量;对待检测样本集A,生成样本程序的向量集A*;对源代码样本集B,生成所有样本程序的向量集C;
步骤S102:将向量集C中的程序的向量表示作为输入,程序的源代码相似性作为标签,采用机器学习方法训练相似计算网络,用于根据程序的向量表示判定程序代码相似性;
步骤S103:利用步骤S102训练得到的相似计算网络,对向量集C和待检测样本集A中的每一个样本的向量表示进行相似度计算和相似性判定,得到向量集C和样本集A的向量集的相似关系;
步骤S104:对于待检测样本集A中的每一个程序,如果在源代码样本集B中不存在与其有相似关系的样本,将归类到无显著相似性的程序样本集A1中;如果存在,将该样本与相似样本归类为可疑样本集A′,并保留其抄袭关系;
2)、基于词法分析的程序相似判定与证据生成:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811237212.6/2.html,转载请声明来源钻瓜专利网。