预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号(10)申请公布号CNCN103577323103577323A(43)申请公布日2014.02.12(21)申请号201310449858.1(22)申请日2013.09.27(71)申请人西安交通大学地址710049陕西省西安市咸宁西路28号(72)发明人郑庆华田振洲刘烃范铭(74)专利代理机构西安通大专利代理有限责任公司61200代理人汪人和(51)Int.Cl.G06F11/36(2006.01)权权利要求书2页利要求书2页说明书6页说明书6页附图4页附图4页(54)发明名称基于动态关键指令序列胎记的软件抄袭检测方法(57)摘要本发明提出了一种基于动态关键指令序列胎记的软件抄袭检测方法,包括:1)基于动态插桩对待分析的程序进行监控,结合动态污点分析,实时地对关键指令进行识别和记录;2)对记录的关键指令序列进行预处理,剥离操作数,抽取助记符序列;3)在此基础之上为待检测的两个软件分别生成其动态关键指令序列胎记;4)计算胎记的相似性;5)通过胎记相似性的均值及给定的阈值,做出抄袭与否的决策。该方法直接针对二进制代码,无需源码存在,更具有现实意义;检测手段不依赖于特定平台或编程语言,具有更广阔的应用范围;对于语义保留的代码混淆技术具有很好的抵抗力,提高了对深度抄袭的检测能力。CN103577323ACN103572ACN103577323A权利要求书1/2页1.基于动态关键指令序列胎记的软件抄袭检测方法,其特征在于,包括如下步骤:1)基于动态插桩技术,对待分析程序实施运行时监控;同时结合数据流分析,进行动态关键指令的识别和记录,生成动态关键指令序列;2)对抽取的动态关键指令序列进行预处理,剥离操作数,生成助记符序列;3)基于助记符序列,利用k-gram算法,分别为待分析的第一程序及第二程序生成动态关键指令序列胎记;4)进行第一程序及第二程序胎记相似性的计算;5)依据多次输入下生成的胎记相似性的均值,及给定的阈值判断是否抄袭。2.根据权利要求1所述的方法,其特征在于,所述步骤1)中动态关键指令定义及识别原则为:令trace(p,I)表示程序p在输入I下的一条执行trace,对于该trace中的任一条汇编指令ins,当满足如下两个条件时,认为ins是程序p在输入I下的一条关键指令,即a)ins属于值更新指令b)ins属于输入关联指令。3.根据权利要求1所述的方法,其特征在于,所述步骤1)中监控实施方法为:针对二进制的待分析程序,使用动态插桩技术,在待分析程序的每条指令执行之前植入相应的分析代码,实现运行时监控,捕获指令级执行信息。4.根据权利要求1所述的方法,其特征在于,所述步骤1)中关键指令序列生成方法为:通过指令级的运行时监控,捕获每一条待执行的汇编指令,分析该指令的类型,是否为值更新指令;同时结合动态污点分析技术,通过污点源的识别及污点信息的传播扩散,辅助识别输入关联指令;最后根据分析结果,对关键指令进行记录,将其加入动态关键指令序列,否则不进行记录。5.根据权利要求1所述的方法,其特征在于,所述步骤1)具体包括以下步骤:步骤S201:判断是否还存在待执行的指令,如果有则跳至步骤S202,否则直接转入步骤S208;步骤S202:对于待分析的指令,解析指令类型,判断其是否为污点传播指令,如果是则转入步骤S203,否则转入步骤S204;步骤S203:依据预定义的污点传播规则,进行污点数据的扩散传播;步骤S204:对指令进行解析,据其操作符判断是否为值更新指令;如果是则转入步骤S205,不是则转入步骤S207;步骤S205:根据污点的扩散状态,识别该指令是否为输入关联指令;如果为输入关联指令则转入步骤S206,否则转入步骤S207;步骤S206:识别出该指令为关键指令,并将之加入动态关键指令序列中;步骤S207:执行该指令,并转入步骤S201进行下一轮的分析;步骤S208:输出动态关键指令序列。6.根据权利要求1所述的方法,其特征在于,所述步骤2)中指令序列预处理方法为:对抽取的关键指令序列中的每条汇编指令,解析其语法结构,剥离其操作数,保留其助记符,生成相应的助记符序列。7.根据权利要求1所述的方法,其特征在于,所述步骤3)中动态关键指令序列胎记生成方法为:令s(p,I)=<ins1,ins2,…,insn>为程序p在输入I下抽取得到的一条关键指令序列,t(p,I)=<e1,e2,…,en>表示与s(p,I)对应的助记符序列,2CN103577323A权利要求书2/2页即对于其中每个元素ei,都有ei=mnemonicOf(insi);对t(p,I)应用k-gram算法得到一个长度为k子序列的集合Set(p,I)={gj|gj=(ej,ej,…,ej+k