CN112559978B - 基于动态胎记的多线程程序抄袭检测方法及相关设备 - Google Patents

基于动态胎记的多线程程序抄袭检测方法及相关设备 Download PDF

Info

Publication number
CN112559978B
CN112559978B CN202011506964.5A CN202011506964A CN112559978B CN 112559978 B CN112559978 B CN 112559978B CN 202011506964 A CN202011506964 A CN 202011506964A CN 112559978 B CN112559978 B CN 112559978B
Authority
CN
China
Prior art keywords
program
dynamic
birthmark
suspicious
system call
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
CN202011506964.5A
Other languages
English (en)
Other versions
CN112559978A (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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing 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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202011506964.5A priority Critical patent/CN112559978B/zh
Publication of CN112559978A publication Critical patent/CN112559978A/zh
Application granted granted Critical
Publication of CN112559978B publication Critical patent/CN112559978B/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Complex Calculations (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本说明书实施例提供一种基于动态胎记的多线程程序抄袭检测方法及相关设备。该方法包括:采用动态插桩技术,向待测程序中插入自定义函数,获取系统调用序列;利用K值可变的D‑Kgram算法处理系统调用序列,分别生成gram长度为不同K值的若干个子序列;对若干个子序列进行单一线程化筛选,得到特征子序列集合;分别构建原程序和可疑程序的动态胎记;将动态胎记转化为向量,利用余弦相似度方法得到原程序与可疑程序的相似度;计算在多次输入下相似度的均值并依据检测阈值,得出可疑程序是否抄袭原程序的结论。本说明书提供的方法及相关设备可有效规避线程交织特性对动态胎记的影响,使得抄袭检测的效果更好。

Description

基于动态胎记的多线程程序抄袭检测方法及相关设备
技术领域
本说明书一个或多个实施例涉及软件抄袭检测领域,尤其涉及一种基于动态胎记的多线程程序抄袭检测方法及相关设备。
背景技术
近年来,软件抄袭行为愈演愈烈,软件抄袭行为一方面影响计算机相关专业学生的培养,另一方面对软件知识产权的保护造成了严重威胁。因此,软件抄袭检测技术成为了研究重点。
在软件知识产权争端中,原告方很可能无法获取到被告方的源代码,而软件胎记技术就适用于无法获取软件源代码的场景。因此,只需要二进制可运行文件的软件胎记技术得到了越来越多的关注。软件胎记技术又依据提取过程是否需要程序运行,分为软件静态胎记技术和软件动态胎记技术。软件动态胎记技术由于其动态监控程序运行的特性,更能体现程序运行时的特征,所以性能比软件静态胎记技术更好。
现有的软件动态胎记技术,在单线程程序的抄袭检测领域取得了较好的成果。然而,对于多线程程序,线程交织的特性对程序动态监测和胎记提取造成了很大影响。多线程程序的运行过程具有不确定性,使得动态监测程序运行的结果也具有不确定性,动态胎记无法很好的衡量程序的运行行为。所以,现有的软件动态胎记技术还难以应用到多线程程序抄袭检测中。
又由于多线程程序可以提高CPU的利用率和程序的效率,多线程编程已经逐渐成为软件开发的主流。因此,亟需一种能够实现对多线程程序抄袭进行检测的方法。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种基于动态胎记的多线程程序抄袭检测方法及相关设备,以克服现有技术中的不足。
基于上述目的,本说明书一个或多个实施例提供了一种基于动态胎记的多线程程序抄袭检测方法,包括:
获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论。
基于同一发明构思,本说明书一个或多个实施例还提供了一种基于动态胎记的多线程程序抄袭检测装置,包括:
获取模块,被配置为获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
第一生成模块,被配置为利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
筛选模块,被配置为对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
构建模块,被配置为通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
第二生成模块,被配置为将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
第一计算模块,被配置为将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
第二计算模块,被配置为计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论。
基于同一发明构思,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一项所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的基于动态胎记的多线程程序抄袭检测方法及相关设备,利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,能更准确地反映待测程序的运行行为;对若干个子序列进行单一线程化筛选,能够解决多线程程序抄袭检测中,线程交织特性对动态胎记的影响,提高对程序动态监测的稳定性,使得抄袭检测的效果更好。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例的基于动态胎记的多线程程序抄袭检测方法流程图;
图2为本说明书一个或多个实施例的基于动态胎记的多线程程序抄袭检测方法具体流程图;
图3为本说明书一个或多个实施例中的获取系统调用序列的方法的流程图;
图4为本说明书一个或多个实施例的基于动态胎记的多线程程序抄袭检测装置结构示意图;
图5为本说明书一个或多个实施例中的抄袭程序对的相似度检测结果示意图;
图6为本说明书一个或多个实施例中的相似程序对的相似度检测结果示意图;
图7为本说明书一个或多个实施例的电子设备结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
如背景技术部分所述,现有的软件动态胎记技术还难以应用到多线程程序抄袭检测中。申请人在实现本公开的过程中发现,目前,对于多线程程序抄袭检测的方法主要有以下两种:
一种是基于线程切片胎记的多线程软件抄袭方法。该方法主要通过线程切片技术来应对多线程交织的特性,之后在线程切片的基础上生成软件胎记。最后通过最大双边图匹配的方法来计算阙值,做出抄袭与否的决策。该方法无法有效的应对多线程交织的特性,其理论依据不充实,且方法本身不够巧妙、复杂性高,无法满足日益增长的软件抄袭检测需求。
另一种是基于频繁模式挖掘的多线程程序抄袭检测方法。该方法主要通过动态监控获取程序同一输出多次程序的执行轨迹集,生成模式候选集,然后通过频繁模式挖掘算法处理模式候选集,进而通过Hash处理构建线程感知胎记,之后计算胎记相似性并且得到抄袭与否的判定。该方法通过频繁模式挖掘,时间复杂度高,并且并未解决线程交织的特性对动态胎记的影响,难以应用于软件知识产权争端。
鉴于上述两种方法存在的问题,为了使得动态胎记技术更好地应用到多线程程序的抄袭检测当中,本说明书一个或多个实施例提供了一种基于动态胎记的多线程程序抄袭检测方法,参考图1,包括以下步骤:
步骤S101、获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
步骤S102、利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
步骤S103、对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
步骤S104、通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
步骤S105、将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
步骤S106、将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
步骤S107、计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论。
可见,本说明书一个或多个实施例的基于动态胎记的多线程程序抄袭检测方法,能够解决多线程程序抄袭检测中,线程交织特性对动态胎记的影响,能更准确地反映待测程序的运行行为,提高对待测程序动态监测的稳定性。
以下,通过具体的实施例进一步详细说明本公开的技术方案。
参考图2,为本说明书一个实施例的基于动态胎记的多线程程序抄袭检测方法具体流程图,包括以下步骤:
步骤S201、使用动态插桩工具,对待测程序进行动态检测,来获取在某一程序输入下的所述待测程序的带有线程号标识的系统调用序列。
本步骤中,借助动态插桩工具Pin引擎,向待测程序中插入自定义函数,所述Pin引擎会提供接口作为回调接口,所述自定义函数会在每次待测程序发生系统调用时回调执行,把待测程序运行过程中的每个系统调用函数对应的系统调用号和线程号收集起来,组成系统调用序列,写入到文本中,作为下一步分析的材料。
具体的,借助动态插桩工具Pin引擎,在待测程序的每条函数执行之前和执行之后插入自定义函数,记录该次执行对应的系统调用序列。参考图3,为本说明书一个实施例中的获取系统调用序列的方法的流程图,包括以下步骤:
步骤S301、判断待测程序是否还存在待执行函数,如果有则跳至步骤S302,否则直接转入步骤S306;
步骤S302、对于待分析函数,解析函数类型,判断其是否为系统调用函数,如果是则转入步骤S303,否则转入步骤S305;
步骤S303、对系统调用函数进行解析,获取其线程号、系统调用号,组成系统调用序列,写入到输出文件中;
步骤S304、判断函数的返回值是否为-1,若是,则转入步骤S301分析下一个待执行的函数,否则转入步骤S305;
步骤S305、执行该系统调用函数,并转入步骤S301进行下一轮的分析;
步骤S306、关闭文件输入流并结束程序。
例如,待测程序Q在程序输入I下获取的一条系统调用序列为Trace(Q,I)=<(0,3),(0,240),(0,112),(3,311),(3,192),(3,91),(3,125)>。其中,系统调用序列中每一项代表一个系统调用函数对应的系统调用号(计算机内部指定)和线程号。例如,(0,3)代表0号线程执行了3号系统调用函数。
步骤S202、利用参数K值可变的D-Kgram算法处理所述带有线程号标识的系统调用序列,生成若干个子序列集合。
本步骤中,D-Kgram算法的全称为Dynamic-K-gram算法,是对K-gram算法的改进。由于K-gram算法只能使用固定的参数K对序列进行切分(即每次只能选择一个K值),其中,K为正整数,一般取3或4。为了更完善的反映待测程序的运行行为,本实施例采用可变的K值(即每次可以选择多个K值),可以选择参数K的范围(minK,maxK),选择好K的范围后,D-Kgram算法会对所述带有线程号标识的系统调用序列进行gram长度为不同K值(K取minK至maxK范围内的每一个值)的切分,然后对于切分得到的gram长度为K≥4的每个子序列,将其除首末位之外的任意K-3位的值进行模糊化处理;所述模糊化处理为将相应位的值替换为-1(在进行频率统计时,-1能够适配所有数字)。具体的,若子序列gram长度为4,则将此子序列除首末位之外的任意一位的值替换为-1,若子序列gram长度为5,则将此子序列除首末位之外的任意两位的值替换为-1。
例如:对于步骤S201所述的一条系统调用序列Trace(Q,I)=<(0,3),(0,240),(0,112),(3,311),(3,192),(3,91),(3,125)>,其选择的参数K的范围为(3,4),D-Kgram算法会对所述系统调用序列进行gram长度为3和4的切分。然后,对长度为4的每个子序列中间的任意一位进行模糊化处理。由此得到gram长度为3的子序列集合:<(3,240,112),(240,12,311),(112,311,192),(311,192,91),(192,91,125)>;gram长度为4的进行模糊化处理后的子序列集合:<(3,-1,112,311),(3,240,-1,311),(240,-1,311,192),(240,112,-1,192),(112,-1,192,91),(112,311,-1,91),(311,-1,91,125),(311,192,-1,125)>。
步骤S203、对所述若干个子序列集合进行单一线程化筛选,得到特征子序列集合。
本步骤中,单一线程化筛选是规避线程交织特性对动态胎记的影响的重要步骤。单一线程化筛选立足于这样一个假设:对于多线程程序而言,并非程序运行的所有时刻都处于多线程状态,系统调用函数能够反映待测程序的运行状态,当系统调用函数连续地由同一线程发起,则认为待测程序目前处于单线程运行状态,反之亦然。单一线程化筛选会对D-Kgram算法得到的若干个子序列进行进一步筛选。筛选规则为:当该子序列内的所有系统调用函数对应的线程号均一致,才会视为有效的子序列,将其作为特征子序列。
例如:对于步骤S202所述的,对gram长度为3和4的子序列集合进行单一线程化筛选,得到特征子序列集合:gram长度为3的特征子序列集合:<(3,240,112),(311,192,91),(192,91,125)>,其中,(3,240,112)的线程号均为0,(311,192,91)的线程号均为3,(192,91,125)的线程号均为3;gram长度为4的特征子序列集合:<(311,-1,91,125),(311,192,-1,125)>,其中,(311,-1,91,125)的线程号均为3,(311,192,-1,125)的线程号均为3。
步骤S204、通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记。
本步骤中,所述构建所述待测程序的动态胎记的表现形式为键值对,构建所述待测程序Q的动态胎记的公式为:
BirthMark(Q)={<k1,v1>,<k2,v2>,…,<kn,vn>};
其中,
ki=(sc1,sc2,…,scm),m∈(minK,maxK)
vi=freq(ki)in sequence
1≤i≤n;
其中,ki为特征子序列,sci为系统调用号,minK和maxK为D-Kgram算法中参数K的取值范围,vi为各特征子序列在所述系统调用序列中出现的频率。
例如,对于步骤S203所述的,由于gram长度为3和4的特征子序列在系统调用序列中出现的频率都为1,所以得到的待测程序Q动态胎记为:BirthMark(Q)={<(3,240,112),1>,<(311,192,91),1>,<(192,91,125),1>,<(311,-1,91,125),1>,<(311,192,-1,125),1>}。
步骤S205、执行步骤S201至步骤S204,将原程序和可疑程序作为所述待测程序,分别构建所述原程序和可疑程序的动态胎记,并将所述原程序和可疑程序的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度。
本步骤中,所述原程序和可疑程序的动态胎记分别表示为:
BirthMark(Y)={<k1,v1>,<k2,v2>,…,<kn,vn>}
BirthMark(P)={<k1′,v1′>,<k2′,v2′>,…,<kn′,vn′>};
其中,Y代表原程序,P代表可疑程序,所述可疑程序为疑似抄袭原程序的程序;
然后,获取所述原程序和可疑程序的特征子序列集合:K1={k1,k2,…,kn},K2={k1′,k2′,…,kn′};
对K1和K2取并集构造新的有序集合K=K1∪K2={kk1,kk2,…,kkn};
将所述原程序的动态胎记BirthMark(Y)和可疑程序的动态胎记BirthMark(P)转化为向量,分别表示为:
Figure BDA0002845204190000081
Figure BDA0002845204190000091
其中,1≤i≤n,vi为特征子序列kki∈K1时,所述特征子序列kki在所述系统调用序列中出现的频率;vi′为特征子序列kki∈K2时,所述特征子序列kki在所述系统调用序列中出现的频率;
进一步的,根据所述向量
Figure BDA0002845204190000092
计算胎记系数θ:
Figure BDA0002845204190000093
最后,利用余弦相似度方法将所述向量
Figure BDA0002845204190000094
与胎记系数θ融合,计算得到在所述某一程序输入下的原程序与可疑程序的相似度:
Figure BDA0002845204190000095
步骤S206、重复步骤S201至步骤S205,计算在不同程序输入下的原程序与可疑程序相似度的均值并依据检测阈值,得出可疑程序是否抄袭原程序的结论。
本步骤中,首先,通过改变程序输入,重复步骤S201至步骤S205,得到在多次不同的程序输入下原程序Y与可疑程序P的多个相似度;
然后,计算不同程序输入下相应的多个相似度的平均值
Figure BDA0002845204190000096
最后,依据可调节的检测阈值ε得出可疑程序P是否抄袭原程序Y的结论:
Figure BDA0002845204190000097
其中,ε的取值范围通常为0.2-0.3。
可见,本说明书实施例提供的基于动态胎记的多线程程序抄袭检测方法,利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,能更准确地反映待测程序的运行行为;对若干个子序列进行单一线程化筛选,能够解决多线程程序抄袭检测中,线程交织特性对动态胎记的影响,可有效规避线程交织特性对动态胎记的影响,提高对程序动态监测的稳定性,使得抄袭检测的效果更好。
可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种基于动态胎记的多线程程序抄袭检测装置。参考图4,所述的基于动态胎记的多线程程序抄袭检测装置,包括:
获取模块401,被配置为获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
第一生成模块402,被配置为利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
筛选模块403,被配置为对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
构建模块404,被配置为通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
第二生成模块405,被配置为将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
第一计算模块406,被配置为将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
第二计算模块407,被配置为计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论。
如图5所示,为本说明书一个实施例中的抄袭程序对的相似度检测结果示意图。从图中可以看出,未经过基于动态胎记的多线程程序抄袭检测装置的单一线程化筛选,对抄袭程序对进行检测,所得到的相似度最小值约为0.7,相似度最大值约为1,检测结果波动较大。而经过本公开装置的单一线程化筛选,所检测得到的抄袭程序对的相似度基本在0.92至1之间。由此可得,经过单一线程化筛选,可提高对程序动态监测的稳定性,使得检测的效果更好;另外,对于抄袭程序对,检测得到的相似度越高代表检测装置的性能越好。
如图6所示,为本说明书一个实施例中的相似程序对的相似度检测结果示意图。从图中可以看出,未经过基于动态胎记的多线程程序抄袭检测装置的单一线程化筛选,对相似程序对进行检测,所得到的相似度最小值约为0.27,相似度最大值约为0.58。而经过本公开装置的单一线程化筛选,所检测得到的相似程序对的相似度基本在0.26至0.31之间。对于相似程序对,检测得到的相似度越低代表检测装置的性能越好,因此,本公开装置具有更好的性能和稳定性。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一实施例所述的基于动态胎记的多线程程序抄袭检测方法。
图7示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的基于动态胎记的多线程程序抄袭检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行前述实施前述例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (8)

1.一种基于动态胎记的多线程程序抄袭检测方法,其特征在于,包括:
获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论;
其中,对所述若干个子序列进行单一线程化筛选,具体包括:
筛选出所述若干个子序列中,其系统调用函数对应的线程号均一致的子序列,作为特征子序列;
其中,将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度,具体包括:
获取所述原程序和可疑程序的特征子序列集合:K1={k1,k2,…,kn},K2={k1′,k2′,…,kn′};
对K1和K2取并集构造新的有序集合K=K1∪K2={kk1,kk2,…,kkn};
将所述原程序的动态胎记BirthMark(Y)和可疑程序的动态胎记BirthMark(P)转化为向量,分别表示为:
Figure FDA0003648497210000011
Figure FDA0003648497210000021
其中,1≤i≤n,vi为特征子序列kki∈K1时,所述特征子序列kki在所述系统调用序列中出现的频率;vi′为特征子序列kki∈K2时,所述特征子序列kki在所述系统调用序列中出现的频率;
根据所述向量
Figure FDA0003648497210000022
计算胎记系数θ:
Figure FDA0003648497210000023
利用余弦相似度方法将所述向量
Figure FDA0003648497210000024
与胎记系数θ融合,计算得到所述程序输入下的原程序与可疑程序的相似度:
Figure FDA0003648497210000025
2.根据权利要求1所述的方法,其特征在于,获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列,具体包括:
借助动态插桩工具Pin引擎,向待测程序中插入自定义函数,所述Pin引擎会提供接口作为回调接口,所述自定义函数会在每次待测程序发生系统调用时回调执行,把待测程序运行过程中的每个系统调用函数对应的系统调用号和线程号收集起来,组成系统调用序列;
令Trace(Q,I)=<e1,e2,…,en>,表示所述待测程序Q在程序输入I下获取的一条系统调用序列,其中,ei由系统调用号和线程号组成,1≤i≤n。
3.根据权利要求1所述的方法,其特征在于,所述利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,具体包括:
对所述系统调用序列进行gram长度为不同K值的切分;
对于gram长度为K≥4的每个子序列,将其除首末位之外的任意K-3位的值进行模糊化处理;所述模糊化处理为将相应位的值替换为-1。
4.根据权利要求1所述的方法,其特征在于,构建所述待测程序的动态胎记的表现形式为键值对,构建所述待测程序Q的动态胎记的公式为:
BirthMark(Q)={<k1,v1>,<k2,v2>,…,<kn,vn>};
其中,
ki=(sc1,sc2,…,scm),m∈(minK,maxK)
vi=freq(ki)in sequence
1≤i≤n;
其中,ki为特征子序列,sci为系统调用号,minK和maxK为Dynamic-K-gram算法中参数K的取值范围,vi为各特征子序列在所述系统调用序列中出现的频率。
5.根据权利要求4所述的方法,其特征在于,所述原程序和可疑程序分别对应的所述动态胎记表示为:
BirthMark(Y)={<k1,v1>,<k2,v2>,…,<kn,vn>}
BirthMark(P)={<k1′,v1′>,<k2′,v2′>,…,<kn′,vn′>};
其中,Y代表原程序,P代表可疑程序,所述可疑程序为疑似抄袭原程序的程序。
6.根据权利要求1所述的方法,其特征在于,所述计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论,具体包括:
改变程序输入,得到在多次不同的程序输入下原程序Y与可疑程序P的多个所述相似度;
计算多个所述相似度的平均值
Figure FDA0003648497210000031
依据可调节的检测阈值ε得出可疑程序P是否抄袭原程序Y的结论:
Figure FDA0003648497210000032
7.一种基于动态胎记的多线程程序抄袭检测装置,其特征在于,包括:
获取模块,被配置为获取待测程序在一程序输入下的每个系统调用函数对应的系统调用号和线程号,组成系统调用序列;
第一生成模块,被配置为利用参数K值可变的Dynamic-K-gram算法处理所述系统调用序列,分别生成gram长度为不同K值的若干个子序列;
筛选模块,被配置为对所述若干个子序列进行单一线程化筛选,得到特征子序列集合;
构建模块,被配置为通过统计所述特征子序列集合中各特征子序列在所述系统调用序列中出现的频率,构建所述待测程序的动态胎记;
第二生成模块,被配置为将原程序和可疑程序作为所述待测程序,得到所述原程序和可疑程序分别对应的所述动态胎记;
第一计算模块,被配置为将所述原程序和可疑程序对应的动态胎记转化为向量,根据所述向量得到胎记系数;利用所述胎记系数和所述向量计算余弦相似度,以得到所述程序输入下的原程序与可疑程序的相似度;
第二计算模块,被配置为计算得到不同程序输入下的多个所述相似度,并依据检测阈值,得出可疑程序是否抄袭原程序的结论;
其中,所述筛选模块进一步被配置为:
筛选出所述若干个子序列中,其系统调用函数对应的线程号均一致的子序列,作为特征子序列;
其中,第一计算模块进一步被配置为:
获取所述原程序和可疑程序的特征子序列集合:K1={k1,k2,…,kn},K2={k1′,k2′,…,kn′};
对K1和K2取并集构造新的有序集合K=K1∪K2={kk1,kk2,…,kkn};
将所述原程序的动态胎记BirthMark(Y)和可疑程序的动态胎记BirthMark(P)转化为向量,分别表示为:
Figure FDA0003648497210000041
Figure FDA0003648497210000042
其中,1≤i≤n,vi为特征子序列kki∈K1时,所述特征子序列kki在所述系统调用序列中出现的频率;vi′为特征子序列kki∈K2时,所述特征子序列kki在所述系统调用序列中出现的频率;
根据所述向量
Figure FDA0003648497210000043
计算胎记系数θ:
Figure FDA0003648497210000044
利用余弦相似度方法将所述向量
Figure FDA0003648497210000045
与胎记系数θ融合,计算得到所述程序输入下的原程序与可疑程序的相似度:
Figure FDA0003648497210000046
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任意一项所述的方法。
CN202011506964.5A 2020-12-18 2020-12-18 基于动态胎记的多线程程序抄袭检测方法及相关设备 Active CN112559978B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011506964.5A CN112559978B (zh) 2020-12-18 2020-12-18 基于动态胎记的多线程程序抄袭检测方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011506964.5A CN112559978B (zh) 2020-12-18 2020-12-18 基于动态胎记的多线程程序抄袭检测方法及相关设备

Publications (2)

Publication Number Publication Date
CN112559978A CN112559978A (zh) 2021-03-26
CN112559978B true CN112559978B (zh) 2022-09-02

Family

ID=75031248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011506964.5A Active CN112559978B (zh) 2020-12-18 2020-12-18 基于动态胎记的多线程程序抄袭检测方法及相关设备

Country Status (1)

Country Link
CN (1) CN112559978B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3215875A1 (en) * 2022-10-18 2024-04-18 Blackberry Limited Method and apparatus for clone search
CN116028936B (zh) * 2023-02-24 2023-05-30 山东云天安全技术有限公司 一种基于神经网络的恶意代码检测方法、介质及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870721A (zh) * 2014-03-04 2014-06-18 西安交通大学 基于线程切片胎记的多线程软件抄袭检测方法
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
CN103870721A (zh) * 2014-03-04 2014-06-18 西安交通大学 基于线程切片胎记的多线程软件抄袭检测方法
CN107506622A (zh) * 2017-08-25 2017-12-22 武汉大学 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Instruction-words based Software Birthmark;Lianhong Ma 等;《2012 Fourth International Conference on Multimedia Information Networking and Security》;20121231;全文 *
软件胎记选取技术研究;马世鑫;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20130615;第1、25-37页 *

Also Published As

Publication number Publication date
CN112559978A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
TWI688917B (zh) 風險識別模型構建和風險識別方法、裝置及設備
US10032114B2 (en) Predicting application performance on hardware accelerators
Sayadi et al. Customized machine learning-based hardware-assisted malware detection in embedded devices
Mayer et al. Exposing fake images with forensic similarity graphs
US8990792B2 (en) Method for constructing dynamic call graph of application
US9454454B2 (en) Memory leak analysis by usage trends correlation
CN112559978B (zh) 基于动态胎记的多线程程序抄袭检测方法及相关设备
CN111124926B (zh) 模糊测试方法、装置、电子设备及存储介质
Sayadi et al. Comprehensive assessment of run-time hardware-supported malware detection using general and ensemble learning
US10255434B2 (en) Detecting software attacks on processes in computing devices
JP2010002370A (ja) パターン抽出プログラム、方法及び装置
JP2015007972A (ja) 画像照合方法、画像照合装置、モデルテンプレート生成方法、モデルテンプレート生成装置、およびプログラム
Basile et al. Diachronic analysis of the italian language exploiting google ngram
CN109783381B (zh) 一种测试数据生成方法、装置及系统
CN116628600A (zh) 基于随机森林的不平衡数据采样方法及装置
CN116051118B (zh) 行为时序模型的分析方法及装置
Cabral et al. Profiling cpu behavior for detection of android ransomware
Zhou et al. Evaluation to Classify Ransomware Variants based on Correlations between APIs.
CN116663008A (zh) 漏洞检测方法、装置、电子设备、存储介质及程序产品
James et al. Detection of anomalous behavior of smartphones using signal processing and machine learning techniques
US11430488B2 (en) System and method for generating a compression invariant motion timeline
Peng et al. ACTS: extracting android app topological signature through graphlet sampling
Kraetzer et al. Improvement of information fusion-based audio steganalysis
Zahid et al. A fast resource efficient method for human action recognition
Xiaolin et al. Research on malicious code homology analysis method based on texture fingerprint clustering

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