[发明专利]基于动态胎记的多线程程序抄袭检测方法及相关设备有效
申请号: | 202011506964.5 | 申请日: | 2020-12-18 |
公开(公告)号: | CN112559978B | 公开(公告)日: | 2022-09-02 |
发明(设计)人: | 周文安;吴梦远;陆祉丞;谢逸凡 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F21/10 | 分类号: | G06F21/10;G06F8/75 |
代理公司: | 北京风雅颂专利代理有限公司 11403 | 代理人: | 孙晓凤 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 胎记 多线程 程序 抄袭 检测 方法 相关 设备 | ||
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)转化为向量,分别表示为:
其中,1≤i≤n,vi为特征子序列kki∈K1时,所述特征子序列kki在所述系统调用序列中出现的频率;vi′为特征子序列kki∈K2时,所述特征子序列kki在所述系统调用序列中出现的频率;
根据所述向量计算胎记系数θ:
利用余弦相似度方法将所述向量与胎记系数θ融合,计算得到所述程序输入下的原程序与可疑程序的相似度:
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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011506964.5/1.html,转载请声明来源钻瓜专利网。