CN109241706B - 基于静态胎记的软件抄袭检测方法 - Google Patents

基于静态胎记的软件抄袭检测方法 Download PDF

Info

Publication number
CN109241706B
CN109241706B CN201811092227.8A CN201811092227A CN109241706B CN 109241706 B CN109241706 B CN 109241706B CN 201811092227 A CN201811092227 A CN 201811092227A CN 109241706 B CN109241706 B CN 109241706B
Authority
CN
China
Prior art keywords
class
similarity
lcs
seq
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811092227.8A
Other languages
English (en)
Other versions
CN109241706A (zh
Inventor
王曙燕
孙家泽
赵鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian University of Posts and Telecommunications
Original Assignee
Xian University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Publication of CN109241706A publication Critical patent/CN109241706A/zh
Application granted granted Critical
Publication of CN109241706B publication Critical patent/CN109241706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

基于静态胎记的软件抄袭检测方法,针对原来抄袭检测方法抗迷惑性和可信性较低而提出的,首先选定源程序和可疑程序,并确定迭代深度;对源程序和可疑程序进行分析得到元数据,从元数据中提取API调用信息和方法的指令执行序列,以API调用信息和方法的指令序列作为输入产生静态程序胎记,通过对两个程序的程序胎记对比,得到两个程序胎记之间的相似度,通过对比相似度最终给出是否抄袭的结论。本发明在指令序列的对比上没有采用传统的k‑gram算法,而是采用LCS算法,并且在软件胎记的生成上综合了API调用和指令序列两个方面的因素。最终得到的软件胎记在保证可信性的前提下抗迷惑性有显著提高。

Description

基于静态胎记的软件抄袭检测方法
技术领域
本发明涉及程序特征发现以及软件版权保护领域,对两个不同开发者发布的程序通过提取其静态胎记进行对比计算其发布程序之间相似度大小,以判断两程序之间是否存在抄袭现象,是一种软件抄袭检测的方法;
背景技术
伴随着计算机技术以及计算机网络的迅猛发展,软件已经成为我们日常生活中不可或缺的一部分,并且为人们的生活带来了极大的便利以及数以亿万记的经济效益;然而软件作为一种数字产品在有着传输便利性的同时也为其版权保护带来了相当的难度,许多别有用心的人可以轻易地在网络上获得目标软件并且通过一些技术手段来将其破解并且以低廉的价格再发行出去,为软件的开发者带来重大损失;
在这种现状之下,许多相关学者以及工作人员已经在做有关软件保护的研究,思路大致可以说从软件和硬件两方面来对程序进行加密和保护;若从硬件方面来进行保护,主流有三种手段,一是将程序写入可携带设备,如光盘或加密狗等等,由人对硬件进行保管;二是将程序绑定于CPU之上,一个CPU唯一对应于一个程序,这种方法对于CPU的制造有一定的要求;三是在CPU中增加一个解密单元,对于要执行的程序预先进行加密,只有在执行到程序时再由解密单元进行解密来运行;基于硬件的程序保护大多需要购买专门的硬件,将程序与硬件配合才可以正确执行;若从软件方面进行保护,主流大致有代码加壳,代码混淆,软件水印,软件胎记等技术;
而静态软件胎记提取技术与其他技术相比较之下主要有以下两点优势,第一,其技术主要是对源码或中间码进行分析而无需额外插入任何代码,减少人为插入代码导致程序被恶意分析的可能性;第二,与同类的动态提取软件胎记技术相比较之下,这种方法可以更全面的覆盖软件的全部执行过程,而动态执行通常只能覆盖软件的一部分执行路径,增强了胎记的可信度,并且若软件需要频繁交互,提取动态胎记所花费的时间与用户体验代价要比静态胎记大得多;这两方面优势保证了静态软件胎记技术在盗版检测,代码抄袭等方面的实用性;
但目前来说静态软件胎记的提取主要有以下难点,第一,大部分的静态软件胎记在面对代码迷惑时表现的非常一般,有的甚至不具备抗迷惑能力;第二,在可以程序的获取上,基本只能拿到其二进制代码或中间代码而无法拿到源代码,这样许多依赖源代码才能够使用的胎记提取,如基于关键词的胎记提取,就无法使用;
针对以上情况,需要找到一种更好的软件胎记提取方法,这种方法生成的胎记在具有可信性的同时应兼具有一定的抗迷惑性,不限制于某特定平台或语言,且可以处理多种形式的文件;
发明内容
本发明要解决的问题是:提出一种新的静态软件胎记提取办法,以克服现有软件胎记的抗迷惑性弱,检测结果不准确的缺陷;
本发明的目的通过以下技术手段实现:
基于静态胎记的软件抄袭检测方法,包括以下步骤:
步骤一、由用户指定源工程PA和PA中的源类A以及可疑工程PB和PB中的可疑类B,再选定迭代深度d{d≥0};
步骤二、静态分析A,B编译后得到的中间文件classA和classB,将A中所记录的nA个方法的信息
Figure BDA0001804652810000021
结构化的存储在
Figure BDA0001804652810000022
中,同时将A中所有API调用的字面量存储在
Figure BDA0001804652810000023
中;将B中所记录的nB个方法的信息
Figure BDA0001804652810000024
结构化的存储在
Figure BDA0001804652810000025
中,同时将B中所有API调用的字面量存储在
Figure BDA0001804652810000026
中;分别比较
Figure BDA0001804652810000027
Figure BDA0001804652810000028
Figure BDA0001804652810000029
得到类在API调用方面的相似度simAPI和类在指令序列比较方面的相似度simins
步骤三、计算源类A与可疑类B的相似度,相似度计算公式为
Figure BDA00018046528100000210
其中f(x)为sigmod函数,f(x)作用为将输入映射到[0,1]区间内,α为相似度在API调用方面的权重,β为相似度在指令序列方面的权重,而bais为偏置,bais的作用为调整f(x)的净输入;
步骤四、最终根据步骤三中得到的源类A与可疑类B的相似度,判断两个类是否存在抄袭关系,若simA,B∈[0,ε],则判定两类之间存在抄袭;若simA,B∈[1-ε,1],则判定两类之间不存在抄袭;否则simA,B∈(ε,1-ε),则无法判定,其中ε为一个小于0.5的检测阈值;
本发明的进一步改进之处在于所述步骤二中类在API调用方面的相似度simAPI的比较步骤如下:
统计
Figure BDA0001804652810000031
包含的类调用数目,记为m1
Figure BDA0001804652810000032
包含的类调用数目,记为m2,其中相同的类调用数目m1∩m2
Figure BDA0001804652810000033
Figure BDA0001804652810000034
中所有不重复的类调用数目为 m1∪m2,源类A与可疑类B在API调用方面的相似度为
Figure BDA0001804652810000035
本发明的进一步改进之处在于所述步骤二中类在指令序列比较方面的相似度simins的比较步骤如下:
①.对方法M剥离操作数并记录;
②.建立矩阵Matrix[nA][nB],其中Matrix[i][j]所存储的值为源类A中第i个方法与可疑类 B中第j个方法的相似度;
③.对矩阵Matrix[nA][nB],记录每一行最大值为
Figure BDA0001804652810000036
则源类A与可疑类B在指令序列方面的相似度为
Figure BDA0001804652810000037
本发明的进一步改进之处在于所述步骤二中类在指令序列比较方面的相似度simins的比较步骤①剥离操作数具体实施步骤如下:
Ⅰ.遍历M中包含m个有序指令ins1,ins2,...insm,记正在遍历的指令为insj,若insj是一个调用其他方法的指令,且调用的方法是类所在工程P中存在的方法,则用该方法的指令序列替代insj;当ins1,ins2,...insm遍历完毕后d=d-1;
Ⅱ.重复Ⅰ,直到d=0或M中任意一项的指令序列中都不包含指向工程P中存在的方法的指令时,停止;
Ⅲ.将M中每一个指令剥离操作数,生成M在迭代深度为d时的指令序列seq并记录;
本发明的进一步改进之处在于所述步骤二中类在指令序列比较方面的相似度simins的比较步骤②比较两个方法的剥离操作数后指令序列具体实施步骤如下:
Ⅰ.记方法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中;
Ⅳ.两个方法的相似度计算公式为
Figure BDA0001804652810000041
附图说明
图1为本发明的流程图
图2为本发明所用示例对比程序对的源程序与可疑程序的源码与中间码对比图
图3为本发明所用示例对比程序对的源程序与可疑程序的LCS比较矩阵
图4为本发明阐述方法与传统k-gram方法在比对Junit4.0-BaseTestRunner与Junit4.X-BaseTestRunner的相似度的对比图
图5为本发明阐述方法与传统k-gram方法在比对soot-2.5.0-soot.Main与Junit4.X-BaseTestRunner时相似度的对比图
图6为本发明与传统k-gram方法在面对同一经过迷惑的程序对时其给出的相似度对比图
具体实施方式
如图1,本发明实施的具体步骤如下:
(1)选择源jar包与可疑jar包,进行解压,由用户设置起始源类;起始可疑类;迭代深度,阈值;
(2)根据迭代深度建立方法迭代栈,迭代深度不得超过迭代深度,并且根据解压后的文件夹建立文件映射系统,从起始方法开始解析class文件并记录其中指令序列信息,对每一个方法按照方法调用顺序形成栈帧,模拟方法执行过程,将其中的指令按执行顺序记录为 Listinstruction
(3)在模拟执行过程中将class文件的常量池信息中所有的CONSTANT_Class信息记录为 Setimport
(4)根据步骤(2)中得到的信息,使用LCS算法进行指令相似度对比,得到指令序列特征的相似度,记为siminstruction
(5)根据步骤(3)中得到的信息,以及API调用方面的相似度计算公式,得到API特征的相似度,记为simAPI
(6)根据步骤(4),(5)中的相似度使用sigmod函数输出最终的相似度;
(7)根据步骤(6)中得到的相似度判断源类与可疑类是否存在抄袭关系,即:
Figure BDA0001804652810000051
下面将通过具体的实施例来说明本发明的实施;
例如,在迭代深度为3时,对以下Java程序进行API特征提取
Figure DEST_PATH_IMAGE001
得到类A的API特征为:
Figure BDA0001804652810000053
在迭代深度为3时,最终得到类A中function方法的指令序列特征为:
Figure DEST_PATH_IMAGE002
Figure DEST_PATH_IMAGE003
其中,粗体部分将会被记录,最终得到的seqA如下:
{new,dup,invokespecial,aload_0,invokespecial,return,iload_1,invokevirtual,lconst _1,new,dup,invokespecial,aload_0,invokespecial,return,iload_1,invokevirtual,icon st_2,iload_1,imul,i2l,lreturn,new,dup,invokespecial,aload_0,invokespecial,return, iload_1,invokevirtual,iconst_3,iload_1,isub,i2l,lreturn,ldiv,ladd,l2d,dreturn,po p2,return}
在迭代深度为3时,对以下Java程序进行API特征提取
在迭代深度为3时,对以下Java程序进行API特征提取
Figure DEST_PATH_IMAGE004
最终得到类FakeA的API特征为
Figure BDA0001804652810000063
在迭代深度为3时,最终得到类中fun方法的指令序列如下:
Figure DEST_PATH_IMAGE005
Figure DEST_PATH_IMAGE006
其中,粗体部分将会被记录,最终得到的seqFakeA如下:
{new,dup,invokespecial,aload_0,invokespecial,return,iload_1,invokevirtual,lconst _1,new,dup,invokespecial,aload_0,invokespecial,return,iload_1,invokevirtual,icon st_2,iload_1,imul,i2l,lreturn,new,dup,invokespecial,aload_0,invokespecial,return, iload_1,invokevirtual,iconst_3,iload_1,isub,i2l,lreturn,ldiv,ladd,l2d,dreturn,po p2,return}
最终,得到两个类在API调用方面的相似度为:
Figure BDA0001804652810000072
由于两个类都只有一个方法,因此只产生一个LCS比较矩阵,不难看出两个序列完全相同,故
Figure BDA0001804652810000073
为1;
最终得到的相似度为
Figure BDA0001804652810000074
通过实验来验证本方法的抗迷惑性和可信性;为了说明本发明的可信性,分析一个程序的不同小版本和两个不同程序来说明本方法的有效性;
(1)实验对象
在选择实验对象时,测试程序选用Junit4.0-4.5版本和soot-2.5.0来作为实验的对象,Junit是单元测试的常用工具,而soot是对程序进行静态分析时常用的工具,两者都很常见且具有代表性;是两个完全不同用途的程序;
(2)评估准测
本发明的目标是希望对提取到程序的可信健壮胎记并进行对比,设置检测阈值γ1为0.8,γ2为0.5;当实验结果大于γ1,就认为两程序之间存在很大可能是拷贝关系,当实验结果小于γ2,就认为两程序之间是独立开发;否则将认定为无法判定;
(3)实验实施及结果分析
程序1 程序2 相似度
Junit4.0-Assert Junit4.1-Assert 0.9992177
Junit4.0-ActiveTestSuit Junit4.1-ActiveTestSuit 0.9782422
Junit4.1-ComparisonCompactor Junit4.2-ComparisonCompactor 0.9994042
Junit4.2-BaseTestRunner Junit4.3-BaseTestRunner 0.9996096
Junit4.3-ResultPrinter Junit4.4-ResultPrinter 0.9996223
Junit4.4-TestSetup Junit4.5-TestSetup 0.9989239
Junit4.4-TestSetup Soot2.5.0-Pack 0.11920292
Junit4.2-ResultPrinter Soot2.5.0-AbstractTrap 0.13185965
Junit各个小版本之间相似度较高,而Junit和soot之间的相似度较低,可以说明方法的有效性;
Figure BDA0001804652810000081
经过ProGuard进行代码迷惑以后,选取其中同源类,进行相似度对比,由本方法生成的胎记得到的相似度均值为0.84,最终判定为抄袭;而由k-gram胎记得到的相似度其均值为0.52,最终判定为不确定;
实验首先验证了本方法所述胎记的可信性,验证类同程序得到较高的相似度,验证独立开发程序得到较低的相似度,以上两点说明使用本方法所述胎记进行抄袭检测,其结果是可靠的;
随后验证了本方法所述胎记的抗迷惑性,由本方法所述胎记得到源程序C与其迷惑程序 C'的相似度均值为0.84,而由SKB得到C与C'之间相似度均值只有0.52;由这两种胎记得到的检测结果完全不同,由SKB得到的相似度我们只能得出两程序的关系是无法判定,而由本方法所述胎记得到的相似度可以得出两程序之间存在抄袭关系;这说明本方法所述胎记在检测经过迷惑的抄袭程序上表现要优于传统的SKB,即本方法所述胎记的抗迷惑性比SKB要强。

Claims (1)

1.一种基于静态胎记的软件抄袭检测方法,其特征在于包括以下步骤:
(1)由用户指定源工程PA和PA中的源类A以及可疑工程PB和PB中的可疑类B,再选定迭代深度d{d≥0};
(2)静态分析A,B编译后得到的中间文件classA和classB,将A中所记录的nA个方法的信息
Figure FDA0001804652800000011
结构化的存储在
Figure FDA0001804652800000012
中,同时将A中所有API调用的字面量存储在
Figure FDA0001804652800000013
中;将B中所记录的nB个方法的信息
Figure FDA0001804652800000014
结构化的存储在
Figure FDA0001804652800000015
中,同时将B中所有API调用的字面量存储在
Figure FDA0001804652800000016
中;分别比较
Figure FDA0001804652800000017
Figure FDA0001804652800000018
Figure FDA0001804652800000019
Figure FDA00018046528000000110
得到类在API调用方面的相似度simAPI和类在指令序列比较方面的相似度simins,比较步骤如下:
①.统计
Figure FDA00018046528000000111
包含的类调用数目,记为m1
Figure FDA00018046528000000112
包含的类调用数目,记为m2,其中相同的类调用数目m1∩m2
Figure FDA00018046528000000113
Figure FDA00018046528000000114
中所有不重复的类调用数目为m1∪m2,源类A与可疑类B在API调用方面的相似度为
Figure FDA00018046528000000115
②.对
Figure FDA00018046528000000116
Figure FDA00018046528000000117
中的每一个方法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中;
Ⅳ.两个方法的相似度计算公式为
Figure FDA0001804652800000021
④.对矩阵Matrix[nA][nB],记录每一行最大值为
Figure FDA0001804652800000022
则源类A与可疑类B在指令序列方面的相似度为
Figure FDA0001804652800000023
(3)计算源类A与可疑类B的相似度,相似度计算公式为
Figure FDA0001804652800000024
其中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的检测阈值。
CN201811092227.8A 2018-01-16 2018-09-19 基于静态胎记的软件抄袭检测方法 Active CN109241706B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2018100407942 2018-01-16
CN201810040794 2018-01-16

Publications (2)

Publication Number Publication Date
CN109241706A CN109241706A (zh) 2019-01-18
CN109241706B true CN109241706B (zh) 2021-04-30

Family

ID=65059062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811092227.8A Active CN109241706B (zh) 2018-01-16 2018-09-19 基于静态胎记的软件抄袭检测方法

Country Status (1)

Country Link
CN (1) CN109241706B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459788A (zh) * 2019-01-18 2020-07-28 南京大学 一种基于支持向量机的测试程序抄袭检测方法
CN110083534B (zh) * 2019-04-19 2023-03-31 西安邮电大学 一种基于约减最短路径胎记的软件抄袭检测方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577323A (zh) * 2013-09-27 2014-02-12 西安交通大学 基于动态关键指令序列胎记的软件抄袭检测方法
CN107506622A (zh) * 2017-08-25 2017-12-22 武汉大学 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577323A (zh) * 2013-09-27 2014-02-12 西安交通大学 基于动态关键指令序列胎记的软件抄袭检测方法
CN107506622A (zh) * 2017-08-25 2017-12-22 武汉大学 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于k-gram频数的静态软件胎记;陈林等;《计 算 机 工 程》;20110228;第37卷(第4期);第46-48页 *
软件抄袭检测研究综述;田振洲等;《信 息 安 全 学 报》;20160731;第1卷(第3期);第52-70页 *

Also Published As

Publication number Publication date
CN109241706A (zh) 2019-01-18

Similar Documents

Publication Publication Date Title
Yakura et al. Malware analysis of imaged binary samples by convolutional neural network with attention mechanism
Yen et al. An Android mutation malware detection based on deep learning using visualization of importance from codes
Kirat et al. Malgene: Automatic extraction of malware analysis evasion signature
Li et al. Libd: Scalable and precise third-party library detection in android markets
Han et al. Malware analysis using visualized image matrices
Zhang et al. A first step towards algorithm plagiarism detection
CN111639337B (zh) 一种面向海量Windows软件的未知恶意代码检测方法及系统
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
Myles et al. Software watermarking through register allocation: Implementation, analysis, and attacks
Mercaldo et al. Hey malware, i can find you!
Palahan et al. Extraction of statistically significant malware behaviors
Choi et al. A static birthmark of binary executables based on API call structure
Nguyen et al. Detecting repackaged android applications using perceptual hashing
CN109241706B (zh) 基于静态胎记的软件抄袭检测方法
Ko et al. COAT: Code obfuscation tool to evaluate the performance of code plagiarism detection tools
Li et al. Large-scale third-party library detection in android markets
CN115658080A (zh) 一种软件开源代码成分的识别方法及系统
CN106874758A (zh) 一种识别文档代码的方法和装置
Cheers et al. Spplagiarise: A tool for generating simulated semantics-preserving plagiarism of java source code
CN113935022A (zh) 一种同源样本捕获方法、装置、电子设备及存储介质
CN110520860B (zh) 用于防护软件代码的方法
Gonzalez et al. Measuring code reuse in Android apps
Lim et al. Analyzing stack flows to compare Java programs
Niu et al. Clone analysis and detection in android applications
Kanzaki et al. A software protection method based on instruction camouflage

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant