一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于导入类判定的同源性检测方法、装置及设备与流程

2022-02-20 13:33:14 来源:中国专利 TAG:


1.本发明实施例涉及计算机领域,尤其涉及一种基于导入类判定的同源性检测方法、装置及设备。


背景技术:

2.目前,android平台下基于机器生成的引用井喷式增长,各种同源应用借助自动生成打包技术,可以通过一套源码生成多个包名及程序名不同的实体应用进行分发,借此来增加自身的传播程度。在实际应用中,如何判断多个应用实体是否是通过同样的源代码经由机器批量生成的呢?即,如何通过一种技术来识别源码一样但通过机器批量生成多个应用实体呢?
3.现有技术方案中,有的,利用可执行代码的反汇编指令然后通过一些变换编码操作对形成的操作码位数组进行相似度计算来描述样本的文件的相似情况;有的,会利用函数代码的形成抽象语法树,然后通过将树映射成空间向量,通过计算空间向量来进行样本相似度的计算。
4.目前的解决方案对apk的可执行文件进行大量的深度解析,一度需要遍历整个apk文件的所有函数的字节码,而且需要进行比较大量的计算工作,一旦apk样本的代码进行无关执行逻辑的混淆,将会导致这种基于可执行代码字节码相似性比较的方法失效。因此需要一种行之有效的同源性检测方法,以此来更加精确的感知批量同源样本,获得更好的整体感知恶意代码分布情况。


技术实现要素:

