CN107066302A - 缺陷检测方法、装置及服务终端 - Google Patents
缺陷检测方法、装置及服务终端 Download PDFInfo
- Publication number
- CN107066302A CN107066302A CN201710291779.0A CN201710291779A CN107066302A CN 107066302 A CN107066302 A CN 107066302A CN 201710291779 A CN201710291779 A CN 201710291779A CN 107066302 A CN107066302 A CN 107066302A
- Authority
- CN
- China
- Prior art keywords
- feature vector
- sample
- defect
- application program
- code files
- 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
Links
- 230000007547 defect Effects 0.000 title claims abstract description 189
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000007689 inspection Methods 0.000 title claims abstract description 42
- 239000013598 vector Substances 0.000 claims abstract description 165
- 238000001514 detection method Methods 0.000 claims abstract description 122
- 238000009434 installation Methods 0.000 claims abstract description 49
- 239000000284 extract Substances 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 35
- 238000000605 extraction Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012549 training Methods 0.000 claims description 10
- 230000002950 deficient Effects 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000004458 analytical method Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000007935 neutral effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及互联网技术领域,具体涉及一种缺陷检测方法、装置及服务终端,所述缺陷检测方法、缺陷检测装置应用于服务终端。该缺陷检测方法包括:对应用程序的安装包进行反编译得到字节码文件,编码所述字节码文件提取语义特征向量以及词频特征向量,对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量,将综合特征向量设置为预定长度,使用缺陷检测模型对设置为预定长度的综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。进而通过分析应用程序的安装包判断出了应用程序是否存在缺陷,避免使用应用程序的源代码文件,使得检测更加方便,同时使用安装包对应用程序的缺陷检测具有更高的检测精度。
Description
技术领域
本发明涉及互联网技术领域,具体而言,涉及一种缺陷检测方法、装置及服务终端。
背景技术
应用程序缺陷可以引起很多安全问题,例如预先设计运行路径中的偏差,内存溢出,运行时异常等。尤其是在要求低容错率的业务中,如金融、电力工业等,如果应用程序缺陷,将导致严重后果。同时,随着大量应用程序从个人计算机时代到移动互联网时代的涌入,敏捷开发模型的应用和快速版本升级的需求,为了实现更高速的需求,开发者倾向于忽略可能导致更多安全问题的缺陷。并且移动应用的分布和传播远远比电脑应用程序更快速,由于更广的用户规模和更高的使用频率,应用程序缺陷引起的后果可能更加严峻。
现有的应用程序缺陷预测模型已经被提出,但现有的应用程序缺陷预测模型预测对象主要针对应用程序的源代码,由于应用程序版权和源代码保护问题,在应用程序缺陷预测模型应用于对应用程序缺陷预测时,往往不能直接获得应用程序的源代码。因此,提供一种不针对应用程序的源代码,同时又能实现对应用程序缺陷进行预测的方法十分必要。
发明内容
本发明的目的在于提供一种缺陷检测方法,以实现通过对应用程序安装包的检测以判断应用程序是否存在缺陷,以避免使用应用程序的源代码,同时提高了检测精度。
本发明的另一目的在于提供一种缺陷检测装置,以实现通过对应用程序安装包的检测以判断应用程序是否存在缺陷,以避免使用应用程序的源代码,同时提高了检测精度。
本发明的另一目的在于提供一种服务终端,以实现通过对应用程序安装包的检测以判断应用程序是否存在缺陷,以避免使用应用程序的源代码,同时提高了检测精度。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种缺陷检测方法,所述缺陷检测方法应用于服务终端,所述缺陷检测方法应用于对应用程序进行缺陷检测,所述方法包括:
对所述应用程序的安装包进行反编译得到字节码文件;
遍历所述字节码文件提取语义特征向量以及词频特征向量;
对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
将所述综合特征向量设置为预定长度;
使用缺陷检测模型对设置为预定长度后的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
第二方面,本发明实施例还提供了一种缺陷检测装置,所述缺陷检测装置应用于服务终端,所述缺陷检测装置应用于对应用程序进行缺陷检测,所述装置包括:
第一编译模块,用于对所述应用程序的安装包进行反编译得到字节码文件;
第一提取模块,用于遍历所述字节码文件提取语义特征向量以及词频特征向量;
第一拼接模块,用于对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
第一设置模块,用于将所述综合特征向量设置为预定长度;
检测模块,用于使用缺陷检测模型对设置为预定长度的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
第三方面,本发明实施例还提供了一种服务终端,所述服务终端应用于对应用程序进行缺陷检测,所述服务终端包括:
存储器;
处理器;以及
缺陷检测装置,所述缺陷检测装置安装于所述存储器中并包括一个或多个由所述处理器执行的软件功能模块,所述缺陷检测装置包括:
第一编译模块,用于对所述应用程序的安装包进行反编译得到字节码文件;
第一提取模块,用于遍历所述字节码文件提取语义特征向量以及词频特征向量;
第一拼接模块,用于对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
第一设置模块,用于将所述综合特征向量设置为预定长度;
检测模块,用于使用缺陷检测模型对设置为预定长度的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
本发明实施例提供的一种缺陷检测方法、装置及服务终端,所述缺陷检测方法、缺陷检测装置均应用于服务终端,该缺陷检测方法包括:对应用程序的安装包进行反编译得到字节码文件,编码所述字节码文件提取语义特征向量以及词频特征向量,对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量,将综合特征向量设置为预定长度,使用缺陷检测模型对设置为预定长度的综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。进而通过分析应用程序的安装包判断出了应用程序是否存在缺陷,避免使用应用程序的源代码文件,使得检测更加方便,同时使用安装包对应用程序的缺陷检测具有更高的检测精度。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的一种服务终端的结构示意图。
图2示出了本发明实施例提供的一种缺陷检测方法的流程图。
图3示出了本发明实施例提供的一种缺陷检测方法的子步骤的流程图。
图4示出了本发明实施例提供的另一种缺陷检测方法的的流程图。
图5示出了本发明实施例提供的另一种缺陷检测方法的子步骤的流程图。
图6示出了本发明实施例提供的另一种缺陷检测方法的另一子步骤的流程图。
图7示出了本发明实施例提供的另一种缺陷检测方法的另一子步骤的流程图。
图8示出了本发明实施例提供的一种缺陷检测装置的结构示意图。
图9示出了本发明实施例提供的一种缺陷检测装置的子模块的结构示意图。
图示:100-服务终端;110-缺陷检测装置;120-存储器;130-处理器;111-第一编译模块;112-第一提取模块;113-第一拼接模块;114-第一设置模块;115-预设模块;116-第一训练模块;117-检测模块;1161-获取模块;1162-标记模块;1163-第二编译模块;1164-第二提取模块;1165-第二拼接模块;1166-第二设置模块;1167-第二训练模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本发明实施例中缺陷检测方法、缺陷检测装置110均应用于服务终端100,该服务终端100可以是,但不限于,台式电脑或平板电脑。请参照图1,是本发明实施例提供的一种服务终端100的结构示意图。该服务终端100包括缺陷检测装置110、存储器120以及处理器130。
该存储器120、处理器130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述缺陷检测装置110包括至少一个可以软件或固件(firmware)的形式存储于存储器120中或固化在服务终端100的操作系统(operating system,OS)中的软件功能模块。处理器130用于执行存储器120中存储的可执行模块,例如缺陷检测装置110包括的软件功能模块及计算机程序等。
其中,存储器120可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器120用于存储程序,处理器130在接收到执行指令后,执行所述程序。
请参照图2,是本发明实施例提供的一种缺陷检测方法的流程图,该缺陷检测方法应用于服务终端100,该缺陷检测方法应用于对应用程序进行缺陷检测,该缺陷检测方法包括:
步骤S110,对所述应用程序的安装包进行反编译得到字节码文件。
所述应用程序的安装包通常包括dex文件(安卓Dalvik虚拟机下的二进制可执行文件)、资源文件(图片、声音等)以及签名。通过反编译工具对所述应用程序的安装包进行反编译,即对安装包内的所有文件进行反编译得到字节码文件。此处的字节码文件为smali文件,即安卓系统Dalvik虚拟机的字节码文件,对所述应用程序的安装包反编译后,取dex文件反编译后的文件为分析对象,即为smali文件。在本发明实施例中,通过apktool反编译工具对应用程序的安装包进行反编译,但不限于此,还可以通过其他反编译工具对应用程序的安装包进行反编译。同时,在本发明实施例中,所述应用程序指Android上的应用程序,但不限于此,该应用程序还可以为电脑或其他电子设备上的应用程序。
步骤S120,遍历所述字节码文件提取语义特征向量以及词频特征向量。
先遍历所述字节码文件分析所述字节码文件中每一个词出现的次数,分析每一个词出现的次数占总次数的比例,得到词频特征向量。再通过遍历所述字节码文件,得到包含所述字节码文件结构和函数调用关系的结构树,通过分析结构树,将表征二维结构的结构树转换为一维数值集合,该一维数值集合即为语义特征向量。
请参照图3,是本发明实施例提供的缺陷检测方法的步骤S120的子步骤的流程图。
步骤S121,统计所述字节码文件中每一个词出现的次数。
所述字节码文件为smali文件,smali文件为由一系列程序代码组成的,可实现相应功能的文件,所述词为该smali文件中出现的函数或变量,如if或move。统计所述字节码文件中每一个词出现的次数,同时统计所有词出现的总次数。
步骤S122,每一个所述词出现的次数与总次数的比例依次排列为所述词频特征向量。
由步骤S121得到了在字节码文件中每一个词出现的次数以及所有词出现的总次数,计算每一个词出现的次数占总次数的比例,如1/2、1/3、1/4。所述比例依次排列形成的集合即为词频特征向量,如{1/2 1/3 1/4}。
步骤S123,生成所述字节码文件的结构树。
所述字节码文件,即smali文件,为一系列程序代码按照一定规则组成的能实现特定功能的程序代码文件,则字节码文件的结构树包含有函数结构关系及调用关系。
步骤S124,通过语义提取算法遍历所述结构树,将所述结构树每一个节点的词编译为预定数值。
该语义提取算法是基于树深度优先搜索算法,遍历结构树的每个父节点的子节点,进而遍历结构树的所有节点,将结构树上的每一个节点的词编译为预定数值。所述预定数值可以预先定义,如结构树上的节点if,节点if对应的数值可以设置为1,容易理解的,其余节点可以设置为不同数值。进而将结构树上所有节点编译为了不同的预定数值。
步骤S125,将多个所述预定数值按照预定的结构排列成语义特征向量。
由步骤S124得到了结构树上每一个节点对应的预定数值,将得到的多个预定数值按照预定的存储结构依次排列得到语义特征向量。该语义特征向量是结构树的数值表现方式,因此该语义特征向量包含了字节码文件中函数包含关系及调用关系。
步骤S130,对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量。
由步骤S120获取了语义特征向量以及词频特征向量,将获取的词频特征向量和语义特征向量进行首尾拼接得到综合特征向量。
步骤S140,将所述综合特征向量设置为预定长度。
在本发明实施例中,通过自编码器将所述综合特征向量设置为预定长度。该预定长度为缺陷检测模型内对输入的综合特征向量规定的长度,该预定的长度可通过自编码器根据实际需要进行设置。
步骤S150,使用缺陷检测模型对设置为预定长度后的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
将设置为预定长度的综合特征向量输入缺陷检测模型,缺陷检测模型根据输入的综合特征向量,查找该综合特征向量可能对应的缺陷,进而判断具有该综合特征向量的应用程序是否存在缺陷。
请参照图4,是本发明实施例提供的另一种缺陷检测方法的流程图。该缺陷检测方法应用于服务终端100,该缺陷检测方法包括:
步骤S210,获取所述应用程序的安装包。
获取需要进行缺陷检测的应用程序的安装包。
步骤S220,对所述应用程序的安装包进行反编译得到字节码文件。
所述应用程序的安装包通常包括dex文件(安卓Dalvik虚拟机下的二进制可执行文件)、资源文件(图片、声音等)以及签名。通过反编译工具对所述应用程序的安装包进行反编译,即对安装包内的所有文件进行反编译得到字节码文件。此处的字节码文件为smali文件,即安卓系统Dalvik虚拟机的字节码文件,对所述应用程序的安装包反编译后,取dex文件反编译后的文件为分析对象,即为smali文件。在本发明实施例中,通过apktool反编译工具对应用程序的安装包进行反编译,但不限于此,还可以通过其他反编译工具对应用程序的安装包进行反编译。同时,在本发明实施例中,所述应用程序指Android上的应用程序,但不限于此,该应用程序还可以为电脑或其他电子设备上的应用程序。
步骤S230,遍历所述字节码文件提取语义特征向量以及词频特征向量。
先遍历所述字节码文件分析所述字节码文件中每一个词出现的次数,分析每一个词出现的次数占总次数的比例,得到词频特征向量。再通过遍历所述字节码文件,得到包含所述字节码文件结构和函数调用关系的结构树,通过分析结构树,将表征二维结构的结构树转换为一维数值集合,该一维数值集合即为语义特征向量。
请参照图5,是本发明实施例提供的另一种缺陷检测方法的步骤S230的子步骤的流程图。
步骤S231,统计所述字节码文件中每一个词出现的次数。
所述字节码文件为smali文件,smali文件为由一系列程序代码组成的,可实现相应功能的文件,所述词为该smali文件中出现的函数或变量,如if或move。统计所述字节码文件中每一个词出现的次数,同时统计所有词出现的总次数。
步骤S232,每一个所述词出现的次数与总次数的比例依次排列为所述词频特征向量。
由步骤S231得到了在字节码文件中每一个词出现的次数以及所有词出现的总次数,计算每一个词出现的次数占总次数的比例,如1/2、1/3、1/4。所述比例依次排列形成的集合即为词频特征向量,如{1/2 1/3 1/4}。
步骤S233,生成所述字节码文件的结构树。
所述字节码文件,即smali文件,为一系列程序代码按照一定规则组成的能实现特定功能的程序代码文件,则字节码文件的结构树包含有函数结构关系及调用关系。
步骤S234,通过语义提取算法遍历所述结构树,将所述结构树每一个节点的词编译为预定数值。
该语义提取算法是基于树深度优先搜索算法,遍历结构树的每个父节点的子节点,进而遍历结构树的所有节点,将结构树上的每一个节点的词编译为预定数值。所述预定数值可以预先定义,如结构树上的节点if,节点if对应的数值可以设置为1,容易理解的,其余节点可以设置为不同数值。进而将结构树上所有节点编译为了不同的预定数值。
步骤S235,将多个所述预定数值按照预定的结构排列成语义特征向量。
由步骤S234得到了结构树上每一个节点对应的预定数值,将得到的多个预定数值按照预定的存储结构依次排列得到语义特征向量。该语义特征向量是结构树的数值表现方式,因此该语义特征向量包含了字节码文件中函数包含关系及调用关系。
步骤S240,对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量。
将获取的词频特征向量和语义特征向量进行首尾拼接得到综合特征向量。
步骤S250,将所述综合特征向量设置为预定长度。
在本发明实施例中,通过自编码器将所述综合特征向量设置为预定长度。该预定长度为缺陷检测模型内对输入的综合特征向量规定的长度,该预定的长度可通过自编码器根据实际需要进行设置。
步骤S260,预设检测模型。
通过步骤S250获得了待检测缺陷的为预定长度的综合特征向量,对该综合特征向量进行检测需要相关的检测模型来实现。可选的模型有支持向量机、神经网络等,在本发明实施例中,该检测模型为神经网络,但不限于此,该检测模型还可以为其他能实现相应功能的模型。
步骤S270,对所述检测模型进行训练得到所述缺陷检测模型。
预设检测模型后,该检测模型并不能实现缺陷检测的功能,该检测模型只是一个初步模型,因此需要大量的样本对该检测模型进行训练得到缺陷检测模型,以对应用程序进行缺陷检测,判断该应用程序是否存在缺陷。
请参照图6,是本发明实施例提供的另一种缺陷检测方法的步骤S270的子步骤的流程图。
步骤S271,获取多个检测样本,所述检测样本包括多个应用程序的源代码文件及其所述源代码文件对应的样本安装包。
获取多个检测样本,该检测样本每一个均包括该应用程序的源代码文件及其该源代码文件对应的样本安装包。在本发明实施例中,该检测样本的应用程序指的是Android系统上的应用程序,通过对大量Android上的应用程序进行训练得到能够检测Android上其他应用程序是否存在缺陷的缺陷检测模型。但不限于此,该检测样本的应用程序还可以为电脑上的应用程序,可以通过对大量电脑上的应用程序进行训练,进而得到能够检测电脑上的应用程序是否存在缺陷的缺陷检测模型,容易理解的,该检测样本的应用程序还可以为iOS系统上的应用程序。
步骤S272,对多个源代码文件进行扫描以判断所述多个源代码文件是否有缺陷,对存在缺陷的源代码文件标记缺陷标记,对不存在缺陷的源代码文件标记无缺陷标记。
利用静态分析工具对每一个检测样本的应用程序的源代码文件进行扫描,判断该源代码文件是否存在缺陷。在本发明实施例中,该静态分析工具为checkmarx工具对多个源代码文件进行静态扫描,以分析所述多个源代码文件是否存在缺陷,但不限于此,该静态分析工具还可以为其他能够实现扫描功能的工具。同时,对存在缺陷的源代码文件标记缺陷标记,对不存在缺陷的源代码文件标记无缺陷标记。静态分析工具在对多个源代码文件进行扫描时,将根据预设的规则分析判断扫描的源代码文件是否存在或是否可能存在缺陷,并进行标记。该缺陷标记可以是0,该无缺陷标记可以是1,但不限于此,该缺陷标记和无缺陷标记可以根据实际需要设置。
步骤S273,对多个样本安装包进行反编译得到多个样本字节码文件。
由于有多个检测样本,因此对每一个检测样本的样本安装包均将进行反编译得到对应的样本字节码文件。具体为,所述应用程序的样本安装包通常包括dex文件(安卓Dalvik虚拟机下的二进制可执行文件)、资源文件(图片、声音等)以及签名。通过反编译工具对所述应用程序的样本安装包进行反编译,即对样本安装包内的所有文件进行反编译。此处的样本字节码文件为smali文件,即安卓系统Dalvik虚拟机的字节码文件,对所述应用程序的样本安装包反编译后,取dex文件反编译后的文件为分析对象,即为smali文件。在本发明实施例中,通过apktool反编译工具对应用程序的安装包进行反编译,但不限于此,还可以通过其他反编译工具对应用程序的样本安装包进行反编译。
步骤S274,遍历每一个所述样本字节码文件提取样本语义特征向量以及样本词频特征向量。
通过步骤S273获得了多个样本字节码文件,对遍历每一个样本字节码文件提取每一个样本字节码文件的样本语义特征向量以及样本词频特征向量。
请参照图7,是本发明实施例提供的另一种缺陷检测方法的步骤S274的子步骤的流程图。
步骤S2741,统计所述字节码文件中每一个词出现的次数。
所述字节码文件为smali文件,smali文件为由一系列程序代码组成的,可实现相应功能的文件,所述词为该smali文件中出现的函数或变量,如if或move。统计所述字节码文件中每一个词出现的次数,同时统计所有词出现的总次数。
步骤S2742,每一个所述词出现的次数与总次数的比例依次排列为所述样本词频特征向量。
由步骤S2741得到了在字节码文件中每一个词出现的次数以及所有词出现的总次数,计算每一个词出现的次数占总次数的比例,如1/2、1/3、1/4。所述比例依次排列形成的集合即为样本词频特征向量,如{1/2 1/3 1/4}。
步骤S2743,生成所述样本字节码文件的结构树。
所述字节码文件,即smali文件,为一系列程序代码按照一定规则组成的能实现特定功能的程序代码文件,则字节码文件的结构树包含有函数结构关系及调用关系。
步骤S2744,通过语义提取算法遍历所述结构树,将所述结构树每一个节点的词编译为预定数值。
该语义提取算法是基于树深度优先搜索算法,遍历结构树的每个父节点的子节点,进而遍历结构树的所有节点,将结构树上的每一个节点的词编译为预定数值。所述预定数值可以预先定义,如结构树上的节点if,节点if对应的数值可以设置为1,容易理解的,其余节点可以设置为不同数值。进而将结构树上所有节点编译为了不同的预定数值。
步骤S2745,将多个所述预定数值按照预定的结构排列成样本语义特征向量。
由步骤S2744得到了结构树上每一个节点对应的预定数值,将得到的多个预定数值按照预定的存储结构依次排列得到样本语义特征向量。该样本语义特征向量是结构树的数值表现方式,因此该样本语义特征向量包含了字节码文件中函数包含关系及调用关系。
步骤S275,将每一个所述样本字节码文件的样本语义特征向量以及样本词频特征向量进行拼接得到多个样本综合特征向量。
通过步骤S274得到了多个样本字节码文件的样本语义特征向量以及样本词频特征向量,将每一个样本字节码文件对应的样本语义特征向量以及样本词频特征向量进行收尾拼接得到样本综合特征向量,进而得到多个样本综合特征向量。
步骤S276,将所述多个样本综合特征向量设置为预定长度。
由于检测模型要求输入的样本综合特征向量长度一致,因此通过自编码器将多个样本综合特征向量均设置为预定长度,该预定长度可以根据实际需要进行设置。
步骤S277,使用设置为预定长度的所述多个样本综合特征向量以及标记的所述多个源代码文件对所述检测模型进行训练得到缺陷检测模型。
将每一个检测样本的应用程序对应的样本综合特征向量以及标记的源代码文件对检测模型依次进行训练,该检测模型将记录不同的样本综合特征向量可能对应的不同的缺陷,进而使得需检测新的应用程序是否存在缺陷时,只需要输入该应用程序的综合特征向量,即可推断该应用程序可能存在的缺陷。通过大量检测样本对检测模型进行训练得到缺陷检测模型,检测样本的数量越大,该检测模型的对应用程序的缺陷预测更精准。
步骤S280,使用所述缺陷检测模型对设置为预定长度后的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
通过步骤S270获得了缺陷检测模型,将设置为预定长度后的综合特征向量输入该缺陷检测模型,该缺陷检测模对该综合特征向量进行分析,查找该综合特征向量对应的或可能的缺陷,进而判断该应用程序是否存在缺陷。
请参照图8,是本发明实施例提供的一种缺陷检测装置110的结构示意图,该缺陷检测装置110应用于服务终端100,该缺陷检测装置110包括:
第一编译模块111,用于对所述应用程序的安装包进行反编译得到字节码文件。
在本发明实施例中,步骤S110、S220可以由第一编译模块111执行。
第一提取模块112,用于遍历所述字节码文件提取语义特征向量以及词频特征向量。
在本发明实施例中,步骤S120、步骤S121~S125、步骤S230、步骤S231~S235可以由第一提取模块112执行。
第一拼接模块113,用于对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量。
在本发明实施例中,步骤S130、S240可以由第一拼接模块113执行。
第一设置模块114,用于将所述综合特征向量设置为预定长度。
在本发明实施例中,步骤S140、S250可以由第一设置模块114执行。
检测模块117,用于使用所述缺陷检测模型对设置为预定长度的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
在本发明实施例中,步骤S150、S280可以由检测模块117执行。
该缺陷检测装置110还包括:
预设模块115,用于预设检测模型。
在本发明实施例中,步骤S260可以由预设模块115执行。
第一训练模块116,用于对所述检测模型进行训练得到所述缺陷检测模型。
在本发明实施例中,步骤S270可以由第一训练模块116执行。
请参照图9,是本发明实施例提供的一种缺陷检测装置110的子模块的结构示意图。其中第一训练模块116包括:
获取模块1161,用于获取多个检测样本,所述检测样本包括多个应用程序的源代码文件及其所述源代码文件对应的样本安装包。
在本发明实施例中,步骤S271可以由获取模块1161执行。
标记模块1162,用于对多个源代码文件进行扫描以判断所述多个源代码文件是否存在缺陷,对存在缺陷的源代码标记缺陷标记,对不存在缺陷的源代码文件标记无缺陷标记。
在本发明实施例中,步骤S272可以由标记模块1162执行。
第二编译模块1163,用于对多个样本安装包进行反编译得到多个样本字节码文件。
在本发明实施例中,步骤S273可以由第二编译模块1163执行。
第二提取模块1164,用于遍历每一个所述样本字节码文件提取样本语义特征向量以及样本词频特征向量。
在本发明实施例中,步骤S274、步骤S2741~S2745可以由第二提取模块1164执行。
第二拼接模块1165,用于将每一个所述样本字节码文件的样本语义特征向量以及样本词频特征向量进行拼接得到多个样本综合特征向量。
在本发明实施例中,步骤S275可以由第二拼接模块1165执行。
第二设置模块1166,用于将所述多个样本综合特征向量设置为预定长度。
在本发明实施例中,步骤S276可以由第二设置模块1166执行。
第二训练模块1167,用于使用设置为预定长度的所述多个样本综合特征向量以及标记的所述多个源代码文件对所述检测模型进行训练得到缺陷检测模型。
在本发明实施例中,步骤S277可以由第二训练模块1167执行。
该缺陷检测装置110已经在缺陷检测方法部分详细描述,在此不再赘述,同时第一编译模块111与第二编译模块1163实现的功能可以由相同的程序代码或不同的程序代码执行,第一提取模块112与第二提取模块1164实现的功能可以由相同的程序代码或不同的程序代码执行,第一拼接模块113与第二拼接模块1165实现的功能可以由相同的程序代码或不同的程序代码执行,第一设置模块114与第二设置模块1166实现的功能可以由相同的程序代码或不同的程序代码执行。
综上所述,本发明实施例提供一种缺陷检测方法、装置及服务终端,该缺陷检测方法及缺陷检测装置均应用于服务终端,该服务终端包括缺陷检测模型,该缺陷检测模型用于对输入的应用程序进行缺陷检测。当需要对应用程序判断其是否存在缺陷时,对所述应用程序的安装包进行反编译得到字节码文件,遍历所述字节码文件提取语义特征向量以及词频特征向量,将所述语义特征向量以及词频特征向量进行拼接得到综合特征向量,同时将综合特征向量设置为预定长度。使用缺陷检测模型对设置好预定长度的综合特征向量进行检测,找寻该综合特征向量对应的或可能存在的缺陷,进而判断依此对该应用程序进行判断。本方案直接对应用程序的安装包进行分析,避免获取应用程序的源代码,进而对应用程序的源代码进行分析,从而更加便捷,同时对应用程序的安装包进行分析,精准度更高。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种缺陷检测方法,所述缺陷检测方法应用于服务终端,所述缺陷检测方法应用于对应用程序进行缺陷检测,其特征在于,所述方法包括:
对所述应用程序的安装包进行反编译得到字节码文件;
遍历所述字节码文件提取语义特征向量以及词频特征向量;
对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
将所述综合特征向量设置为预定长度;
使用缺陷检测模型对设置为预定长度后的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
2.如权利要求1所述的缺陷检测方法,其特征在于,所述遍历所述字节码文件提取词频特征向量的步骤包括:
统计所述字节码文件中每一个词出现的次数;
每一个所述词出现的次数与总次数的比例依次排列为所述词频特征向量。
3.如权利要求1所述的缺陷检测方法,其特征在于,所述遍历所述字节码文件提取语义特征向量的步骤包括:
生成所述字节码文件的结构树;
通过语义提取算法遍历所述结构树,将所述结构树每一节点的词编译为预定数值;
将多个所述预定数值按照预定的结构排列形成语义特征向量。
4.如权利要求1所述的缺陷检测方法,其特征在于,所述使用所述缺陷检测模型对设置为预定长度后的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷之前还包括步骤:
预设检测模型;
对所述检测模型进行训练得到所述缺陷检测模型。
5.如权利要求2所述的缺陷检测方法,其特征在于,对所述检测模型进行训练得到所述缺陷检测模型的步骤包括:
获取多个检测样本,所述检测样本包括多个应用程序的源代码文件及其所述源代码文件对应的样本安装包;
对多个源代码文件进行扫描以判断所述多个源代码文件是否有缺陷,对存在缺陷的源代码文件标记缺陷标记,对不存在缺陷的源代码文件标记无缺陷标记;
对多个样本安装包进行反编译得到多个样本字节码文件;
遍历每一个所述样本字节码文件提取样本语义特征向量以及样本词频特征向量;
将每一个所述样本字节码文件的样本语义特征向量以及样本词频特征向量进行拼接得到多个样本综合特征向量;
将所述多个样本综合特征向量设置为预定长度;
使用设置为预定长度的所述多个样本综合特征向量以及标记的所述多个源代码文件对所述检测模型进行训练得到缺陷检测模型。
6.如权利要求1所述的缺陷检测方法,其特征在于,所述方法还包括:
获取所述应用程序的安装包。
7.一种缺陷检测装置,所述缺陷检测装置应用于服务终端,所述缺陷检测装置应用于对应用程序进行缺陷检测,其特征在于,所述装置包括:
第一编译模块,用于对所述应用程序的安装包进行反编译得到字节码文件;
第一提取模块,用于遍历所述字节码文件提取语义特征向量以及词频特征向量;
第一拼接模块,用于对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
第一设置模块,用于将所述综合特征向量设置为预定长度;
检测模块,用于使用缺陷检测模型对设置为预定长度的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
8.如权利要求7所述的缺陷检测装置,其特征在于,所述装置还包括:
预设模块,用于预设检测模型;
第一训练模块,用于对所述检测模型进行训练得到所述缺陷检测模型。
9.如权利要求8所述的缺陷检测装置,其特征在于,所述第一训练模块包括:
获取模块,用于获取多个检测样本,所述检测样本包括多个应用程序的源代码文件及其所述源代码文件对应的样本安装包;
标记模块,用于对多个源代码文件进行扫描以判断所述多个源代码文件是否存在缺陷,对存在缺陷的源代码标记缺陷标记,对不存在缺陷的源代码文件标记无缺陷标记;
第二编译模块,用于对多个样本安装包进行反编译得到多个样本字节码文件;
第二提取模块,用于遍历每一个所述样本字节码文件提取样本语义特征向量以及样本词频特征向量;
第二拼接模块,用于将每一个所述样本字节码文件的样本语义特征向量以及样本词频特征向量进行拼接得到多个样本综合特征向量;
第二设置模块,用于将所述多个样本综合特征向量设置为预定长度;
第二训练模块,用于使用设置为预定长度的所述多个样本综合特征向量以及标记的所述多个源代码文件对所述检测模型进行训练得到缺陷检测模型。
10.一种服务终端,所述服务终端应用于对应用程序进行缺陷检测,其特征在于,所述服务终端包括:
存储器;
处理器;以及
缺陷检测装置,所述缺陷检测装置安装于所述存储器中并包括一个或多个由所述处理器执行的软件功能模块,所述缺陷检测装置包括:
第一编译模块,用于对所述应用程序的安装包进行反编译得到字节码文件;
第一提取模块,用于遍历所述字节码文件提取语义特征向量以及词频特征向量;
第一拼接模块,用于对所述词频特征向量和所述语义特征向量进行拼接得到综合特征向量;
第一设置模块,用于将所述综合特征向量设置为预定长度;
检测模块,用于使用缺陷检测模型对设置为预定长度的所述综合特征向量进行缺陷检测以判断所述应用程序是否存在缺陷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710291779.0A CN107066302B (zh) | 2017-04-28 | 2017-04-28 | 缺陷检测方法、装置及服务终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710291779.0A CN107066302B (zh) | 2017-04-28 | 2017-04-28 | 缺陷检测方法、装置及服务终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066302A true CN107066302A (zh) | 2017-08-18 |
CN107066302B CN107066302B (zh) | 2019-11-05 |
Family
ID=59605209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710291779.0A Expired - Fee Related CN107066302B (zh) | 2017-04-28 | 2017-04-28 | 缺陷检测方法、装置及服务终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066302B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427190A (zh) * | 2019-07-31 | 2019-11-08 | 中国工商银行股份有限公司 | 应用程序的识别方法及其装置、电子设备和介质 |
CN111338915A (zh) * | 2020-05-15 | 2020-06-26 | 北京必示科技有限公司 | 动态告警定级方法、装置、电子设备以及存储介质 |
CN111679926A (zh) * | 2020-05-25 | 2020-09-18 | 中国工商银行股份有限公司 | 内存溢出检测方法及系统 |
CN112711424A (zh) * | 2019-10-25 | 2021-04-27 | 腾讯科技(深圳)有限公司 | 应用程序的风险问题确定方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411687A (zh) * | 2011-11-22 | 2012-04-11 | 华北电力大学 | 未知恶意代码的深度学习检测方法 |
CN105224463A (zh) * | 2015-10-28 | 2016-01-06 | 南京大学 | 一种基于崩溃栈数据的软件缺陷代码定位方法 |
WO2017049800A1 (zh) * | 2015-09-23 | 2017-03-30 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
-
2017
- 2017-04-28 CN CN201710291779.0A patent/CN107066302B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411687A (zh) * | 2011-11-22 | 2012-04-11 | 华北电力大学 | 未知恶意代码的深度学习检测方法 |
WO2017049800A1 (zh) * | 2015-09-23 | 2017-03-30 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
CN105224463A (zh) * | 2015-10-28 | 2016-01-06 | 南京大学 | 一种基于崩溃栈数据的软件缺陷代码定位方法 |
Non-Patent Citations (1)
Title |
---|
杨宏宇等: ""基于改进随机森林算法的Android恶意软件检测"", 《通信学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427190A (zh) * | 2019-07-31 | 2019-11-08 | 中国工商银行股份有限公司 | 应用程序的识别方法及其装置、电子设备和介质 |
CN110427190B (zh) * | 2019-07-31 | 2023-05-26 | 中国工商银行股份有限公司 | 应用程序的识别方法及其装置、电子设备和介质 |
CN112711424A (zh) * | 2019-10-25 | 2021-04-27 | 腾讯科技(深圳)有限公司 | 应用程序的风险问题确定方法、装置及存储介质 |
CN112711424B (zh) * | 2019-10-25 | 2024-06-11 | 腾讯科技(深圳)有限公司 | 应用程序的风险问题确定方法、装置及存储介质 |
CN111338915A (zh) * | 2020-05-15 | 2020-06-26 | 北京必示科技有限公司 | 动态告警定级方法、装置、电子设备以及存储介质 |
CN111338915B (zh) * | 2020-05-15 | 2020-09-01 | 北京必示科技有限公司 | 动态告警定级方法、装置、电子设备以及存储介质 |
CN111679926A (zh) * | 2020-05-25 | 2020-09-18 | 中国工商银行股份有限公司 | 内存溢出检测方法及系统 |
CN111679926B (zh) * | 2020-05-25 | 2023-08-15 | 中国工商银行股份有限公司 | 内存溢出检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107066302B (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110764993A (zh) | 自动化测试方法及终端设备 | |
CN105373478B (zh) | 自动化测试方法和系统 | |
CN109871326A (zh) | 一种脚本录制的方法和装置 | |
CN110602045B (zh) | 一种基于特征融合和机器学习的恶意网页识别方法 | |
CN107066302B (zh) | 缺陷检测方法、装置及服务终端 | |
CN112860841A (zh) | 一种文本情感分析方法、装置、设备及存储介质 | |
CN111611797B (zh) | 基于Albert模型的预测数据标注的方法、装置及设备 | |
CN109308254A (zh) | 一种测试方法、装置及测试设备 | |
CN108804304B (zh) | 测试用例生成方法及装置、存储介质、电子设备 | |
CN102043720A (zh) | 利用sql语句自动生成测试数据的方法和装置 | |
CN103235757B (zh) | 基于自动化造数对输入域测试对象进行测试的装置和方法 | |
CN116521512A (zh) | 代码的精准测试方法、装置、电子设备及计算机可读介质 | |
CN105630678B (zh) | 一种智能电能表软件的可靠性检测仪及其检测方法 | |
CN110990285A (zh) | 一种ui自动化测试方法及装置 | |
CN104750604A (zh) | 浏览器兼容性测试案例的生成方法和装置 | |
CN117724980A (zh) | 软件框架性能的测试方法、装置、电子设备和存储介质 | |
US10546080B1 (en) | Method and system for identifying potential causes of failure in simulation runs using machine learning | |
CN104331361A (zh) | 一种用于白盒测试覆盖率计算可视化的测试装置及方法 | |
CN117707983A (zh) | 测试用例代码生成方法及相关设备 | |
CN111858377A (zh) | 测试脚本的质量评价方法、装置、电子设备及存储介质 | |
CN113901094B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN105677557A (zh) | 核电软件测试系统和方法 | |
CN115168575A (zh) | 应用于审计领域的主语补全方法及相关设备 | |
CN110083807B (zh) | 合同的修改影响自动预测方法、装置、介质及电子设备 | |
CN111143220B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191105 |