CN111930610A - 软件同源性检测方法、装置、设备及存储介质 - Google Patents

软件同源性检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111930610A
CN111930610A CN202010644261.2A CN202010644261A CN111930610A CN 111930610 A CN111930610 A CN 111930610A CN 202010644261 A CN202010644261 A CN 202010644261A CN 111930610 A CN111930610 A CN 111930610A
Authority
CN
China
Prior art keywords
code file
hash value
fingerprint information
database
file
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.)
Granted
Application number
CN202010644261.2A
Other languages
English (en)
Other versions
CN111930610B (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 Hongjian Technology Co ltd
Original Assignee
Beijing Baize Dongming Technology Co ltd
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 Baize Dongming Technology Co ltd filed Critical Beijing Baize Dongming Technology Co ltd
Priority to CN202010644261.2A priority Critical patent/CN111930610B/zh
Publication of CN111930610A publication Critical patent/CN111930610A/zh
Application granted granted Critical
Publication of CN111930610B publication Critical patent/CN111930610B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

软件同源性检测方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机软件技术领域,尤其涉及一种软件同源性检测方法、装置、设备及存储介质。
背景技术
源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。软件系统的源代码中存在许多相同或相似的代码片段,这些代码片段被称为克隆代码,它们具有同源性。软件同源性检测是指检测被测软件的源代码中是否存在和其他软件相同或者相似的代码片段,从而作为软件是否被复用和抄袭的重要依据。
常见的源代码同源性检测方法有文本相似和功能相似等检测方法,其中文本相似的检测方法,对应于源代码中的声明、标示符、文字、变量、注释等;功能相似的检测方法是不考虑程序段之间的结构和语义上的类似,指的是两个代码片段虽然通过不同的语法或变量编程实现,但有着相似的前提或者后置条件,而且能实现相同或类似的功能。
目前的检测方法对鉴定代码抄袭都有不错的效果,可以鉴定出哪些代码是抄袭的,但是也存在一个缺陷,即无法去除鉴定软件代码的传播影响。例如有一个软件A非常流行也是最早研发出来的,被很多其他的软件所引用,如果B软件引用了A软件,同时C软件也使用了A软件,那么目前的同源性检测方法可能会不仅仅报出来B引用了A软件,同时也可能会报出B也引用了C软件,但实际上A软件才是最终应该被找到的结果,由此会造成检测结果的冗余或误报。
发明内容
本申请实施例提供一种软件同源性检测方法、装置、设备及存储介质,以提高软件同源性检测精度,降低误报率。
第一方面,本申请实施例提供一种软件同源性检测方法,包括:获取待检测软件的至少一个第一代码文件;对每个第一代码文件进行指纹计算,得到至少一个第一指纹信息,其中每个第一代码文件对应一个第一指纹信息;针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述第一代码文件的最早来源文件;确定所述目标代码文件对应的软件与所述待检测软件的同源性。
第二方面,本申请实施例提供一种软件同源性检测装置,包括:获取模块,用于获取待检测软件的至少一个第一代码文件;指纹计算模块,用于对每个第一代码文件进行指纹计算,得到至少一个第一指纹信息,其中每个第一代码文件对应一个第一指纹信息;确定模块,用于针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;以及若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述第一代码文件的最早来源文件;根据所述目标代码文件,确定所述待检测软件的同源性。
第三方面,本申请实施例提供一种电子设备,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。
本申请实施例提供的软件同源性检测方法、装置、设备及存储介质,通过获取待检测软件的至少一个代码文件;对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;确定所述目标代码文件对应的软件与所述待检测软件的同源性。由于是针对每个代码文件分别计算一指纹信息,并根据该指纹信息在数据库中进行匹配,因此能够避免传播影响,提高软件同源性检测精度,降低误报率。
附图说明
图1为本申请实施例提供的软件同源性检测系统的结构示意图;
图2为本申请实施例提供的软件同源性检测方法流程图;
图3为本申请一示例提供的相似哈希的具体实现过程的示意图;
图4为本申请实施例提供的软件同源性检测装置的结构示意图;
图5为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本申请实施例提供的软件同源性检测方法,可以适用于图1所示的软件同源性检测系统。如图1所示,该软件同源性检测系统包括:用户端11和服务器12。其中,用户端11包括智能手机、台式电脑、笔记本电脑、Ipad等电子设备;服务器12上设置有数据库,该数据库中存储有多个文件以及与每个文件对应的指纹信息,指纹信息是文件的唯一标识信息。
用户可以在用户端11上输入待检测软件的相关文件,并由用户端11或服务器12对相关文件进行指纹计算,然后与数据库中存储的多个文件的指纹信息进行匹配,从而确定与相关文件匹配的文件,再基于匹配的文件确定软件同源性,从而鉴定代码是否是抄袭的。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的软件同源性检测方法流程图。本申请实施例针对现有技术的如上技术问题,提供了软件同源性检测方法,该方法具体步骤如下:
步骤S201、获取待检测软件的至少一个代码文件。
本实施例的执行主体可以是如图1所示的服务器,也可以是用户端。
若本实施例的执行主体为服务器,则服务器从用户端获取待检测软件的至少一个代码文件。具体的,用户在用户端上输入待检测软件的至少一个代码文件,用户端将至少一个代码文件发送至服务器。
若本实施例的执行主体为用户端,则用户端根据用户在用户端上的输入信息获取待检测软件的至少一个代码文件。
其中,代码文件是指采用代码对待检测软件进行描述的文件。
步骤S202、对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息。
本实施例中,若本实施例的执行主体为服务器,则服务器根据获取到的至少一个代码文件,对每个代码文件分别计算一指纹,用于唯一标识该代码文件。
当然,本步骤也可以由用户端执行,用户端得到每个代码文件对应的第一指纹信息后,将第一指纹信息发送至服务器。
步骤S203、针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与第一指纹信息相同的第二指纹信息。
其中,数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,且至少一个代码文件不属于数据库。
服务器根据每个代码文件对应的第一指纹信息,在数据库中查找是否存在与第一指纹信息相同的第二指纹信息。
步骤S204、若数据库中存在与第一指纹信息相同的第二指纹信息,则根据第二指纹信息对应的代码文件,确定目标代码文件。
其中,目标代码文件是至少一个代码文件的最早来源文件。
若服务器在数据库中查找到与第一指纹信息相同的第二指纹信息,则在第二指纹信息对应的代码文件中确定目标代码文件。
步骤S205、确定目标代码文件对应的软件与待检测软件的同源性。
假设目标代码文件对应的软件为软件A,待检测软件为软件B,则在确定目标代码文件后,就可以根据目标代码文件以及待检测软件的代码文件,进一步确定目标代码文件与待检测软件的代码文件有多少代码是相同的,从而确定软件A和软件B的同源性。
本申请实施例通过获取待检测软件的至少一个代码文件;对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;确定所述目标代码文件对应的软件与所述待检测软件的同源性。由于是针对每个代码文件分别计算一指纹信息,并根据该指纹信息在数据库中进行匹配,因此能够避免传播影响,提高软件同源性检测精度,降低误报率。
对于一个软件而言,可以采用多种不同类型的代码文件来描述。具体的,代码文件可以包括:源代码文件、字节码文件和二进制文件中至少一项;其中,源代码文件是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
字节码文件是指经过编译器预处理过的一种文件,是JAVA的执行文件的存在形式。
二进制文件是指包含在ASCII及扩展ASCII字符中编写的数据或程序指令的文件。
对于不同类型的代码文件,具有不同的指纹计算方法。对于计算机而言,其在针对不同类型的代码文件进行指纹计算之前,还需要确定代码文件的类型,即确定该代码文件是源代码文件,是字节码文件,还是二进制文件。具体的,可以根据如下方法确定代码文件的类型:
(1)根据预设的白名单确定代码文件是否为源代码文件,其中,白名单中存储有源代码文件的标识信息,例如c/c++语言的源代码文件使用.c.cpp.h等后缀名,则可以将该后缀名存储在白名单中,若代码文件的后缀名存在于白名单中,则确定该代码文件为源代码文件。
(2)查找代码文件中的所有pom.xml文件,如果不存在就查找代码文件里的manifest文件,同时也会分析待检测软件中的jar包里面的pom文件,将查找到的pom.xml文件、manifest文件以及jar包里面的pom文件作为字节码文件。
(3)确定代码文件中是否存在预设字节码,若存在,则认为是二进制文件,否则认为不是二进制文件,例如,确定代码文件中是否存在0x00-0x07这八个字符,如果存在说明是二进制文件,否则认为不是二进制文件。
在上述实施例的基础上,对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息,包括:
步骤a1、若代码文件为源代码文件,则对源代码文件进行哈希运算,得到第一哈希值。
步骤a2、对经过预处理的源代码文件进行哈希运算,得到第二哈希值。
其中,经过预处理的源代码文件是指经过格式化处理的源代码文件,例如去除了空行、空格和注释的源代码文件。
可选的,步骤a1和步骤a2中的哈希运算可以采用md5算法,相应的,第一哈希值和第二哈希值可以是md5值。
当然,本实施例也可以采用其它的算法计算第一指纹信息,只要是能够用于表征文件的唯一标识信息的指纹计算方法都在本申请的范围之内。
步骤a3、对源代码文件进行相似哈希运算,得到第一相似哈希值。
其中,对源代码文件进行相似哈希运算,得到第一相似哈希值,包括:
步骤a31、对源代码文件的每行代码,分别进行哈希运算,得到至少一个第一子哈希值。
步骤a32、将至少一个第一子哈希值与对应的权重进行加权求和,得到第一结果向量。
步骤a33、对第一结果向量进行降维,得到第一相似哈希值。
例如,步骤a31至步骤a33的具体实现过程可以参见图3,如图3所示,源代码文件包括多行源代码,多行源代码记为L1、L2、…、Ln,对源代码文件进行预处理后,得到的多行源代码记为L1’、L2’、…、Lm’,其中,L1’不代表预处理的L1,L2’也不代表预处理的L2,L1、L2、…、Ln表示源代码文件中源代码的编号,L1’、L2’、…、Lm’代表经过预处理的源代码文件中源代码的编号。
然后,针对L1’、L2’、…、Lm’分别进行哈希运算,假设L1’、L2’、…、Lm’进行哈希运算后,得到哈希值分别为10010011、10110111、…、10001101,对10010011、10110111、…、10001101分别进行加权求和,得到每个哈希值对应的加权哈希值,分别为1 -1 -1 1 -1 -11 1、1 -1 1 1 -1 1 1 1、1 -1 -1 -1 1 1 -1 1,然后将每行预处理的源代码的加权哈希值的对应位相加得到结果向量25 -81 65 256 -89 121 96 20,最后将结果向量25 -81 65256 -89 121 96 20进行降维,得到第一相似哈希值。
步骤a4、对经过预处理的源代码文件进行相似哈希运算,得到第二相似哈希值。
其中,经过预处理的源代码文件是指经过格式化处理的源代码文件,例如去除了空行、空格和注释的源代码文件。
对经过预处理的源代码文件进行相似哈希运算,得到第二相似哈希值,包括:
步骤a41、对经过预处理的源代码文件的每行代码,分别进行哈希运算,得到至少一个第二子哈希值。
步骤a42、将至少一个第二子哈希值与对应的权重进行加权求和,得到第二结果向量。
步骤a43、对第二结果向量进行降维,得到第二相似哈希值。
对于步骤a4的具体实施过程,与步骤a3的具体实施过程类似,具体可以参见步骤a3的具体实施过程,此处不再赘述。
经过上述步骤得到的第一哈希值、第二哈希值、第一相似哈希值、第二相似哈希值,即作为源代码文件的第一指纹信息。
步骤a5、若代码文件为字节码文件,则对字节码文件进行哈希运算,得到第三哈希值。
步骤a6、对经过预处理的字节码文件进行哈希运算,得到第四哈希值。
其中,经过预处理的字节码件是指经过格式化处理的字节码文件,例如去除了空行、空格和注释的字节码文件。
步骤a5的具体实现过程与步骤a1类似,具体可以参见步骤a1的具体实施过程,此处不再赘述。
同样地,步骤a6的具体实现过程与步骤a2类似,具体可以参见步骤a2的具体实施过程,此处不再赘述。
步骤a7、若代码文件为二进制文件,则提取二进制文件的第一标识信息,作为二进制文件的第一指纹信息。
其中,标识信息包括字符串常量和/或函数名,字符串常量在二进制文件中出现的次数小于预设次数且字符串长度大于预设长度。
例如,在二进制文件中筛选出现次数小于6次,且字符串长度大于4的字符串常量作为其中一种标识信息。由于多次重复的字符串的识别价值率较低,因此,可以将这部分字符串剔除,以减少后续数据库的匹配压力。
在经过上述实施例得到第一指纹信息后,就可以根据第一指纹信息,在数据库中查找是否与第一指纹信息相同的指纹信息,从而确定与待检测软件的至少一个代码文件相同或相似的代码文件。同样地,针对不同类型的代码文件,也会采取不同的匹配方法。具体的,若代码文件为源代码文件,则针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
步骤b1、在数据库中查找是否存在与第二哈希值相同的哈希值。
步骤b2、若数据库中存在与第二哈希值相同的哈希值,则确定与第二哈希值相同的哈希值为第二指纹信息。
步骤b3、若数据库中不存在与第二哈希值相同的哈希值,则在数据库中查找是否存在与第一哈希值相同的哈希值。
若数据库中不存在与第二哈希值相同的哈希值,则表示源代码文件可能仅包括空行、空格或注释,则需要再根据未经过预处理的源代码文件的第一指纹信息再次进行匹配。
步骤b4、若数据库中存在与第一哈希值相同的哈希值,则确定与第一哈希值相同的哈希值为第二指纹信息。
其中,步骤a1至步骤a4是对代码文件在数据库中匹配相同的代码文件。
步骤a1至步骤a4可以理解为是首先使用去除了空行、空格和注释的源代码文件的第一指纹信息,与数据库中的指纹信息进行匹配,若未匹配到,则使用源代码文件的第一指纹信息,与数据库中的指纹信息进行匹配。
当然,本实施例并不限于此,也可以是首先使用源代码文件的第一指纹信息,与数据库中的指纹信息进行匹配,若未匹配到,则使用去除了空行、空格和注释的源代码文件的第一指纹信息,与数据库中的指纹信息进行匹配。即本实施例的匹配过程包括:在数据库中查找是否存在与第一哈希值相同的哈希值;若数据库中存在与第一哈希值相同的哈希值,则确定与第一哈希值相同的哈希值为第二指纹信息;若数据库中不存在与第一哈希值相同的哈希值,则在数据库中查找是否存在与第二哈希值相同的哈希值;若数据库中存在与第二哈希值相同的哈希值,则确定与第二哈希值相同的哈希值为第二指纹信息。
步骤b5、若数据库中不存在与第一哈希值相同的哈希值,则在数据库中查找是否存在与第一相似哈希值和/或第二相似哈希值相同的相似哈希值。
若通过第一哈希值和第二哈希值都没有在数据库中匹配到相应的第二指纹信息,则源代码文件可能被故意修改以避开克隆检测,因而本步骤可以继续使用相似哈希值进行相似性检测,从而检测出该类情形下的文件。
步骤b6、若数据库中存在与第一相似哈希值和/或第二相似哈希值相同的相似哈希值,则确定与第一相似哈希值相同的相似哈希值为第二指纹信息。
其中,步骤a5至步骤a6是对代码文件进行相似性匹配,也就是对待检测软件的代码文件在数据库中匹配相似的代码文件。
本实施例通过哈希值和相似哈希值在数据库中匹配相应的代码文件,不仅能够找到与待检测软件的代码文件相同的代码文件,还能够找到与待检测软件的代码文件相似的代码文件。
其中,若代码文件为字节码文件,则针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
步骤c1、在数据库中查找是否存在与第四哈希值相同的哈希值;
步骤c2、若数据库中存在与第四哈希值相同的哈希值,则确定与第四哈希值相同的哈希值为第二指纹信息;
步骤c3、若数据库中不存在与第四哈希值相同的哈希值,则在数据库中查找是否存在与第三哈希值相同的哈希值;
步骤c4、若数据库中存在与第三哈希值相同的哈希值,则确定与第三哈希值相同的哈希值为第二指纹信息。
对于步骤a1至步骤a4的具体实现过程,与步骤a1至步骤a4的具体实现过程类似,具体可以参见步骤a1至步骤a4的具体实现过程,此处不再赘述。
其中,若代码文件为二进制文件,则针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
步骤d1、在数据库中查找是否存在与第一标识信息相同的第二标识信息。
步骤d2、若数据库中存在与第一标识信息相同的第二标识信息,则确定与第一标识信息相同的第二标识信息为第二指纹信息。
本实施例包括以下三种情况:
第一种情况:在数据库中查找是否存在与二进制文件的字符串常量相同的字符串常量;若数据库中存在与二进制文件的字符串常量相同的字符串常量,则确定与二进制文件的字符串常量相同的字符串常量为第二指纹信息。
第二种情况:在数据库中查找是否存在与二进制文件的函数名相同的函数名;若数据库中存在与二进制文件的函数名相同的函数名,则确定与二进制文件的函数名相同的函数名为第二指纹信息。
第三种情况:在数据库中查找是否存在与二进制文件的字符串常量和函数名相同的函数名;若数据库中存在与二进制文件的字符串常量相同的字符串常量,且数据库中字符串常量对应的代码文件的函数名与二进制文件的函数名也相同,则确定与二进制文件的字符串常量和函数名均相同的字符串常量和函数名为第二指纹信息。
在上述实施例的基础上,若数据库中存在与第一指纹信息相同的第二指纹信息,则根据第二指纹信息对应的代码文件,确定目标代码文件,包括:
步骤e1、从第二指纹信息对应的代码文件中,确定时间最早的代码文件。
其中,数据库中每个代码文件具有对应的时间信息,该时间信息可以根据其对应的软件的发行时间确定。通过将第二指纹信息对应的代码文件按照时间从前到后的顺序进行排序,从而确定时间最早的代码文件。
本实施例中,时间最早的代码文件可能是一个,也可能是多个,若时间最早的代码文件为一个,则执行步骤e3,若时间最早的代码文件为多个,则执行步骤e2。
步骤e2、若时间最早的代码文件为多个,则根据软件的流行程度选择流行程度最高的软件的代码文件,作为第一目标代码文件。
其中,软件的流行程度可以根据使用该软件的用户数量确定。举例来说,若时间最早的代码文件包括代码文件A、代码文件B,且代码文件A、代码文件B分别对应软件A、软件B,而软件A的流行程度高于软件B,则将代码文件A作为第一目标代码文件。
步骤e3、将剩余结果中与第一目标代码文件名称相同,且版本不同的代码文件作为第二目标代码文件。
经过步骤e2的处理之后,能够找到与待检测软件相同的软件,然而有时还会存在这样一种情形,即针对同一软件进行升级得到的多个不同版本的该软件。针对这种情形,本实施例还可以在步骤e2之后,在第二指纹信息对应的代码文件中,寻找与第一目标代码文件名称相同,且版本不同的代码文件作为第二目标代码文件。
若剩余结果中存在与与第一目标代码文件名称相同的代码文件,则说明该代码文件对应的软件是第一目标代码文件对应的软件后续的发行版本。
步骤e4、在第一目标代码文件和第二目标代码文件中,确定同一版本的代码文件的数量。
经过步骤e1至步骤e4,能够确定与待检测软件存在同源性的软件,由于该同源性软件可能存在多个不同的版本,因而还需要在多个不同的版本中确定最终的版本作为与待检测软件存在同源性的软件。
步骤e5、将数量最多的同一版本的代码文件作为目标代码文件。
本实施例通过每个版本的软件与待检测软件相匹配的代码文件数量,来确定目标软件。
为了检验本实施例的检测效果,本申请选用GitHub上的7个源代码程序,分别使用和不使用本实施例的方法来进行同源性检测,分析出的同源成分区别信息如表1所示,占用内存情况如表2所示,时间开销如表3所示。其中,GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。
表1成分区别
Figure BDA0002572541990000121
Figure BDA0002572541990000131
表2内存消耗
Figure BDA0002572541990000132
表3时间开销
Figure BDA0002572541990000133
其中,表1统计了源代码文件的基本信息和在使用和不使用本实施例的方法分析出成分数量信息,需要指出的是在不使用本实施例的方法的情况下检测出的成分包含使用时间溯源检测出的所有成分,即后者是前者的一个子集。
表2统计的是两种情况的内存消耗情况,根据统计,在使用本实施例的方法时,误报率为不开启时的26%。
表3统计的是两种情况的时间开销情况,根据统计,在使用本实施例的方法时,内存消耗为不开启时的47%。
根据统计,在使用本实施例的方法时,时间消耗为不开启时的93%。
根据上述结果,利用本实施例的方法可以去除掉软件之间的传播影响,减少时间消耗和内存占用消耗,提高检测的精确度,降低误报。
图4为本申请实施例提供的软件同源性检测装置的结构示意图。该软件同源性检测装置具体可以是上述实施例中的服务器。本申请实施例提供的软件同源性检测装置可以执行软件同源性检测方法实施例提供的处理流程,如图4所示,软件同源性检测装置40包括:获取模块41、指纹计算模块42、确定模块43;其中,获取模块41,用于获取待检测软件的至少一个第一代码文件;指纹计算模块42,用于对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;确定模块43,用于针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;确定所述目标代码文件对应的软件与所述待检测软件的同源性。
可选的,所述至少一个代码文件包括:源代码文件、字节码文件和二进制文件中至少一项;所述指纹计算模块42包括:指纹计算单元421,用于若所述代码文件为源代码文件,则对所述源代码文件进行哈希运算,得到第一哈希值;对经过预处理的所述源代码文件进行哈希运算,得到第二哈希值;对所述源代码文件进行相似哈希运算,得到第一相似哈希值;对经过预处理的所述源代码文件进行相似哈希运算,得到第二相似哈希值;若所述代码文件为字节码文件,则对所述字节码文件进行哈希运算,得到第三哈希值;对经过预处理的所述字节码文件进行哈希运算,得到第四哈希值;若所述代码文件为二进制文件,则提取所述二进制文件的第一标识信息,作为所述二进制文件的第一指纹信息,所述标识信息包括字符串常量和/或函数名,所述字符串常量在所述二进制文件中出现的次数小于预设次数且字符串长度大于预设长度。
可选的,所述指纹计算单元421对所述源代码文件进行相似哈希运算,得到第一相似哈希值时,具体包括:对所述源代码文件的每行代码,分别进行哈希运算,得到至少一个第一子哈希值;将至少一个第一子哈希值与对应的权重进行加权求和,得到第一结果向量;对所述第一结果向量进行降维,得到所述第一相似哈希值。
可选的,所述确定模块43包括:第一确定单元431,用于若所述代码文件为源代码文件,则在所述数据库中查找是否存在与所述第二哈希值相同的哈希值;若所述数据库中存在与所述第二哈希值相同的哈希值,则确定与所述第二哈希值相同的哈希值为所述第二指纹信息;若所述数据库中不存在与所述第二哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一哈希值相同的哈希值;若所述数据库中存在与所述第一哈希值相同的哈希值,则确定与所述第一哈希值相同的哈希值为所述第二指纹信息;若所述数据库中不存在与所述第一哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值;若所述数据库中存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值,则确定与所述第一相似哈希值相同的相似哈希值为所述第二指纹信息。
可选的,所述确定模块43包括:第二确定单元432,用于若所述代码文件为字节码文件,则在所述数据库中查找是否存在与所述第四哈希值相同的哈希值;若所述数据库中存在与所述第四哈希值相同的哈希值,则确定与所述第四哈希值相同的哈希值为所述第二指纹信息;若所述数据库中不存在与所述第四哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第三哈希值相同的哈希值;若所述数据库中存在与所述第三哈希值相同的哈希值,则确定与所述第三哈希值相同的哈希值为所述第二指纹信息。
可选的,所述确定模块43包括:第三确定单元433,用于若所述代码文件为二进制文件,则在所述数据库中查找是否存在与所述第一标识信息相同的第二标识信息;若所述数据库中存在与所述第一标识信息相同的第二标识信息,则确定与所述第一标识信息相同的所述第二标识信息为所述第二指纹信息。
可选的,所述确定模块43,包括:第四确定单元434,用于从所述第二指纹信息对应的代码文件中,确定时间最早的代码文件;若时间最早的代码文件为多个,则根据软件的流行程度选择流行程度最高的软件的代码文件,作为第一目标代码文件;将剩余结果中与所述第一目标代码文件名称相同,且版本不同的代码文件作为第二目标代码文件;在所述第一目标代码文件和所述第二目标代码文件中,确定同一版本的代码文件的数量;将数量最多的同一版本的代码文件作为所述目标代码文件。
图4所示实施例的软件同源性检测装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本申请实施例提供的电子设备的结构示意图。本申请实施例提供的电子设备可以执行软件同源性检测方法实施例提供的处理流程,如图5所示,电子设备50包括:存储器51、处理器52、计算机程序和通讯接口53;其中,计算机程序存储在存储器51中,并被配置为由处理器52执行以上方法实施例的步骤。
图5所示实施例的电子设备可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
另外,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的软件同源性检测方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种软件同源性检测方法,其特征在于,包括:
获取待检测软件的至少一个代码文件;
对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;
针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;
若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;
确定所述目标代码文件对应的软件与所述待检测软件的同源性。
2.根据权利要求1所述的方法,其特征在于,所述至少一个代码文件包括:源代码文件、字节码文件和二进制文件中至少一项;
所述对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息,包括:
若所述代码文件为源代码文件,则对所述源代码文件进行哈希运算,得到第一哈希值;
对经过预处理的所述源代码文件进行哈希运算,得到第二哈希值;
对所述源代码文件进行相似哈希运算,得到第一相似哈希值;
对经过预处理的所述源代码文件进行相似哈希运算,得到第二相似哈希值;
若所述代码文件为字节码文件,则对所述字节码文件进行哈希运算,得到第三哈希值;
对经过预处理的所述字节码文件进行哈希运算,得到第四哈希值;
若所述代码文件为二进制文件,则提取所述二进制文件的第一标识信息,作为所述二进制文件的第一指纹信息,所述标识信息包括字符串常量和/或函数名,所述字符串常量在所述二进制文件中出现的次数小于预设次数且字符串长度大于预设长度。
3.根据权利要求2所述的方法,其特征在于,所述对所述源代码文件进行相似哈希运算,得到第一相似哈希值,包括:
对所述源代码文件的每行代码,分别进行哈希运算,得到至少一个第一子哈希值;
将至少一个第一子哈希值与对应的权重进行加权求和,得到第一结果向量;
对所述第一结果向量进行降维,得到所述第一相似哈希值。
4.根据权利要求2或3所述的方法,其特征在于,所述针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
若所述代码文件为源代码文件,则在所述数据库中查找是否存在与所述第二哈希值相同的哈希值;
若所述数据库中存在与所述第二哈希值相同的哈希值,则确定与所述第二哈希值相同的哈希值为所述第二指纹信息;
若所述数据库中不存在与所述第二哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一哈希值相同的哈希值;
若所述数据库中存在与所述第一哈希值相同的哈希值,则确定与所述第一哈希值相同的哈希值为所述第二指纹信息;
若所述数据库中不存在与所述第一哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值;
若所述数据库中存在与所述第一相似哈希值和/或所述第二相似哈希值相同的相似哈希值,则确定与所述第一相似哈希值相同的相似哈希值为所述第二指纹信息。
5.根据权利要求2或3所述的方法,其特征在于,所述针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
若所述代码文件为字节码文件,则在所述数据库中查找是否存在与所述第四哈希值相同的哈希值;
若所述数据库中存在与所述第四哈希值相同的哈希值,则确定与所述第四哈希值相同的哈希值为所述第二指纹信息;
若所述数据库中不存在与所述第四哈希值相同的哈希值,则在所述数据库中查找是否存在与所述第三哈希值相同的哈希值;
若所述数据库中存在与所述第三哈希值相同的哈希值,则确定与所述第三哈希值相同的哈希值为所述第二指纹信息。
6.根据权利要求2或3所述的方法,其特征在于,所述针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,包括:
若所述代码文件为二进制文件,则在所述数据库中查找是否存在与所述第一标识信息相同的第二标识信息;
若所述数据库中存在与所述第一标识信息相同的第二标识信息,则确定与所述第一标识信息相同的所述第二标识信息为所述第二指纹信息。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,包括:
从所述第二指纹信息对应的代码文件中,确定时间最早的代码文件;
若时间最早的代码文件为多个,则根据软件的流行程度选择流行程度最高的软件的代码文件,作为第一目标代码文件;
将剩余结果中与所述第一目标代码文件名称相同,且版本不同的代码文件作为第二目标代码文件;
在所述第一目标代码文件和所述第二目标代码文件中,确定同一版本的代码文件的数量;
将数量最多的同一版本的代码文件作为所述目标代码文件。
8.一种软件同源性检测装置,其特征在于,包括:
获取模块,用于获取待检测软件的至少一个第一代码文件;
指纹计算模块,用于对每个代码文件进行指纹计算,得到每个代码文件对应的第一指纹信息;
确定模块,用于针对每个代码文件对应的第一指纹信息,确定数据库中是否存在与所述第一指纹信息相同的第二指纹信息,所述数据库中存储有多个代码文件以及与每个代码文件对应的指纹信息,所述至少一个代码文件不属于所述数据库;若所述数据库中存在与所述第一指纹信息相同的第二指纹信息,则根据所述第二指纹信息对应的代码文件,确定目标代码文件,所述目标代码文件是所述至少一个代码文件的最早来源文件;确定所述目标代码文件对应的软件与所述待检测软件的同源性。
9.一种电子设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
CN202010644261.2A 2020-07-07 2020-07-07 软件同源性检测方法、装置、设备及存储介质 Active CN111930610B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010644261.2A CN111930610B (zh) 2020-07-07 2020-07-07 软件同源性检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010644261.2A CN111930610B (zh) 2020-07-07 2020-07-07 软件同源性检测方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111930610A true CN111930610A (zh) 2020-11-13
CN111930610B CN111930610B (zh) 2024-05-17

Family

ID=73313277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010644261.2A Active CN111930610B (zh) 2020-07-07 2020-07-07 软件同源性检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111930610B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064634A (zh) * 2021-03-01 2021-07-02 苏州棱镜七彩信息科技有限公司 一种对代码克隆进行同源检测的方法
CN113590192A (zh) * 2021-09-26 2021-11-02 北京迪力科技有限责任公司 一种质量分析的方法及相关设备
CN116305134A (zh) * 2022-11-03 2023-06-23 苏州棱镜七彩信息科技有限公司 一种基于二进制的软件溯源检测方法
CN117873905A (zh) * 2024-03-11 2024-04-12 北京安普诺信息技术有限公司 一种代码同源检测的方法、装置、设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313271A1 (en) * 2008-06-16 2009-12-17 Robert Zeidman Detecting copied computer source code by examining computer object code
US20130297579A1 (en) * 2012-05-02 2013-11-07 Microsoft Corporation Code regeneration determination from selected metadata fingerprints
KR101792631B1 (ko) * 2016-07-19 2017-11-02 성균관대학교 산학협력단 퍼지 해싱을 사용한 함수의 api 기반 소프트웨어의 유사성 측정방법 및 그 시스템
CN108229170A (zh) * 2018-02-02 2018-06-29 中科软评科技(北京)有限公司 利用大数据和神经网络的软件分析方法和装置
CN109213845A (zh) * 2018-09-06 2019-01-15 杭州凡闻科技有限公司 基于文章特征的原创新闻评估方法和系统
CN109710299A (zh) * 2018-12-14 2019-05-03 平安普惠企业管理有限公司 一种开源类库监控方法、装置、设备及计算机存储介质
US20190319987A1 (en) * 2018-04-13 2019-10-17 Sophos Limited Interface for network security marketplace

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313271A1 (en) * 2008-06-16 2009-12-17 Robert Zeidman Detecting copied computer source code by examining computer object code
US20130297579A1 (en) * 2012-05-02 2013-11-07 Microsoft Corporation Code regeneration determination from selected metadata fingerprints
KR101792631B1 (ko) * 2016-07-19 2017-11-02 성균관대학교 산학협력단 퍼지 해싱을 사용한 함수의 api 기반 소프트웨어의 유사성 측정방법 및 그 시스템
CN108229170A (zh) * 2018-02-02 2018-06-29 中科软评科技(北京)有限公司 利用大数据和神经网络的软件分析方法和装置
US20190319987A1 (en) * 2018-04-13 2019-10-17 Sophos Limited Interface for network security marketplace
CN109213845A (zh) * 2018-09-06 2019-01-15 杭州凡闻科技有限公司 基于文章特征的原创新闻评估方法和系统
CN109710299A (zh) * 2018-12-14 2019-05-03 平安普惠企业管理有限公司 一种开源类库监控方法、装置、设备及计算机存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李锁;吴毅坚;赵文耘;: "基于代码克隆检测的代码来源分析方法", 计算机应用与软件, no. 02, pages 8 - 14 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064634A (zh) * 2021-03-01 2021-07-02 苏州棱镜七彩信息科技有限公司 一种对代码克隆进行同源检测的方法
CN113590192A (zh) * 2021-09-26 2021-11-02 北京迪力科技有限责任公司 一种质量分析的方法及相关设备
CN116305134A (zh) * 2022-11-03 2023-06-23 苏州棱镜七彩信息科技有限公司 一种基于二进制的软件溯源检测方法
CN117873905A (zh) * 2024-03-11 2024-04-12 北京安普诺信息技术有限公司 一种代码同源检测的方法、装置、设备及介质
CN117873905B (zh) * 2024-03-11 2024-05-31 北京安普诺信息技术有限公司 一种代码同源检测的方法、装置、设备及介质

Also Published As

Publication number Publication date
CN111930610B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN111930610B (zh) 软件同源性检测方法、装置、设备及存储介质
CN109063055B (zh) 同源二进制文件检索方法和装置
CN110287702B (zh) 一种二进制漏洞克隆检测方法及装置
CN110704103B (zh) 基于软件基因的二进制文件语义相似性比较方法及装置
CN109933617B (zh) 一种数据处理方法、装置以及相关设备和介质
Zhu et al. Android malware detection based on multi-head squeeze-and-excitation residual network
CN112148305B (zh) 一种应用检测方法、装置、计算机设备和可读存储介质
CN110222511B (zh) 恶意软件家族识别方法、装置及电子设备
CN107615240B (zh) 用于分析二进制文件的基于生物序列的方案
WO2018188378A1 (zh) 一种给应用标注标签的方法、装置、终端及计算机可读存储介质
CN111241389A (zh) 基于矩阵的敏感词过滤方法、装置、电子设备、存储介质
CN108280197B (zh) 一种识别同源二进制文件的方法及系统
US20170309298A1 (en) Digital fingerprint indexing
EP3256978A1 (en) Method and apparatus for assigning device fingerprints to internet devices
CN111666101A (zh) 软件同源分析方法及装置
CN108804917B (zh) 一种文件检测方法、装置、电子设备及存储介质
CN116028936B (zh) 一种基于神经网络的恶意代码检测方法、介质及设备
CN117216239A (zh) 文本去重方法、装置、计算机设备及存储介质
CN112749258A (zh) 数据搜索的方法和装置、电子设备和存储介质
CN116880847A (zh) 基于开源项目的溯源方法、装置电子设备及存储介质
CN116089951A (zh) 一种恶意代码检测方法、可读存储介质及电子设备
CN110647537A (zh) 数据搜索方法、装置及存储介质
JP2019032688A (ja) ソースコード解析装置、ソースコード解析方法及びソースコード解析プログラム
CN114816518A (zh) 基于simhash的源代码中开源成分筛选识别方法及系统
CN109241742B (zh) 一种恶意程序的识别方法及电子设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210906

Address after: 100085 office b-714, floor 7, building 2, courtyard 1, Nongda South Road, Haidian District, Beijing

Applicant after: Beijing Hongjian Technology Co.,Ltd.

Address before: 1121-50, floor 11, No. 18, Zhongguancun Street, Haidian District, Beijing 100085

Applicant before: Beijing Baize Dongming Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant