CN110532739B - 一种基于频繁模式挖掘的多线程程序抄袭检测方法 - Google Patents

一种基于频繁模式挖掘的多线程程序抄袭检测方法 Download PDF

Info

Publication number
CN110532739B
CN110532739B CN201910818878.9A CN201910818878A CN110532739B CN 110532739 B CN110532739 B CN 110532739B CN 201910818878 A CN201910818878 A CN 201910818878A CN 110532739 B CN110532739 B CN 110532739B
Authority
CN
China
Prior art keywords
program
system call
execution
similarity
input
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
CN201910818878.9A
Other languages
English (en)
Other versions
CN110532739A (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
Priority to CN201910818878.9A priority Critical patent/CN110532739B/zh
Publication of CN110532739A publication Critical patent/CN110532739A/zh
Application granted granted Critical
Publication of CN110532739B publication Critical patent/CN110532739B/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/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

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

Abstract

本发明公开了一种基于频繁模式挖掘的多线程程序抄袭检测方法,包括:1)通过动态监控获取程序在同一输入多次执行下的多条执行轨迹;2)预处理程序执行轨迹集,生成模式候选集;3)利用频繁模式挖掘算法处理模式候选集,生成频繁模式集并做Hash处理后构建线程感知胎记;4)计算特定输入下原告和被告程序胎记的相似性;5)基于多个输入下胎记相似性的均值及给定的阈值,做出抄袭判定并输出检测结果。本发明直接以可执行程序为分析对象,无需程序源码存在;利用频繁模式挖掘从同一输入下程序多次运行对应的多条执行轨迹中,提取行为模式生成线程感知胎记,极大地降低了线程交织不确定性的干扰。

Description

