[发明专利]基于静态胎记的软件抄袭检测方法有效
申请号: | 201811092227.8 | 申请日: | 2018-09-19 |
公开(公告)号: | CN109241706B | 公开(公告)日: | 2021-04-30 |
发明(设计)人: | 王曙燕;孙家泽;赵鹏飞 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/16 |
代理公司: | 北京汇信合知识产权代理有限公司 11335 | 代理人: | 吴甘棠 |
地址: | 710061 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于静态胎记的软件抄袭检测方法,针对原来抄袭检测方法抗迷惑性和可信性较低而提出的,首先选定源程序和可疑程序,并确定迭代深度;对源程序和可疑程序进行分析得到元数据,从元数据中提取API调用信息和方法的指令执行序列,以API调用信息和方法的指令序列作为输入产生静态程序胎记,通过对两个程序的程序胎记对比,得到两个程序胎记之间的相似度,通过对比相似度最终给出是否抄袭的结论。本发明在指令序列的对比上没有采用传统的k‑gram算法,而是采用LCS算法,并且在软件胎记的生成上综合了API调用和指令序列两个方面的因素。最终得到的软件胎记在保证可信性的前提下抗迷惑性有显著提高。 | ||
搜索关键词: | 基于 静态 胎记 软件 抄袭 检测 方法 | ||
【主权项】:
1.一种基于静态胎记的软件抄袭检测方法,其特征在于包括以下步骤:(1)由用户指定源工程PA和PA中的源类A以及可疑工程PB和PB中的可疑类B,再选定迭代深度d{d≥0};(2)静态分析A,B编译后得到的中间文件classA和classB,将A中所记录的nA个方法的信息
结构化的存储在
中,同时将A中所有API调用的字面量存储在
中;将B中所记录的nB个方法的信息
结构化的存储在
中,同时将B中所有API调用的字面量存储在
中;分别比较
和![]()
和
得到类在API调用方面的相似度simAPI和类在指令序列比较方面的相似度simins,比较步骤如下:①.统计
包含的类调用数目,记为m1,
包含的类调用数目,记为m2,其中相同的类调用数目m1∩m2,
和
中所有不重复的类调用数目为m1∪m2,源类A与可疑类B在API调用方面的相似度为
②.对
和
中的每一个方法M实施以下步骤:Ⅰ.遍历M中包含m个有序指令ins1,ins2,...insm,记正在遍历的指令为insj,若insj是一个调用其他方法的指令,且调用的方法是类所在工程P中存在的方法,则用该方法的指令序列替代insj。当ins1,ins2,...insm遍历完毕后d=d‑1;Ⅱ.重复Ⅰ,直到d=0或M中任意一项的指令序列中都不包含指向工程P中存在的方法的指令时,停止;Ⅲ.将M中每一个指令剥离操作数,生成M在迭代深度为d时的指令序列seq;③.建立矩阵Matrix[nA][nB],其中Matrix[i][j]所存储的值为源类A中第i个方法与可疑类B中第j个方法的相似度,比较两个方法的相似度如下:Ⅰ.记方法M1在迭代深度为d时剥离了操作数的指令序列为seq1,其长度为len1;记方法M2在迭代深度为d时剥离了操作数的指令序列为seq2,其长度为len2;用户指定该次检测的碎片阈值为threshold;Ⅱ.构建LCS比较矩阵LCS[len1][len2],其中LCSi,j记录了seq1在i位置上的指令与seq2在j位置上的指令的比较情况。若seqi≠seqj,则令LCSi,j=0;若seqi=seqj且i=0||j=0,则令LCSi,j=1;若seqi=seqj且i≠0&j≠0,则令LCSi,j=LCSi‑1,j‑1+1;Ⅲ.定义trace为LCSr,s,...,LCSi‑1,j‑1,LCSi,j,LCSi+1,j+1,...,LCSp,q,其中LCSr,s=1,并且LCSp+1,q+1=0||p=len1||q=len2。找出LCS比较矩阵中所有的trace,遍历所有trace,若该trace中最大元素值大于threshold,则将该最大元素值添加到集合pieces中;Ⅳ.两个方法的相似度计算公式为
④.对矩阵Matrix[nA][nB],记录每一行最大值为
则源类A与可疑类B在指令序列方面的相似度为
(3)计算源类A与可疑类B的相似度,相似度计算公式为
其中f(x)为sigmod函数,f(x)作用为将输入映射到[0,1]区间内,α为相似度在API调用方面的权重,β为相似度在指令序列方面的权重,而bais为偏置,bais的作用为调整f(x)的净输入。(4)最终根据步骤(3)中得到的源类A与可疑类B的相似度,判断两个类是否存在抄袭关系,若simA,B∈[0,ε],则判定两类之间存在抄袭;若simA,B∈[1‑ε,1],则判定两类之间不存在抄袭;否则simA,B∈(ε,1‑ε),则无法判定,其中ε为一个小于0.5的检测阈值。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811092227.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种软件授权方法及系统
- 下一篇:应用程序的混淆方法、装置和服务器