一种软件包检测方法、装置、电子设备及存储介质与流程

文档序号:32864884发布日期:2023-01-07 01:39阅读:52来源:国知局
一种软件包检测方法、装置、电子设备及存储介质与流程

1.本技术涉及软件安全技术领域,具体而言,涉及一种软件包检测方法、装置、电子设备及存储介质。


背景技术:

2.随着互联网技术的发展,移动端应用已被广泛使用。但由于java程序具有易于逆向的特性,使得软件包很容易被逆向修改和查看源码,以在其中注入后门程序和查看敏感信息,所以对源码的保护就尤为重要。为了防止以上情况的发生,需要对原有的软件包进行混淆加密保护,让破解者无法进行反编译。
3.现有的对软件包进行加密检测的方法,如利用开源工具对软件包进行加密性检测,该方法依赖于测试人员丰富的检测经验或提前内置固定的检测阈值,容易导致误判。


技术实现要素:

4.本技术实施例的目的在于提供一种软件包检测方法、装置、电子设备及存储介质,基于深度学习对模型进行训练,可自动判断是否使用了混淆加密,提高了检测效率和检测结果的准确性,解决了现有方法容易导致误判的问题。
5.本技术实施例提供了一种软件包检测方法,所述方法包括:
6.接收待测软件包;
7.对所述待测软件包进行分析处理,以获得代码数据;
8.对所述代码数据进行特征点提取,并生成特征数据;
9.将所述特征数据输入预设的n-gram语言模型,以判断所述待测软件包是否经过混淆加密。
10.在上述实现过程中,利用训练好的n-gram语言模型对软件包进行混淆加密检测,可完全代替人工检测,极大提升了检测效率,且检测结果是由检测模型动态生成,相比于其他检测工具内置检测阈值,更能够提高检测结果的准确率,可自动批量进行软件包加密检测,解决了现有方法容易导致误判的问题。
11.进一步地,所述对所述待测软件包进行分析处理,以获得代码数据,包括:
12.对所述待测软件包进行反编译处理,以获取源码;
13.判断所述源码是否为安卓应用程序包;
14.若是,则删除所述源码中的第三方开发库。
15.在上述实现过程中,对待测软件包进行反编译获得源码,并判断源码是否为安卓应用程序包,若是则删除源码中的第三方lib库,以免对检测结果产生影响。
16.进一步地,所述对所述代码数据进行特征点提取,并生成特征数据,包括:
17.利用所述代码数据生成连续单词的特征向量;
18.基于所述特征向量提取特征点,并基于所述特征点生成特征数据。
19.在上述实现过程中,在混淆加密前后,语义连贯性和可读性将发生改变,基于此,
连续单词的特征向量在加密前后将发生改变,因此可通过检测特征向量来实现混淆加密的检测。
20.进一步地,所述将所述特征数据输入预设的n-gram语言模型,以判断所述待测软件包是否经过混淆加密,包括:
21.将所述特征数据输入预设的n-gram语言模型,并获取判断值;
22.若所述判断值在预设加密阈值范围内,则所述待测软件包已被混淆加密。
23.在上述实现过程中,n-gram语言模型可利用特征数据自行判断待测软件包是否使用了混淆加密,具体可通过阈值判断。
24.进一步地,在所述将所述特征数据输入预设的n-gram语言模型的步骤之前,所述方法还包括构建n-gram语言模型:
25.基于互联网获取软件包文件;
26.对所述软件包文件进行分析处理,以得到待训练数据;
27.对所述待训练数据进行混淆加密处理,以得到归一化数据;
28.分别获取所述待训练数据和所述归一化数据基于连续单词的特征向量;
29.对比所述特征向量并提取特征点,以生成训练特征数据;
30.基于机器学习库对所述训练特征数据进行多次训练,以生成n-gram语言模型。
31.在上述实现过程中,利用训练特征数据并通过机器学习生成判断阈值的n-gram语言模型,实现软件包的自动检测。
32.本技术实施例还提供一种软件包检测装置,应用于服务器,所述装置包括:
33.接收模块,用于接收待测软件包;
34.分析模块,用于对所述待测软件包进行分析处理,以获得代码数据;
35.特征提取模块,用于对所述代码数据进行特征点提取,并生成特征数据;
36.测试模块,用于将所述特征数据输入预设的n-gram语言模型,以判断所述待测软件包是否经过混淆加密。
37.在上述实现过程中,利用训练好的n-gram语言模型对软件包进行混淆加密检测,可完全代替人工检测,极大提升了检测效率,且检测结果是由检测模型动态生成,相比于其他检测工具内置检测阈值,更能够提高检测结果的准确率,可自动批量进行软件包加密检测,解决了现有方法容易导致误判的问题。
38.进一步地,所述分析模块包括:
39.反编译模块,用于对所述待测软件包进行反编译处理,以获取源码;
40.判断模块,用于判断所述源码是否为安卓应用程序包;
41.删除模块,用于若是安卓应用程序包,则删除所述源码中的第三方开发库。
42.在上述实现过程中,对待测软件包进行反编译获得源码,并判断源码是否为安卓应用程序包,若是则删除源码中的第三方lib库,以免对检测结果产生影响。
43.进一步地,所述特征提取模块包括:
44.特征向量生成模块,用于对所述代码数据提取连续单词的特征向量;
45.特征数据生成模块,用于基于所述特征向量提取特征点,并基于所述特征点生成特征数据。
46.在上述实现过程中,在混淆加密前后,语义连贯性和可读性将发生改变,基于此,
连续单词的特征向量在加密前后将发生改变,因此可通过检测特征向量来实现混淆加密的检测。
47.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的软件包检测方法。
48.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的软件包检测方法。
附图说明
49.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
50.图1为本技术实施例提供的一种软件包测试方法的流程图;
51.图2为本技术实施例提供的软件包自动检测流程图;
52.图3为本技术实施例提供的源码的预处理流程图;
53.图4为本技术实施例提供的特征提取流程图;
54.图5为本技术实施例提供的混淆加密判断流程图;
55.图6为本技术实施例提供的模型构建流程图;
56.图7为本技术实施例提供的通过机器学习生成检测模型的具体流程图;
57.图8为本技术实施例提供的一种软件包检测装置的结构框图;
58.图9为本技术实施例提供的另一种软件包检测装置的结构框图。
59.图标:
60.100-接收模块;200-分析模块;201-反编译模块;202-判断模块;203-删除模块;300-特征提取模块;301-特征向量生成模块;302-特征数据生成模块;400-测试模块;401-判断值获取模块;402-加密判断模块;410-模型构建模块。
具体实施方式
61.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
62.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
63.实施例1
64.请参看图1,图1为本技术实施例提供的一种软件包测试方法的流程图。该方法可以应用于服务器,可实现对软件包是否进行混淆加密的自动测试。该方法利用了混淆加密前后,代码的可读性和连贯性发生改变来进行检测的。该方法具体包括以下步骤:
65.步骤s100:接收待测软件包;
66.该待测软件包可以由用户或客户端发送至服务器,可批量进行软件包检测,对于
待测软件包的来源在此不做任何限定。
67.步骤s200:对所述待测软件包进行分析处理,以获得代码数据;
68.步骤s300:对所述代码数据进行特征点提取,并生成特征数据;
69.步骤s400:将所述特征数据输入预设的n-gram语言模型,以判断所述待测软件包是否经过混淆加密。
70.利用训练好的n-gram语言模型对软件包进行混淆加密检测,可完全代替人工检测,极大提升了检测效率,且检测结果是由检测模型动态生成,相比于其他检测工具内置检测阈值,更能够提高检测结果的准确率,可自动批量进行软件包加密检测,解决了现有方法容易导致误判的问题。
71.如图2所示,为软件包自动检测流程图,具体地:
72.其中,如图3所示,为源码的预处理流程图,步骤s200具体可以包括:
73.步骤s201:对所述待测软件包进行反编译处理,以获取源码;
74.步骤s202:判断所述源码是否为安卓应用程序包;
75.步骤s203:若是,则删除所述源码中的第三方开发库。
76.将待检测软件包上传至服务器中,通过反编译可获得待测软件包对应的源码。
77.再判断源码是否为安卓的apk文件(android application package,安卓应用程序包),如果源码是安卓应用程序包,则需要对其第三方开发库如第三方lib库进行删除处理,避免第三方开发库对检测结果产生影响,从而导致检测结果不准确。如果源码是否为安卓应用程序包,则可直接对源码(代码数据)进行特征提取。
78.如图4所示,为特征提取流程图,步骤s300具体可以包括以下步骤:
79.步骤s301:利用所述代码数据生成连续单词的特征向量;
80.步骤s302:基于所述特征向量提取特征点,并基于所述特征点生成特征数据。
81.在程序开发中,代码标识符的名称通常是有意义的,开发人员虽然可能遵循不同的规则进行命名,但是,这些有意义的名称均便于逆向工程师理解代码逻辑并快速定位目标函数。为了减少潜在的信息泄露,将标识符的名称使用无意义的字符串替换,也被称为混淆加密。
82.本技术主要是判断软件包是否使用了混淆加密,例如javascript比较出名的ob混淆加密,其主要的原理就是将javascript的源码的函数名称、变量名称变为无意义的字符,并按固定的架构调整代码,在源码中添加一些无意义的函数,从而在不改变代码原有功能的情况下,将源码混淆,从而改变源码的通顺性和可读性。
83.在本技术中,判断软件包是否使用混淆加密的主要逻辑是利用n-gram算法模型进行判断,而n-gram算法模型是一个语言模型,其主要的功能就是判断一个句子是否通畅,正常的代码是易于人阅读的,所以是具有可读性的。而经过混淆加密后的代码中的变量通常是无意义的,即在混淆加密前后,语义连贯性和可读性将发生改变,对应的连续单词的特征向量也会发生改变,因此可以通过n-gram算法模型判断代码是否使用了混淆加密。
84.使用n-gram算法扩建成3-gram^2算法,利用3-gram^2算法构建通用表达式来生成记录连续单词(语义连贯)的特征向量,利用特征向量提取特征点(对应于语义不连贯处),并生成基于此软件包的特征数据。
85.如图5所示,为混淆加密判断流程图,步骤s400具体可以包括以下步骤:
86.步骤s401:将所述特征数据输入预设的n-gram语言模型,并获取判断值;
87.步骤s402:若所述判断值在预设加密阈值范围内,则所述待测软件包已被混淆加密。
88.将特征数据输入训练好的n-gram语言模型,可得到一个判断值(概率值),将该判断值与预设的加密阈值进行比较,若在加密阈值范围内,则说明待测软件包进行了混淆加密。
89.该方法还包括构建n-gram语言模型,如图6所示,为模型构建流程图,构建n-gram语言模型具体包括以下步骤:
90.步骤s411:基于互联网获取软件包文件;
91.如图7所示,为通过机器学习生成检测模型的具体流程图。首先,可在互联网上下载大量的软件包文件,用来作为训练数据。具体地,可以下载各个语言的软件包文件,如java、python、安卓等,再将下载的软件包文件存放于固定的存储位置并进行分类。
92.步骤s412:对所述软件包文件进行分析处理,以得到待训练数据;
93.对软件包文件进行分析处理,首先判断是否是安卓软件包,如果是安卓软件包,需要对其第三方开发库进行一个删除处理,防止对模型训练产生影响。
94.步骤s413:对所述待训练数据进行混淆加密处理,以得到归一化数据;
95.在分析处理后,需要对待训练数据进行不同种类的混淆加密处理,因不是所有的在网络上下载的软件包文件都做了混淆加密处理,所以要对所有待训练数据进行一次混淆加密处理,即归一化处理。
96.步骤s414:分别获取所述待训练数据和所述归一化数据基于连续单词的特征向量;
97.步骤s415:对比所述特征向量并提取特征点,以生成训练特征数据;
98.混淆加密处理后,进行特征点提取,特征点提取主要是使用n-gram算法扩建3-gram^2算法构建通用表达式来生成记录连续单词的特征向量。为后续模型训练生成训练特征数据。
99.n-gram算法模型是一种语言模型(language model,lm),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。
100.混淆加密即在源码中加入无意义字符,因此,在混淆加密前后,连续单词的特征向量将会发生变化。因此,将混淆加密前后的特征向量进行对比,可在区别点处进行标注(特征点提取),从而获得训练特征数据。
101.该方法是一种基于深度学习的软件包混淆加密的自动检测方法,根据软件包文件混淆加密的特性,对训练数据进行了优化,并利用训练数据对n-gram算法模型进行了针对性训练,从而提高了n-gram算法模型的检测准确率。
102.步骤s416:基于机器学习库对训练特征数据进行多次训练,以生成n-gram语言模型。
103.示例地,n-gram模型基于pytorch进行模型训练,使用pytorch对训练特征数据进行多轮训练,生成检测模型,待后续做检测时调用。pytorch是一个开源的python机器学习库,基于torch,用于自然语言处理等应用程序,内部包含自动求导系统的深度神经网络,因
此可用于机器学习。
104.该方法可完全替代人工检测,自动批量地进行软件包加密检测,极大提升了检测效率;因检测结果是由检测模型动态生成的,与其他自动检测工具内置检测阈值相比,极大的提升了检测准确率,因此该方法解决了现有方法容易导致误判的问题。
105.实施例2
106.本技术实施例提供一种软件包检测装置,该装置应用于实施例1的软件包检测方法中的服务器,如图8所示,为软件包检测装置的结构框图,该装置包括但不限于:
107.接收模块100,用于接收待测软件包;
108.分析模块200,用于对所述待测软件包进行分析处理,以获得代码数据;
109.特征提取模块300,用于对所述代码数据进行特征点提取,并生成特征数据;
110.测试模块400,用于将所述特征数据输入预设的n-gram语言模型,以判断所述待测软件包是否经过混淆加密。
111.如图9所示,为另一种软件包检测装置的结构框图,在图8的基础上,分析模块200包括但不限于:
112.反编译模块201,用于对所述待测软件包进行反编译处理,以获取源码;
113.判断模块202,用于判断所述源码是否为安卓应用程序包;
114.删除模块203,用于若是安卓应用程序包,则删除所述源码中的第三方开发库。
115.对待测软件包进行反编译获得源码,并判断源码是否为安卓应用程序包,若是则删除源码中的第三方开发库,如第三方lib库,以免对检测结果产生影响。如果不是安卓应用程序包,则可直接对源码进行特征提取。
116.特征提取模块300包括但不限于:
117.特征向量生成模块301,用于对所述代码数据提取连续单词的特征向量;
118.特征数据生成模块302,用于基于所述特征向量提取特征点,并基于所述特征点生成特征数据。
119.在混淆加密前后,语义连贯性和可读性将发生改变,基于此,连续单词的特征向量在加密前后将发生改变,因此可通过检测特征向量来实现混淆加密的检测。
120.测试模块400包括但不限于:
121.判断值获取模块401,用于将所述特征数据输入预设的n-gram语言模型,并获取判断值;
122.加密判断模块402,用于若所述判断值在预设加密阈值范围内,则所述待测软件包已被混淆加密。
123.该装置还包括模型构建模块410,具体地,模型构建模块410用于:
124.基于互联网获取软件包文件;
125.对所述软件包文件进行分析处理,以得到待训练数据;
126.对所述待训练数据进行混淆加密处理,以得到归一化数据;
127.分别获取所述待训练数据和所述归一化数据基于连续单词的特征向量;
128.对比所述特征向量并提取特征点,以生成训练特征数据;
129.基于机器学习库对所述训练特征数据进行多次训练,以生成n-gram语言模型。
130.具体的训练过程在实施例1中已经详细说明,在此不再赘述。
131.利用训练好的n-gram语言模型对软件包进行混淆加密检测,可完全代替人工检测,极大提升了检测效率,且检测结果是由检测模型动态生成,相比于其他检测工具内置检测阈值,更能够提高检测结果的准确率,可自动批量进行软件包加密检测,解决了现有方法容易导致误判的问题。
132.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行实施例1所述的软件包检测方法。
133.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例1所述的软件包检测方法。
134.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
135.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
136.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
137.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
138.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
139.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1