一种基于频繁模式挖掘的多线程程序抄袭检测方法
技术领域
本发明属于程序执行轨迹分析及软件抄袭检测技术领域,特别涉及一种基于频繁模式挖掘的多线程程序抄袭检测方法。
背景技术
近年来,随着开源软件社区如GitHub、SourceForge等的蓬勃发展,软件行业达到了前所未有的繁荣景象,随之而来的软件抄袭问题亦日益严重,滥用他人代码的情况屡见不鲜。一方面,不乏经济利益驱使的有预谋抄袭,比如近期的“红芯风波”事件,宣称自主研发国产内核的红芯浏览器被证实仅仅是对谷歌Chrome浏览器进行了简单封装;此外,许多大型软件公司经常在项目中集成来自上游公司的一些软件组件,而这些组件往往是以二进制代码的形式交付的,很难保证其中不包含第三方代码。
软件胎记(software birthmark)是从软件代码或其执行过程中抽取出的一些不易改变且可唯一的对软件身份进行标识的特征。胎记技术通过衡量胎记相似性判断软件间可能存在的抄袭,是实现软件抄袭检测的一种行之有效的手段。根据胎记生成方式,可以分为静态和动态两种。前者静态分析程序的代码,基于程序的词法、语法或结构特性等生成胎记;后者则具体地执行程序,利用捕获的执行轨迹信息构建胎记。现有方法在一定程度上解决了抄袭检测的问题,但依然存在不少局限性,包括:
1)很多方法只能用于源码存在的情形,包括目前专业鉴定机构采取的主要是源代码比对手段,而很多情况下程序源码是无法获取的,特别是商业软件,为躲避检测通常以可执行文件的形式发布。除非司法机关介入,被告往往不会轻易交出其源码,而且在法律诉讼中,被告可以以举证责任在原告为由拖延或拒不交出源码。
2)为增加检测难度,抄袭者往往会借助自动化的代码混淆/迷乱工具,在保证程序语义不变的前提下,通过改变程序控制结构、引入垃圾代码、调整代码布局等方式,轻易地生成与原程序看起来非常不一样的代码。特别地,除非可事先对软件进行脱壳处理,加壳混淆方式会有效地挫败基于静态分析的检测方法。总体而言,现有方法对抗代码混淆的能力依然较弱,很多方法甚至难以应对不同编译器和编译选项带来的干扰。
3)动态胎记技术因能更精准地刻画软件的行为和语义,比静态胎记技术往往表现出更优秀的抗混淆能力和检测效果。然而,线程交织的不确定性使得多线程程序的行为也表现出很大的不确定性,导致传统动态胎记技术在分析多线程程序时存在很大的随机性。比如,在相同输入下对同一个多线程程序执行多次,从这些执行轨迹中单独构建的动态胎记往往会体现出很大的不同,极端情况下甚至会使得判定同一个程序与其自身不存在抄袭关系。多线程编程已逐渐成为软件开发的主流,如何应对线程交织干扰是动态胎记技术必须要解决的问题。
综上,亟需研究一种针对多线程程序抄袭的检测方法。
发明内容
本发明的目的在于提供一种基于频繁模式挖掘的多线程程序抄袭检测方法,以解决上述存在的一个或多个技术问题。本发明的方法,直接作用于二进制代码,能对抗主流的代码混淆手段,特别是可有效处理线程交织不确定性的干扰。
为达到上述目的,本发明采用以下技术方案:
本发明的一种基于频繁模式挖掘的多线程程序抄袭检测方法,包括以下步骤:
S1,对待分析程序实施动态监控,捕获其在某输入I下的动态执行轨迹;
S2,利用k-gram算法处理步骤S1获得的执行轨迹,生成模式候选集;
S3,利用频繁模式挖掘算法处理步骤S2获得的模式候选集,生成频繁模式集;将Hash处理后的频繁模式及频率构成的键值对集合,作为待分析程序在输入I下的线程感知胎记;
S4,按照步骤S1至步骤S3,分别生成原告程序和被告程序对应输入I的线程感知胎记,计算二者在输入I下的线程感知胎记间的相似性,输出相似值并依据检测阈值给出抄袭判定。
本发明的进一步改进在于,还包括:S5,提供多个不同的输入并重复步骤S4,依次得到原告和被告程序在对应输入下胎记的相似性,取相似性的均值作为原告和被告程序的相似性,输出相似值并依据检测阈值给出抄袭判定。
本发明的进一步改进在于,步骤S1中,捕获其在某输入I下的动态执行轨迹的具体方式包括:对待检测程序p,使用同一输入I执行程序m次,通过监控捕获在输入I下的执行轨迹集
Figure BDA0002186980550000031
其中,si表示第i次执行对应的执行轨迹。
本发明的进一步改进在于,步骤S1中,对待分析程序实施动态监控的方法具体包括:利用Pin动态插桩框架植入监控代码,捕获程序执行过程中的系统调用,记录由系统调用构成的执行轨迹,轨迹形式为ID#NAME#RVAL;其中,ID表示系统调用号,NAME为系统调用名,RVAL为系统调用的返回值。
本发明的进一步改进在于,步骤S2中,模式候选集生成方法具体包括:
对于
Figure BDA0002186980550000032
中的每条执行轨迹si,首先依据RVAL字段和ID字段过滤去除执行轨迹中的干扰项,获得过滤后的执行轨迹;
然后迭代利用k-gram算法切分过滤后的执行轨迹,依次得到特定k值下的短序列集gramk(si),合并所有短序列集得执行轨迹si的模式候选集
Figure BDA0002186980550000033
最后迭代处理轨迹集中的每条执行轨迹,合并所有轨迹的模式候选集,得待分析程序p在输入I下的模式候选集
Figure BDA0002186980550000034
本发明的进一步改进在于,步骤S3中,线程感知胎记的生成方法包括:
首先,利用频繁模式挖掘算法,处理
Figure BDA0002186980550000035
生成频繁模式集
Figure BDA0002186980550000036
其中,fi表示通过频繁模式挖掘得到的某一频繁模式;
然后,对所有频繁模式依次进行Hash处理,将频繁模式的Hash值及其频度构成的键值对集合
Figure BDA0002186980550000041
作为程序p对应输入I的线程感知胎记;其中,hs(fi)和sp(fi)分别表示频繁模式fi的hash值和频度。
本发明的进一步改进在于,步骤S4中,线程感知胎记的相似性计算方法包括:
给定原告程序p和被告程序q在输入I下的线程感胎记
Figure BDA0002186980550000042
Figure BDA0002186980550000043
采用公式(1)实现胎记相似性计算:
Figure BDA0002186980550000044
式(1)中,len返回频繁模式的长度,KSet返回键值对集合中的所有键,Val返回键值对集合中特定键的值,ci为所有键的交集CSet中的某一元素,αi
Figure BDA0002186980550000048
中所有键的集合中的某一元素,βi
Figure BDA0002186980550000046
中所有键的集合中的某一元素。
本发明的进一步改进在于,还包括:提供多个不同的输入并重复步骤S1至步骤S4,依次得到原告和被告程序在对应输入下胎记的相似性,取相似性的均值作为原告和被告程序的相似性;
此时采用公式(2)实现程序相似性计算:
Figure BDA0002186980550000047
其中,
Figure BDA0002186980550000049
表示程序输入的集合。
本发明的进一步改进在于,以公式(3)为抄袭判定标准:
Figure BDA0002186980550000051
其中,ε为预设判定阈值。
本发明的进一步改进在于,依据RVAL字段和ID字段过滤去除执行轨迹中的干扰项的过程中,干扰项识别原则为:对于执行轨迹中的每一项,如果其RVAL字段的值为0xffffffff,表明该项对应的系统调用未成功,被认定为干扰项;或者,其ID字段的值为下表中的某一项时,同样被认定为干扰项,
系统调用ID 系统调用名
45 brk
90 mmap
91 munmap
192 mmap2
219 madvise
240 futex
与现有技术相比,本发明具有以下有益效果:
本发明的方法,直接作用于二进制代码,能对抗主流的代码混淆手段,特别是可有效处理线程交织不确定性的干扰。具体的,本发明以可执行程序为分析对象,在程序源码不可获取的情景下依然可用,更具普适价值。本发明利用程序执行过程中的系统调用序列生成软件胎记,系统调用作为系统调用是用户态应用程序请求操作系统内核服务的唯一手段,较难被删除、替换和篡改,保证方法可有效对抗语义保留的代码混淆手段。本发明利用频繁模式挖掘,从程序在同一输入下多次运行对应的多条相似但不完全一致的执行轨迹中,提取频繁出现的行为模式生成线程感知胎记,能够极大地降低线程交织不确定性的干扰。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面对实施例或现有技术描述中所需要使用的附图做简单的介绍;显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一种基于频繁模式挖掘的多线程程序抄袭检测方法的流程示意框图;
图2是本发明实施例中,基于动态插桩的系统调用序列捕获方法的流程示意框图;
图3是本发明实施例中,模式候选集生成方法流程示意框图;
图4是本发明实施例中,线程感知胎记构建流程示意框图。
具体实施方式
为使本发明实施例的目的、技术效果及技术方案更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例是本发明一部分实施例。基于本发明公开的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的其它实施例,都应属于本发明保护的范围。
请参阅图1至图4,图1为基于频繁模式挖掘的多线程程序抄袭检测方法的整体流程,其中原告程序指的是程序所有者开发的原始程序,被告程序指涉嫌抄袭了原始程序部分或全部代码的可疑程序,二者均为二进制目标程序,不包含源代码。
本发明实施例的一种基于频繁模式挖掘的多线程程序抄袭检测方法,包括以下步骤:
步骤S101:对待检测程序p,使用同一输入I执行程序m次,通过监控捕获程序在输入I下的执行轨迹集
Figure BDA0002186980550000061
其中si表示第i次执行对应的执行轨迹。具体地,对于每次执行,利用Pin动态插桩框架,在待检测程序的每个函数运行前以及运行后植入监控代码,实现对程序函数级信息的监控,记录该次执行对应的系统调用序列。
结合图2,基于动态插桩的系统调用序列捕获方法,具体包括以下步骤:
步骤S201:判断待分析程序是否还存在待执行的函数,如果有则跳至步骤S202,否则直接转入步骤S206;
步骤S202:对于待分析的函数,解析其类型后判断是否为系统调用函数,如果是则转入步骤S203,否则转入步骤S205;
步骤S203:对系统调用函数进行解析,获取其系统调用号以及系统调用名;
步骤S204:执行该系统调用函数;
步骤S205:获取该次系统调用的返回值,按照ID#NAME#RVAL的形式形成一条系统调用记录,追加到系统调用序列末尾,并转入步骤S201进行下一轮的分析;
步骤S206:输出系统调用序列;
步骤S102:对执行轨迹集进行干扰项过滤和切分处理,生成程序p在输入I下的模式候选集
Figure BDA0002186980550000071
结合图3,模式候选集生成具体包括以下步骤:
步骤S301:判断执行轨迹集中是否还存在尚未处理的执行轨迹,如果存在,转入步骤S302,否则转入步骤S305;
步骤S302:从轨迹集
Figure BDA0002186980550000072
中任取一尚未被处理过的执行轨迹si,对于si中的每一项,按照如下规则判断是否为干扰项,如为干扰项则将其从轨迹si中去除:
如果该项的RVAL字段的值为0xffffffff,表明该项对应的系统调用未成功,被认定为干扰项;
其ID字段的值为表1中的某一项时,同样被认定为干扰项。
表1.具有先天随机性的系统调用干扰项
系统调用ID 系统调用名
45 brk
90 mmap
91 munmap
192 mmap2
219 madvise
240 futex
比如,对于执行轨迹5#open#0xffffffff,5#open#0x4,3#read#0x200,240#futex#0x0,6#close#0x0。第一项5#open#0xffffffff(因返回值为0xffffffff)和第四项240#futex#0x0(因表1中含有ID为240的条目)将被认定为干扰项。那么,经过干扰项过滤后执行轨迹变为5#open#0x4,3#read#0x200,6#close#0x0;基于ID可将该执行轨迹表示为:5,3,6;
步骤S303:将k的取值由2开始,按照步长为1逐渐递增至τ(取值在8-10之间为宜),迭代利用k-gram算法切分过滤后的执行轨迹,依次得到特定k值下的短序列集gramk(si),合并对应所有k值的短序列集,得到执行轨迹si的模式候选集
Figure BDA0002186980550000081
步骤S304:将轨迹si的模式候选集
Figure BDA0002186980550000082
并入前轮迭代生成的模式候选集,并跳转到步骤S301开始下一轮迭代。
步骤S305:输出程序p在输入I下的模式候选集
Figure BDA0002186980550000083
实施例1:假定程序p在某输入I1下被执行了2次,经干扰项过滤后的执行轨迹分别为
Figure BDA0002186980550000084
Figure BDA0002186980550000085
其中,分别用I1 1和I1 2表示程序在输入I1下的第一次执行和第二次执行。
假定τ的取值为3(仅为表述方便,实际情况下取值在8-10之间为宜),那么,对于第一次执行的轨迹
Figure BDA0002186980550000091
经步骤S303处理后,得到该执行轨迹的模式候选集(允许元素重复)为:
Figure BDA0002186980550000092
同样,对应第二次执行的轨迹
Figure BDA0002186980550000093
的模式候选集为:
Figure BDA0002186980550000094
那么,程序p在某输入I1下的模式候选集(允许元素重复)为:
Figure BDA0002186980550000095
步骤S103:利用频繁模式挖掘算法处理候选模式集,生成频繁模式集;对所有频繁模式依次进行Hash处理,将频繁模式的Hash值及其频度构成的键值对集合
Figure BDA0002186980550000096
作为程序p对应输入I的线程感知胎记,其中hs(fi)和sp(fi)分别表示频繁模式fi的hash值和频度(即绝对支持度)。
结合图4,线程感知胎记构建的具体流程为:
步骤S401:利用频繁模式挖掘算法如Apriori,处理模式候选集
Figure BDA0002186980550000097
生成频繁模式集
Figure BDA0002186980550000098
其中fi表示通过频繁模式挖掘得到的某一频繁模式;
步骤S402:判断频繁模式集
Figure BDA0002186980550000099
中是否还存在尚未被处理过的模式,如存在则跳转到步骤S403,否则跳转到步骤S407;
步骤S403:从频繁模式集中任取一尚未被处理的模式fi并将其标记为已处理,利用md5sum计算该模式的Hash值为hs(fi);
步骤S404:创建新的键值对<hs(fi),sp(fi)>,并入集合
Figure BDA00021869805500000910
中;
步骤S405:输出集合
Figure BDA00021869805500000911
即程序p对应输入I的线程感知胎记。
实施例2:假定按照步骤S401,对实施例1中程序p在某输入I1下的模式候选集进行处理后,得到的频繁模式集为:
Figure BDA0002186980550000101
进一步按照步骤S401-S405所述流程,得到程序p在某输入I1下的线程感知胎记:
Figure BDA0002186980550000102
步骤S104:给定原告程序p和被告程序q在输入I下的线程感胎记
Figure BDA0002186980550000103
Figure BDA0002186980550000104
采用公式(1)实现胎记相似性计算:
Figure BDA0002186980550000105
实施例3:对于另一程序q,假定在输入I1下按照步骤S101-S103提取的频繁模式为
Figure BDA0002186980550000106
生成的线程感知胎记为:
Figure BDA0002186980550000107
那么,程序q和实施例2中程序p在输入I1下的软件胎记的相似性为:
Figure BDA0002186980550000108
步骤S105:动态胎记是与输入相关的,其是对特定输入下程序部分语义和行为的抽象,仅凭借单一输入作出的判定结果并不可靠。对此,提供多个不同的输入并重复步骤S101-S104,依次得到原告和被告程序在对应输入下胎记的相似性,取相似性的均值作为原告和被告程序的相似性。具体采用公式(2)计算程序相似性:
Figure BDA0002186980550000111
实施例4:假设实施例3中程序p和q在另外三个输入I2、I3和I4下的胎记的相似性分别为:
Figure BDA0002186980550000112
那么,程序p和q的相似性为:
Figure BDA0002186980550000113
步骤S502:根据程序相似性及可调节阈值ε(取值在0.2-0.3之间为宜),做出抄袭与否的判定并输出检测结果。具体的抄袭判定标准如公式(3)所示。
Figure BDA0002186980550000114
实施例5:根据实施例4计算得到的程序p和q的相似性0.85,当ε取值为0.2时,将得到程序q抄袭程序p的判定。
综上所述,本发明提出了一种基于频繁模式挖掘的多线程程序抄袭检测方法,包括:1)通过动态监控获取程序在同一输入多次执行下的多条执行轨迹;2)预处理程序执行轨迹集,生成模式候选集;3)利用频繁模式挖掘算法处理模式候选集,生成频繁模式集并做Hash处理后构建线程感知胎记;4)计算特定输入下原告和被告程序胎记的相似性;5)基于多个输入下胎记相似性的均值及给定的阈值,做出抄袭判定并输出检测结果。本发明直接以可执行程序为分析对象,无需程序源码存在;利用频繁模式挖掘从同一输入下程序多次运行对应的多条执行轨迹中,提取行为模式生成线程感知胎记,极大地降低了线程交织不确定性的干扰。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。

