软件同源性检测方法、装置、设备及存储介质制造方法及图纸

技术编号:26342285 阅读:28 留言:0更新日期:2020-11-13 20:32
本申请实施例提供一种软件同源性检测方法、装置、设备及存储介质。该方法包括:获取待检测软件的至少一个代码文件;对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与第一指纹信息相同的第二指纹信息,数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,至少一个代码文件不属于数据库;若数据库中存在与第一指纹信息相同的第二指纹信息,则根据第二指纹信息对应的代码文件,确定目标代码文件,目标代码文件是至少一个代码文件的最早来源文件;确定目标代码文件对应的软件与待检测软件的同源性。本申请实施例能够提高软件同源性检测精度,降低误报率。

【技术实现步骤摘要】
软件同源性检测方法、装置、设备及存储介质
本申请实施例涉及计算机软件
,尤其涉及一种软件同源性检测方法、装置、设备及存储介质。
技术介绍
源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。软件系统的源代码中存在许多相同或相似的代码片段,这些代码片段被称为克隆代码,它们具有同源性。软件同源性检测是指检测被测软件的源代码中是否存在和其他软件相同或者相似的代码片段,从而作为软件是否被复用和抄袭的重要依据。常见的源代码同源性检测方法有文本相似和功能相似等检测方法,其中文本相似的检测方法,对应于源代码中的声明、标示符、文字、变量、注释等;功能相似的检测方法是不考虑程序段之间的结构和语义上的类似,指的是两个代码片段虽然通过不同的语法或变量编程实现,但有着相似的前提或者后置条件,而且能实现相同或类似的功能。目前的检测方法对鉴定代码抄袭都有不错的效果,可以鉴定出哪些代码是抄袭的,但是也存在一个缺陷,即无法去除鉴定软件代码的传播影响。例如有一个软件A非常流行也是最早研发出来的,被很多本文档来自技高网...

【技术保护点】
1.一种软件同源性检测方法,其特征在于,包括:/n获取待检测软件的至少一个代码文件;/n对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;/n针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;/n若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;/n确定所述目标代码文件对应的软件与所述待检测软件的同源性。/n

【技术特征摘要】
1.一种软件同源性检测方法,其特征在于,包括:
获取待检测软件的至少一个代码文件;
对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;
针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;
若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;
确定所述目标代码文件对应的软件与所述待检测软件的同源性。


2.根据权利要求1所述的方法,其特征在于,所述至少一个代码文件包括:源代码文件、字节码文件和二进制文件中至少一项;
所述对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息,包括:
若所述代码文件为源代码文件,则对所述源代码文件进行哈希运算,得到第一哈希值;
对经过预处理的所述源代码文件进行哈希运算,得到第二哈希值;
对所述源代码文件进行相似哈希运算,得到第一相似哈希值;
对经过预处理的所述源代码文件进行相似哈希运算,得到第二相似哈希值;
若所述代码文件为字节码文件,则对所述字节码文件进行哈希运算,得到第三哈希值;
对经过预处理的所述字节码文件进行哈希运算,得到第四哈希值;
若所述代码文件为二进制文件,则提取所述二进制文件的第一标识信息,作为所述二进制文件的第一指纹信息,所述标识信息包括字符串常量和/或函数名,所述字符串常量在所述二进制文件中出现的次数小于预设次数且字符串长度大于预设长度。


3.根据权利要求2所述的方法,其特征在于,所述对所述源代码文件进行相似哈希运算,得到第一相似哈希值,包括:
对所述源代码文件的每行代码,分别进行哈希运算,得到至少一个第一子哈希值;
将至少一个第一子哈希值与对应的权重进行加权求和,得到第一结果向量;
对所述第一结果向量进行降维,得到所述第一相似哈希值。


4.根据权利要求2或3所述的方法,其特征在于,所述针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
若所述代码文件为源代码文件,则在所述数据库中查找是否存在与所述第二哈希值相同的哈希值;
若所述数据库中存在与所述第二哈希值相同的哈希值,则确定与所述第二哈希值相同的哈希值为所述第二指纹信息;
若所述数据库中不存在与所述第二哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一哈希值相同的哈希值;
若所述数据库中存在与所述第一哈希值相同的哈希值,则确定与所述第一哈希值相同的哈希值为所述第二指纹信息;
若所述数据库中不存在与所述第一哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值;
若所述数据库中存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值,则确定与所述第一相似哈希值相同的...

【专利技术属性】
技术研发人员:马骁
申请(专利权)人:北京白泽洞冥科技有限公司
类型:发明
国别省市:北京;11

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1