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

最近正在学习多线程检测技术,本篇来源:Plagiarism Detection of Multi-threaded Programs using Frequent Behavioral Pattern Mining(论文:一种基于频繁模式挖掘的多线程程序抄袭检测方法)
现有方法在一定程度上解决了抄袭检测的问题,但依然存在不少局限性,包括:1)很多方法只能用于源码存在的情形,包括目前专业鉴定机构采取的主要是源代码比对手段,而很多情况下程序源码是无法获取的,特别是商业软件,为躲避检测通常以可执行文件的形式发布。
**2)为增加检测难度,**抄袭者往往会借助自动化的代码混淆/迷乱工具,在保证程序语义不变的前提下,通过改变程序控制结构、引入垃圾代码、调整代码布局等方式,轻易地生成与原程序看起来非常不一样的代码。特别地,除非可事先对软件进行脱壳处理,加壳混淆方式会有效地挫败基于静态分析的检测方法。
总体而言,现有方法对抗代码混淆的能力依然较弱,很多方法甚至难以应对不同编译器和编译选项带来的干扰。

软件胎记(softwarebirthmark)是从软件代码或其执行过程中抽取出的一些不易改变且可唯一的对软件身份进行标识的特征。
胎记技术通过衡量胎记相似性判断软件间可能存在的抄袭,是实现软件抄袭检测的一种行之有效的手段。利用捕获的执行轨迹信息构建胎记。
3)动态胎记技术因能更精准地刻画软件的行为和语义,比静态胎记技术往往表现出更优秀的抗混淆能力和检测效果。然而,线程交织的不确定性使得多线程程序的行为也表现出很大的不确定性,导致传统动态胎记技术在分析多线程程序时存在很大的随机性。
比如,在相同输入下对同一个多线程程序执行多次,从这些执行轨迹中单独构建的动态胎记往往会体现出很大的不同,极端情况下甚至会使得判定同一个程序与其自身不存在抄袭关系。多线程编程已逐渐成为软件开发的主流,如何应对线程交织干扰是动态胎记技术必须要解决的问题。
**综上,亟需研究一种针对多线程程序抄袭的检测方法。**技术实现要素:本发明的目的在于提供一种基于频繁模式挖掘的多线程程序抄袭检测方法,以解决上述存在的一个或多个技术问题。本发明的方法,直接作用于二进制代码,能对抗主流的代码混淆手段,特别是可有效处理线程交织不确定性的干扰。

FPBirth的构建包括模式候选集生成、频繁模式挖掘和频繁模式约减三个阶段:
首先利用Pin动态插桩监控程序执行,得到多线程程序在同一输入多次执行下的多条执行轨迹,
经过噪声过滤、k-gram切片、切片合并后生成模式候选集;(筛选出一些候选特征)

然后结合数据挖掘算法Apriori从模式候选集中挖掘出频繁模式,
该模式捕获了存在差异的执行轨迹间的相似部分,具备一定的差异容忍能力;
最后将经过约减后的频繁模式以及该模式所对应的频度构建出线程感知胎记FPBirth。依照软件胎记技术的基本流程,设计出基于FPBirth 胎记的多线程程序抄袭检测方法。
注释:
(首先使用 pin插桩,得到你想要的一些特征,然后使用Apriori算法挖掘出一些频繁模式,找出一些相似部分,)

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

猜你喜欢

转载自blog.csdn.net/shanlijia/article/details/107816058