Claims (6)

1.一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,包括以下步骤:
S1,对待分析程序实施动态监控,捕获其在某输入I下的动态执行轨迹;
S2,利用k-gram算法处理步骤S1获得的执行轨迹,生成模式候选集;
S3,利用频繁模式挖掘算法处理步骤S2获得的模式候选集,生成频繁模式集;将Hash处理后的频繁模式及频率构成的键值对集合,作为待分析程序在输入I下的线程感知胎记;
S4,按照步骤S1至步骤S3,分别生成原告程序和被告程序对应输入I的线程感知胎记,计算二者在输入I下的线程感知胎记间的相似性;
S5,提供多个不同的输入并重复步骤S4,依次得到原告和被告程序在对应输入下胎记的相似性,取相似性的均值作为原告和被告程序的相似性,输出相似值并依据检测阈值给出抄袭判定;
其中,步骤S1中,捕获其在某输入I下的动态执行轨迹的具体方式包括:
对待检测程序p,使用同一输入I执行程序m次,通过监控捕获在输入I下的执行轨迹集
Figure FDA0002991203230000011
其中,si表示第i次执行对应的执行轨迹;步骤S1中,对待分析程序实施动态监控的方法具体包括:利用Pin动态插桩框架植入监控代码,捕获程序执行过程中的系统调用,记录由系统调用构成的执行轨迹,轨迹形式为ID#NAME#RVAL;其中,ID表示系统调用号,NAME为系统调用名,RVAL为系统调用的返回值;
步骤S2中,模式候选集生成方法具体包括:
对于
Figure FDA0002991203230000012
中的每条执行轨迹si,首先依据RVAL字段和ID字段过滤去除执行轨迹中的干扰项,获得过滤后的执行轨迹;
然后迭代利用k-gram算法切分过滤后的执行轨迹,依次得到特定k值下的短序列集gramk(si),合并所有短序列集得执行轨迹si的模式候选集
Figure FDA0002991203230000013
最后迭代处理轨迹集中的每条执行轨迹,合并所有轨迹的模式候选集,得待分析程序p在输入I下的模式候选集
Figure FDA0002991203230000021
2.根据权利要求1所述的一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,步骤S3中,线程感知胎记的生成方法包括:
首先,利用频繁模式挖掘算法,处理
Figure FDA0002991203230000022
生成频繁模式集
Figure FDA0002991203230000023
其中,fi表示通过频繁模式挖掘得到的某一频繁模式;
然后,对所有频繁模式依次进行Hash处理,将频繁模式的Hash值及其频度构成的键值对集合
Figure FDA0002991203230000024
作为程序p对应输入I的线程感知胎记;其中,hs(fi)和sp(fi)分别表示频繁模式fi的hash值和频度。
3.根据权利要求2所述的一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,步骤S4中,线程感知胎记的相似性计算方法包括:
给定原告程序p和被告程序q在输入I下的线程感胎记
Figure FDA0002991203230000025
Figure FDA0002991203230000026
采用公式(1)实现胎记相似性计算:
Figure FDA0002991203230000027
式(1)中,len返回频繁模式的长度,KSet返回键值对集合中的所有键,Val返回键值对集合中特定键的值,ci为所有键的交集CSet中的某一元素,αi
Figure FDA0002991203230000028
中所有键的集合中的某一元素,βi
Figure FDA0002991203230000029
中所有键的集合中的某一元素。
4.根据权利要求3所述的一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,还包括:提供多个不同的输入并重复步骤S1至步骤S4,依次得到原告和被告程序在对应输入下胎记的相似性,取相似性的均值作为原告和被告程序的相似性;
此时采用公式(2)实现程序相似性计算:
Figure FDA0002991203230000031
其中,
Figure FDA0002991203230000033
表示程序输入的集合。
5.根据权利要求4所述的一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,以公式(3)为抄袭判定标准:
Figure FDA0002991203230000032
其中,ε为预设判定阈值。
6.根据权利要求1至5中任一项所述的一种基于频繁模式挖掘的多线程程序抄袭检测方法,其特征在于,依据RVAL字段和ID字段过滤去除执行轨迹中的干扰项的过程中,干扰项识别原则为:
对于执行轨迹中的每一项,如果其RVAL字段的值为0xffffffff,表明该项对应的系统调用未成功,被认定为干扰项;
或者,系统调用ID为45,系统调用名为brk,被认定为干扰项;系统调用ID为90,系统调用名为mmap,被认定为干扰项;系统调用ID为91,系统调用名为munmap,被认定为干扰项;系统调用ID为192,系统调用名为mmap2,被认定为干扰项;系统调用ID为219,系统调用名为madvise,被认定为干扰项;系统调用ID为240,系统调用名为futex,被认定为干扰项。
CN201910818878.9A 2019-08-30 2019-08-30 一种基于频繁模式挖掘的多线程程序抄袭检测方法 Active CN110532739B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910818878.9A CN110532739B (zh) 2019-08-30 2019-08-30 一种基于频繁模式挖掘的多线程程序抄袭检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910818878.9A CN110532739B (zh) 2019-08-30 2019-08-30 一种基于频繁模式挖掘的多线程程序抄袭检测方法