5.针对现有技术存在的问题,本发明实施例提供一种基于导入类判定的同源性检测方法、装置及设备。
6.第一方面,本发明实施例提供一种基于导入类判定的同源性检测方法,包括:
7.获取待检测样本,所述待检测样本为移动终端程序安装包;
8.将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;
9.其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
10.进一步,所述将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测,具体包括:
11.获取所述待检测样本的dex文件中的导入类,计算所述导入类的哈希摘要,获取第一哈希摘要结果;
12.比较所述第一哈希摘要结果和所述已知样本对应的第二哈希摘要结果,其中,所述第二哈希摘要结果与所述第一哈希摘要结果的计算方法相同;
13.若所述第一哈希摘要结果与所述第二哈希摘要结果相等,则判定所述待检测样本与所述已知样本具有同源性。
14.进一步,所述获取所述待检测样本的dex文件中的导入类,计算所述导入类的哈希摘要,获取第一哈希摘要结果,具体包括:
15.对所述待检测样本进行解压缩,获取一个或多个dex文件;
16.获得所述一个或多个dex文件的classitem中导入的外部类,获得全部外部类名称;
17.基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果。
18.进一步,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括:
19.将所述全部外部类名称拼接为一个字符串,获得拼接字符串;
20.对所述拼接字符串,利用md5算法或模糊哈希算法计算哈希摘要,获取第一哈希摘要结果。
21.进一步,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括:
22.基于所述全部外部类名称,分别对每个外部类名称利用md5算法或模糊哈希算法计算哈希摘要,获得一个或多个结果;
23.若获得一个结果,即为第一哈希摘要结果;
24.若获得多个结果,将所述多个结果拼接为第一哈希摘要结果。
25.进一步,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括
26.若有多个dex文件或dex文件中包含多个类,分别将每个dex文件或每个类导入的外部类名称拼接为一个字符串,获得多个拼接字符串;
27.对于所述多个拼接字符串中的每个拼接字符串,分别利用md5算法或模糊哈希算法计算哈希摘要,获得多个结果;
28.将所述多个结果拼接为第一哈希摘要结果。
29.第二方面,本发明实施例提供一种基于导入类判定的同源性检测装置,包括获取模块和检测模块:
30.所述获取模块,用于获取待检测样本,所述待检测样本为移动终端程序安装包;
31.所述检测模块,用于将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;
32.其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
33.第三方面,本发明实施例提供一种电子设备,包括:
34.至少一个处理器;以及
35.与所述处理器通信连接的至少一个存储器,其中:
36.所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例第一方面所述基于导入类判定的同源性检测方法及其任一可选实施例所述的方法。
37.第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令执行本发明实施例第一方面所述基于导入类判定的同源性检测方法及其任一可选实施例的方法。
38.本发明实施例提供一种基于导入类判定的同源性检测方法,通过待检测样本中导入的外部类不变的原则,即导入类在数量和内容上不会发生变化,通过待检测样本中的导入类信息与已知样本的导入类信息比较相似性,无需进行大量的遍历和计算,即可快速高效的进行基于导入类判定的同源性检测。
附图说明
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1为本发明实施例一种基于导入类判定的同源性检测方法流程图;
41.图2为本发明实施例一种基于导入类判定的同源性检测装置示意图;
42.图3为本发明实施例电子设备的框架示意图。
具体实施方式
43.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实
---
施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.需要说明的,本发明实施例所有提到的相关术语,例如,apk是指android应用程序安装包;dex文件是指android应用程序中的可执行代码文件;classitem是指dex文件中包含的、用来描述一个类的所有信息的结构;import表是指每个类中引入的、非当前类的外部类的名称列表。
45.图1为本发明实施例一种基于导入类判定的同源性检测方法流程图。如图1所述的基于导入类判定的同源性检测方法,包括:
46.100,获取待检测样本,所述待检测样本为移动终端程序安装包;
47.101,将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;
48.其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
49.本发明实施例中,已知样本和待检测样本的文件类型相同。可选的,针对android系统,移动终端程序安装包主要为apk安装包。将所获取的apk安装包作为待检测样本,与一个已知样本即已知apk安装包进行相似度检测,以判定该待检测样本是否与已知样本同源。
50.原则上,相同源代码生成的apk文件中导入的外部类不变。同样一套源代码即使通过机器批量生成多个不同的apk文件,每个apk可执行文件中的每个类导入的外部类的数量和内容不会发生改变。其中外部类是指,不是由当前应用开发者定义实现在apk中的类,在android环境下,一般就是所有的framework类和原生java类。
51.本发明实施例的基于导入类判定的同源性检测方法,通过待检测样本中导入的外部类不变的原则,将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,检测待检测样本与已知样本的相似性,无需进行大量的遍历和计算,即可快速高效的进行
同源性检测。
52.基于上述实施例,101,所述将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测,具体包括:
53.101.1,获取所述待检测样本的dex文件中的导入类,计算所述导入类的哈希摘要,获取第一哈希摘要结果;
54.101.2,比较所述第一哈希摘要结果和所述已知样本对应的第二哈希摘要结果,其中,所述第二哈希摘要结果与所述第一哈希摘要结果的计算方法相同;
55.101.3,若所述第一哈希摘要结果与所述第二哈希摘要结果相等,则判定所述待检测样本与所述已知样本具有同源性。
56.本发明实施例通过哈希算法,分别计算待检测样本和已知样本中的导入类的哈希摘要,对获得的两个哈希摘要结果进行比较,从而判断相似度,进行同源性判定。此处并不限制待检测样本和已知样本中哈希摘要计算的先后顺序;作为相似度参照的已知样本,其第二哈希摘要结果可以事先计算出,可以与第一哈希摘要结果同时计算,也可以在得到第一哈希摘要结果后再计算,只要保证101.2步骤之前得到即可。
57.将二个哈希摘要结果进行比较,若相等,则待检测样本和已知样本在代码结构上是相似的,判定所述待检测样本与所述已知样本具有同源性;若不相等,则待检测样本和已知样本在代码结构上不相似,判定所述待检测样本与所述已知样本不具有同源性。
58.本发明实施例将所述待检测样本中的导入类的哈希摘要结果与已知样本的导入类的哈希摘要结果进行比较,判断二者是否相等,从而对所述待检测样本与所述已知样本进行同源性检测,能够非常好的识别出经由一套源代码,通过批量生成工具进行反复生成的样本群,而且在使用中对计算资源的消耗非常低,可以在海量的样本集合中快速检索指定import表哈希的样本。
59.基于上述实施例,101.1,所述获取所述待检测样本的dex文件中的导入类,计算所述导入类的哈希摘要,获取第一哈希摘要结果,具体包括:
60.对所述待检测样本进行解压缩,获取一个或多个dex文件;
61.获得所述一个或多个dex文件的classitem中导入的外部类,获得全部外部类名称;
62.基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果。
63.本发明实施例中,对于待检测样本apk安装包,先对apk安装包进行解压缩。apk安装包是一个标准的zip格式的压缩文件,在解压完成后可以得到一个或者多个dex文件,因为应用可能会使用多dex技术,那么会在apk包中存在多个dex文件,文件命名是:classes.dex、classes2.dex、classes3
……
依次类推。每个dex文件都是标准的dex格式文件,dex文件的具体格式google的官方文档有非常详细的公开说明。这样按照dex文件格式解析到该dex中包含的所有class信息。
64.这些class信息被存储在不同的classitem结构中,例如:某个apk的dex文件中共有三个类,在dex文件中排布顺序分别是classa、classb、classc,那么就得到了当前待检apk安装包中的可执行代码包含的所有的classitem信息,这是一个数组结构,这个数据可以叫做classitem流。
65.每个classitem结构中包含该类中所有的实现的函数,进而可以获取到每个函数
里对外部方法的调用情况。如前所述,这里外部方法特指:不是由当前应用开发者定义实现在apk中的类,在android环境下,一般就是所有的framework类和原生java类。利用如上方法分别解析举例的三个classitem得到每个类中import的外部类列表如下:
66.classa:
[0067][0068]
classb:
[0069][0070]
classc
[0071][0072]
本发明实施例举例的dex文件中,classa导入了7个外部类,classb导入了5个外部类,classc导入了5个外部类,全部外部类为17个,可以获得该17个外部类的名称。
[0073]
获得全部外部类名称后,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括可选的三种方法,如下所述。
[0074]
基于上述任一可选实施例,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括:
[0075]
将所述全部外部类名称拼接为一个字符串,获得拼接字符串;
[0076]
对所述拼接字符串,利用md5算法或模糊哈希算法计算哈希摘要,获取第一哈希摘要结果。
[0077]
具体通过上面的举例进行说明。如前举例所述dex文件导入了17个外部类。在得到
了该apk的所有类的import表之后,将这些import表按照classitem在dex文件中解析出的先后顺序进行拼接排列,以上面的三个类为例,将全部外部类名称拼接为一个字符串,则会得到一个这样的字符串:
[0078][0079]
设置哈希算法,本发明实施例中的哈希算法可以使用的md5算法,也可以是模糊哈希算法,或其他可能的哈希算法做摘要计算。此处,对拼接得到的字符串使用md5算法或者模糊哈希算法做摘要后得到:
[0080]
3ef41cd56984d7e60f563fff593fab14
[0081]
则该哈希算法计算出来的字符即为所述待检测样本的类import表摘要,即第一哈希摘要结果。
[0082]
需要说明的是,当待检测样本的第一哈希摘要结果通过本实施例所述方法进行计算时,所述已知样本对应的第二哈希摘要结果的计算方法必须相同,字符串拼接的顺序需要相同,才可以作为相似度参照。总之,需要保持待检测样本与已知样本的摘要算法相同,下同。
[0083]
基于上述任一可选实施例,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括:
[0084]
基于所述全部外部类名称,分别对每个外部类名称利用md5算法或模糊哈希算法计算哈希摘要,获得一个或多个结果;
[0085]
若获得一个结果,即为第一哈希摘要结果;
[0086]
若获得多个结果,将所述多个结果拼接为第一哈希摘要结果。
[0087]
同样通过上面的举例进行说明。如前举例所述dex文件导入了17个外部类,分别对17个类单独摘要,计算方法同上述拼接字符串的计算方法相同,可以得到17个摘要结果,则可以将该17个摘要结果拼接为一个总的哈希摘要结果,即第一哈希摘要结果。若在实际应用中只存在一个外部类,则通过一个外部类做摘要计算,即可得到第一哈希摘要结果。
[0088]
与之相应的,已知样本的第二哈希摘要结果的计算方法和字符串拼接方法应相同,此处不再赘述。
[0089]
基于上述任一可选实施例,所述基于所述全部外部类名称,利用哈希算法计算哈希摘要,获取第一哈希摘要结果,具体包括
[0090]
若有多个dex文件或dex文件中包含多个类,分别将每个dex文件或每个类导入的外部类名称拼接为一个字符串,获得多个拼接字符串;
[0091]
对于所述多个拼接字符串中的每个拼接字符串,分别利用md5算法或模糊哈希算
法计算哈希摘要,获得多个结果;
[0092]
将所述多个结果拼接为第一哈希摘要结果。
[0093]
具体的,所述若有多个dex文件或dex文件中包含多个类,分别将每个dex文件或每个类导入的外部类名称拼接为一个字符串,获得多个拼接字符串,包括如下情形:
[0094]
apk安装包包括多个dex文件,每个dex文件导入一个或多个类,例如,一个apk安装包包括2个dex文件,一个dex文件中包含2个类,一个dex文件包括3个类,如下:
[0095]
dex文件所包含的classdexaclass1、class2dexbclass3,class4,class5
[0096]
可选的计算方法如下:
[0097]
(1)将dexa的class1和class2所导入的全部外部类拼接为一个字符串;将dexb的class3、class4和class5所导入的全部外部类拼接为一个字符串,获得两个拼接字符串,分别对两个拼接字符串分别做摘要计算,获得两个哈希摘要结果,将两个哈希摘要结果拼接为第一两个哈希摘要结果。
[0098]
(2)分别将class1、class2、class3、class4和class5所导入的全部外部类拼接为一个字符串,获得五个拼接字符串,分别对五个拼接字符串分别做摘要计算,获得五个哈希摘要结果,将五个哈希摘要结果拼接为第一两个哈希摘要结果。
[0099]
以上二种方法可任选其一。与之相应的,已知样本的第二哈希摘要结果的计算方法和字符串拼接方法应相同,此处不再赘述。
[0100]
综上,本发明实施例在计算导入类的哈希摘要时,可以对整体的import表做了哈希摘要计算,也可以单独计算每个类的import表的哈希摘要,也可以单独计算每个dex文件的import表的哈希摘要,也可以单独计算每个导入类的哈希摘要;所有可行的哈希算法都包括在本发明实施例的保护范围之内,例如md5算法、模糊哈希等;任何通过可执行文件中class的导入类来描述这个class结构的方法装置也皆在本发明实施例的保护范围之内。
[0101]
本发明通过巧妙的利用java语法中的import信息,可以间接的描述java代码的概况,进而可以间接描述使用java语言开发的android应用程序在代码结构的信息,从而可以通过简单的import哈希比较,来判断宏观上的两个android应用程序是否具有相似的代码结构,进而确定某两个应用是是否同源(此处,代码相似的两个应用程序,系同一个开发者组织开发,即为同源)。
[0102]
对所述待检测样本与所述已知样本进行同源性检测,能够非常好的识别出经由一套源代码,通过批量生成工具进行反复生成的样本群,而且在使用中对计算资源的消耗非常低,可以在海量的样本集合中快速检索指定import表哈希的样本,无需进行大量的遍历和计算,即可快速高效的进行同源性检测。
[0103]
本发明实施例可以使用在病毒家族检测、同源样本检索等,需要通过判断计算应用代码结构相似程度的应用场景中,具有良好的有益效果。
[0104]
本发明实施例还提供一种基于导入类判定的同源性检测装置,如图2所示,包括获取模块200和检测模块201:
[0105]
所述获取模块200,用于获取待检测样本,所述待检测样本为移动终端程序安装包;
[0106]
所述检测模块201,用于将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;
[0107]
其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
[0108]
本发明实施例所述基于导入类判定的同源性检测装置用于执行图1所示的基于导入类判定的同源性检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0109]
图3为本发明实施例电子设备框架示意图。请参考图3,本发明实施例提供一种电子设备,包括:处理器(processor)310、通信接口(communications interface)320、存储器(memory)330和总线340,其中,处理器310,通信接口320,存储器330通过总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法,包括:获取待检测样本,所述待检测样本为移动终端程序安装包;将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
[0110]
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待检测样本,所述待检测样本为移动终端程序安装包;将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
[0111]
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取待检测样本,所述待检测样本为移动终端程序安装包;将所述待检测样本中的导入类信息与已知样本的导入类信息进行比较,从而对所述待检测样本与所述已知样本进行同源性检测;其中,所述导入类为所述待检测样本或所述已知样本所导入的外部类。
[0112]
本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0113]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如u盘、移动硬盘、rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0114]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献