Publications (2)

Publication Number Publication Date
CN110532739A CN110532739A (zh) 2019-12-03
CN110532739B true CN110532739B (zh) 2021-04-30

Family

ID=68665799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910818878.9A Active CN110532739B (zh) 2019-08-30 2019-08-30 一种基于频繁模式挖掘的多线程程序抄袭检测方法

Country Status (1)

Country Link
CN (1) CN110532739B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112925821B (zh) * 2021-02-07 2022-05-13 韶关学院 基于MapReduce的并行频繁项集增量数据挖掘方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870721A (zh) * 2014-03-04 2014-06-18 西安交通大学 基于线程切片胎记的多线程软件抄袭检测方法
CN108399321A (zh) * 2017-11-03 2018-08-14 西安邮电大学 基于动态指令依赖图胎记的软件局部抄袭检测方法
CN108830049A (zh) * 2018-05-09 2018-11-16 四川大学 一种基于动态控制流图权重序列胎记的软件相似性检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104281525B (zh) * 2014-10-28 2016-12-07 中国人民解放军装甲兵工程学院 一种缺陷数据分析方法及利用其缩减软件测试项目的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870721A (zh) * 2014-03-04 2014-06-18 西安交通大学 基于线程切片胎记的多线程软件抄袭检测方法
CN108399321A (zh) * 2017-11-03 2018-08-14 西安邮电大学 基于动态指令依赖图胎记的软件局部抄袭检测方法
CN108830049A (zh) * 2018-05-09 2018-11-16 四川大学 一种基于动态控制流图权重序列胎记的软件相似性检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Reviving Sequential Program Birthmarking for Multithreaded Software Plagiarism Detection;Zhenzhou Tian等;《IEEE Transactions on Software Engineering》;20170328;第44卷(第5期);第491-511页 *
软件抄袭检测研究综述;田振洲等;《信息安全学报》;20160731;第1卷(第3期);第52-76页 *

Also Published As

Publication number Publication date
CN110532739A (zh) 2019-12-03

Similar Documents

Publication Publication Date Title
CN109241740B (zh) 恶意软件基准测试集生成方法及装置
Alasmary et al. Soteria: Detecting adversarial examples in control flow graph-based malware classifiers
Jeon et al. Hybrid malware detection based on Bi-LSTM and SPP-Net for smart IoT
US9652601B2 (en) Method for plagiarism detection of multithreaded program based on thread slice birthmark
CN109635568B (zh) 一种基于静态分析和模糊测试相结合的并发漏洞检测方法
CN111163065A (zh) 异常用户检测方法及装置
CN105138916A (zh) 基于数据挖掘的多轨迹恶意程序特征检测方法
CN108399321B (zh) 基于动态指令依赖图胎记的软件局部抄袭检测方法
CN109543408A (zh) 一种恶意软件识别方法和系统
CN110532739B (zh) 一种基于频繁模式挖掘的多线程程序抄袭检测方法
US9600572B2 (en) Method, computer program and apparatus for analyzing symbols in a computer system
Assefa et al. Intelligent phishing website detection using deep learning
Pirch et al. Tagvet: Vetting malware tags using explainable machine learning
CN107506622B (zh) 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法
CN108959922B (zh) 一种基于贝叶斯网的恶意文档检测方法及装置
CN110162472A (zh) 一种基于fuzzing测试的测试用例生成方法
JP3906197B2 (ja) パターン識別方法及びパターン識別装置及びプログラム
CN108469997B (zh) 一种基于动态特征的自定义堆管理函数的自动识别方法
Li et al. DeepIncept: Diversify Performance Counters with Deep Learning to Detect Malware
CN114201358B (zh) 一种基于系统调用序列的多线程程序异常检测方法
Chae et al. Effective and efficient detection of software theft via dynamic API authority vectors
US20190156024A1 (en) Method and apparatus for automatically classifying malignant code on basis of malignant behavior information
CN108563950B (zh) 基于SVM的Android恶意软件检测方法
CN112749391A (zh) 一种恶意软件对抗样本的检测方法、装置和电子设备
KR101792631B1 (ko) 퍼지 해싱을 사용한 함수의 api 기반 소프트웨어의 유사성 측정방법 및 그 시스템

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