CN108681670A - 基于细粒度特征的Android恶意应用检测的方法及装置 - Google Patents
基于细粒度特征的Android恶意应用检测的方法及装置 Download PDFInfo
- Publication number
- CN108681670A CN108681670A CN201810289216.2A CN201810289216A CN108681670A CN 108681670 A CN108681670 A CN 108681670A CN 201810289216 A CN201810289216 A CN 201810289216A CN 108681670 A CN108681670 A CN 108681670A
- Authority
- CN
- China
- Prior art keywords
- permission
- api
- detected
- application programs
- android application
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开一种基于细粒度特征的Android恶意应用检测的方法及装置,能提高检测准确率,降低开销。方法包括:S1、获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;S2、将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
Description
技术领域
本发明实施例涉及计算机领域,具体涉及一种基于细粒度特征的Android恶意应用检测的方法及装置。
背景技术
Android恶意应用的出现使得用户数据受到严重威胁,造成用户经济上的损失或者隐私信息的泄露。随着其攻击技术的日趋成熟,新兴的恶意软件难以检测,甚至泄露国家秘密,造成不堪设想的后果。因此,Android恶意应用的检测受到了学术界和工业界的广泛关注。
现有的检测方法主要有静态分析和动态分析两种,动态分析对实时性和运行环境要求较高、耗时较长,行为难触发,而静态分析具有能耗低、风险小、速度快,对实时性要求低的优点,使其成为了目前使用最为广泛的检测方法。静态检测方法的具体实现是:首先,提取Android应用程序的静态特征(例如:权限请求或者API(Application ProgrammingInterface,应用程序编程接口)调用),结合静态特征生成应用程序的特征向量;若应用程序被检测到上述特征就会在应用程序的特征向量中被标记为1,否则为0。然后,使用某种机器学习算法对收集到的训练集进行训练,生成检测模型;最后,利用生成的检测模型对待测Android应用程序进行检测。目前,实现这种检测方法的文献有:
1.魏理豪,艾解清,邹洪,等.Android恶意软件的多特征协作决策检测方法[J].计算机工程与应用,2016,52(20):5-13.
2.邵舒迪,虞慧群.基于权限和API特征结合的Android恶意软件检测方法[C]//全国软件与应用学术会议.2015.
3.鲍美英.基于改进决策树分类的Android恶意软件检测[J].软件,2017,38(2):33-36.
当前检测方法存在的主要不足是:由于提取的特征是粗粒度的,致使检测结果没有达到理想的准确率。主要有两点原因:应用程序的开发者为了方便日后的开发和升级会在初始阶段申请过度的权限,这就对基于权限的检测方法造成了一定程度的误判;此外,超过90%的静态分析方法都没有考虑API的反射调用情况,这也是现有恶意软件检测工具性能差的一个主要原因。
发明内容
针对现有技术存在的不足和缺陷,本发明实施例提供一种基于细粒度特征的Android恶意应用检测的方法及装置。
一方面,本发明实施例提出一种基于细粒度特征的Android恶意应用检测的方法,包括:
S1、获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
S2、将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
另一方面,本发明实施例提出一种基于细粒度特征的Android恶意应用检测的装置,包括:
生成单元,用于获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
检测单元,用于将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器、总线及存储在存储器上并可在处理器上运行的计算机程序;
其中,所述处理器,存储器通过所述总线完成相互间的通信;
所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述方法。
本发明实施例提供的基于细粒度特征的Android恶意应用检测的方法及装置,通过对特征提取环节进行改进,使提取的静态特征包括待检测Android应用程序直接调用的API和反射调用的API,以及所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限,即使经常出现在Android应用中的两种特征(即权限和API)的获取更加细粒度化,能降低无效特征带来的额外***开销以及对检测结果带来的干扰,从而相较于现有技术,本方案能提高检测准确率,降低开销。
附图说明
图1为本发明基于细粒度特征的Android恶意应用检测的方法一实施例的流程示意图;
图2为本发明基于细粒度特征的Android恶意应用检测的方法另一实施例的流程示意图;
图3为本发明基于细粒度特征的Android恶意应用检测的装置一实施例的结构示意图;
图4为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
参看图1,本实施例公开一种基于细粒度特征的Android恶意应用检测的方法,包括:
S1、获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
S2、将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
本发明实施例提供的基于细粒度特征的Android恶意应用检测的方法,通过对特征提取环节进行改进,使提取的静态特征包括待检测Android应用程序直接调用的API和反射调用的API,以及所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限,即使经常出现在Android应用中的两种特征(即权限和API)的获取更加细粒度化,能降低无效特征带来的额外***开销以及对检测结果带来的干扰,从而相较于现有技术,本方案能提高检测准确率,降低开销。
在前述方法实施例的基础上,所述获取待检测Android应用程序的静态特征,可以包括:
获取所述待检测Android应用程序的所有.smali文件,从所述所有.smali文件中排除无敏感API调用的.smali文件,得到目标.smali文件;
对于每一个目标.smali文件,通过将该目标.smali文件内容与预先构建的权限-API库进行匹配,得到该目标.smali文件内容中包含的invoke-virtual指令以及对应的敏感API,并将所述敏感API确定为所述待检测Android应用程序直接调用的API,其中,所述权限-API库包含与Android恶意应用检测有关的权限以及与该权限对应的API,所述敏感API为所述权限-API库中的API。
本实施例中,无敏感API调用的.smali文件包括不属于主要功能文件的.smali文件,比如R.smali、R$attr.smali、R$id.smali、R$layout.smali等文件。在构建权限-API库时,可以使用开源工具PScout提供的权限-API映射。该权限-API映射中一些对恶意软件检测是无效的,不仅会带来多余的***开销还会影响***性能。因此可以使用过滤算法将开源工具PScout提供的权限-API映射中与Android恶意应用检测无关的权限以及与该权限对应的API去掉,得到所述权限-API库。
在前述方法实施例的基础上,所述获取待检测Android应用程序的静态特征,可以包括:
将所述待检测Android应用程序的APK(AndroidPackage,Android安装包)文件转换成Jimple代码;
通过对所述Jimple代码进行反射分析,得到所述待检测Android应用程序反射调用的API。
本实施例中,在进行反射分析之前,需要确定分析入口并确保分析覆盖到所有应用代码,具体反射分析可以使用基于上下文、基于数据流的名为DroidRA的分析方法。
在前述方法实施例的基础上,所述获取待检测Android应用程序的静态特征,可以包括:
在对所述待检测Android应用程序进行反编译后,从所述待检测Android应用程序的AndroidManifest.xml文件中获取所述待检测Android应用程序声明的所有权限;
确定出所述已经申请却没有实际使用的权限,并在所述所有权限中移除已经申请却没有实际使用的权限,得到所述权限特征,其中,所述已经申请却没有实际使用的权限包括所述所有权限中在所述权限-API库中存在,但所述待检测Android应用程序未直接调用和反射调用对应API的权限。
如图2所示为本发明基于细粒度特征的Android恶意应用检测的方法另一实施例的流程示意图,参看图2,本发明基于细粒度特征的Android恶意应用检测的方法可以包括如下步骤:
(a)构建并训练检测模型;
(b)获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,将所述特征向量输入所述检测模型,得到所述待检测Android应用程序是恶意应用还是良性应用的检测结果。
其中,上述步骤(a)的过程包括如下步骤:
构建权限-API库;
基于所述权限-API库对包含良性应用和恶意应用的训练样本集进行静态特征的提取,具体包括API的细粒度提取和权限的细粒度提取,其中,API的细粒度提取,包括逐个扫描smali文件获取API的直接调用,除此之外,还获取了通过反射方式调用的API,最终构建了细粒度的API集合FG(API);权限的细粒度提取,包括根据所述API-权限映射库,从声明的全部权限中移除已经申请但实际并未使用的权限,形成最终的细粒度的权限集合FG(Permission);
构建特征集合,最终的特征集合由两部分组成:一部分是细粒度的API集合,包含应用程序直接调用的API和通过反射机制调用的API;另一部分是细粒度的权限集合,指的是从已经声明的全部权限中去除过度申请却没有实际使用的权限;
构建检测模型,根据所述特征集合生成特征向量,利用所述特征向量对所述检测模型进行训练。
待检测Android应用程序的静态特征的获取方法与训练样本的静态特征的获取方法一致,此处不再赘述。
参看图3,本实施例公开一种基于细粒度特征的Android恶意应用检测的装置,包括:
生成单元1,用于获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
检测单元2,用于将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
具体地,所述生成单元1获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;所述检测单元2将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
本发明实施例提供的基于细粒度特征的Android恶意应用检测的装置,通过对特征提取环节进行改进,使提取的静态特征包括待检测Android应用程序直接调用的API和反射调用的API,以及所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限,即使经常出现在Android应用中的两种特征(即权限和API)的获取更加细粒度化,能降低无效特征带来的额外***开销以及对检测结果带来的干扰,从而相较于现有技术,本方案能提高检测准确率,降低开销。
在前述装置实施例的基础上,所述生成单元,具体可以用于:
获取所述待检测Android应用程序的所有.smali文件,从所述所有.smali文件中排除无敏感API调用的.smali文件,得到目标.smali文件;
对于每一个目标.smali文件,通过将该目标.smali文件内容与预先构建的权限-API库进行匹配,得到该目标.smali文件内容中包含的invoke-virtual指令以及对应的敏感API,并将所述敏感API确定为所述待检测Android应用程序直接调用的API,其中,所述权限-API库包含与Android恶意应用检测有关的权限以及与该权限对应的API,所述敏感API为所述权限-API库中的API。
在前述装置实施例的基础上,所述生成单元,具体可以用于:
将所述待检测Android应用程序的APK文件转换成Jimple代码;
通过对所述Jimple代码进行反射分析,得到所述待检测Android应用程序反射调用的API。
在前述装置实施例的基础上,所述生成单元,具体可以用于:
在对所述待检测Android应用程序进行反编译后,从所述待检测Android应用程序的AndroidManifest.xml文件中获取所述待检测Android应用程序声明的所有权限;
确定出所述已经申请却没有实际使用的权限,并在所述所有权限中移除已经申请却没有实际使用的权限,得到所述权限特征,其中,所述已经申请却没有实际使用的权限包括所述所有权限中在所述权限-API库中存在,但所述待检测Android应用程序未直接调用和反射调用对应API的权限。
本实施例的基于细粒度特征的Android恶意应用检测的装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明具有如下有益效果:实现了利用一种基于细粒度特征的Android恶意应用检测的方法,对权限和API的细化提取使得对待测APK行为描述更加准确,大量的实验表明本发明方法提升了检测结果的准确率并减小了误报率。
图4示出了本发明实施例提供的一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器11、存储器12、总线13及存储在存储器12上并可在处理器11上运行的计算机程序;
其中,所述处理器11,存储器12通过所述总线13完成相互间的通信;
所述处理器11执行所述计算机程序时实现上述各方法实施例所提供的方法,例如包括:获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例所提供的方法,例如包括:获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (10)
1.一种基于细粒度特征的Android恶意应用检测的方法,其特征在于,包括:
S1、获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
S2、将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述获取待检测Android应用程序的静态特征,包括:
获取所述待检测Android应用程序的所有.smali文件,从所述所有.smali文件中排除无敏感API调用的.smali文件,得到目标.smali文件;
对于每一个目标.smali文件,通过将该目标.smali文件内容与预先构建的权限-API库进行匹配,得到该目标.smali文件内容中包含的invoke-virtual指令以及对应的敏感API,并将所述敏感API确定为所述待检测Android应用程序直接调用的API,其中,所述权限-API库包含与Android恶意应用检测有关的权限以及与该权限对应的API,所述敏感API为所述权限-API库中的API。
3.根据权利要求2所述的方法,其特征在于,所述获取待检测Android应用程序的静态特征,包括:
将所述待检测Android应用程序的APK文件转换成Jimple代码;
通过对所述Jimple代码进行反射分析,得到所述待检测Android应用程序反射调用的API。
4.根据权利要求3所述的方法,其特征在于,所述获取待检测Android应用程序的静态特征,包括:
在对所述待检测Android应用程序进行反编译后,从所述待检测Android应用程序的AndroidManifest.xml文件中获取所述待检测Android应用程序声明的所有权限;
确定出所述已经申请却没有实际使用的权限,并在所述所有权限中移除已经申请却没有实际使用的权限,得到所述权限特征,其中,所述已经申请却没有实际使用的权限包括所述所有权限中在所述权限-API库中存在,但所述待检测Android应用程序未直接调用和反射调用对应API的权限。
5.一种基于细粒度特征的Android恶意应用检测的装置,其特征在于,包括:
生成单元,用于获取待检测Android应用程序的静态特征,并根据所述静态特征生成特征向量,其中,所述静态特征包括API特征和权限特征,所述API特征包括所述待检测Android应用程序直接调用的API和反射调用的API,所述权限特征为所述待检测Android应用程序声明的所有权限中移除已经申请却没有实际使用的权限后剩余的权限;
检测单元,用于将所述特征向量输入预先构建的检测模型,得到所述待检测Android应用程序是否为恶意应用的检测结果。
6.根据权利要求5所述的装置,其特征在于,所述生成单元,具体用于:
获取所述待检测Android应用程序的所有.smali文件,从所述所有.smali文件中排除无敏感API调用的.smali文件,得到目标.smali文件;
对于每一个目标.smali文件,通过将该目标.smali文件内容与预先构建的权限-API库进行匹配,得到该目标.smali文件内容中包含的invoke-virtual指令以及对应的敏感API,并将所述敏感API确定为所述待检测Android应用程序直接调用的API,其中,所述权限-API库包含与Android恶意应用检测有关的权限以及与该权限对应的API,所述敏感API为所述权限-API库中的API。
7.根据权利要求6所述的装置,其特征在于,所述生成单元,具体用于:
将所述待检测Android应用程序的APK文件转换成Jimple代码;
通过对所述Jimple代码进行反射分析,得到所述待检测Android应用程序反射调用的API。
8.根据权利要求7所述的装置,其特征在于,所述生成单元,具体用于:
在对所述待检测Android应用程序进行反编译后,从所述待检测Android应用程序的AndroidManifest.xml文件中获取所述待检测Android应用程序声明的所有权限;
确定出所述已经申请却没有实际使用的权限,并在所述所有权限中移除已经申请却没有实际使用的权限,得到所述权限特征,其中,所述已经申请却没有实际使用的权限包括所述所有权限中在所述权限-API库中存在,但所述待检测Android应用程序未直接调用和反射调用对应API的权限。
9.一种电子设备,其特征在于,包括:处理器、存储器、总线及存储在存储器上并可在处理器上运行的计算机程序;
其中,所述处理器,存储器通过所述总线完成相互间的通信;
所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810289216.2A CN108681670A (zh) | 2018-03-30 | 2018-03-30 | 基于细粒度特征的Android恶意应用检测的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810289216.2A CN108681670A (zh) | 2018-03-30 | 2018-03-30 | 基于细粒度特征的Android恶意应用检测的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108681670A true CN108681670A (zh) | 2018-10-19 |
Family
ID=63800276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810289216.2A Pending CN108681670A (zh) | 2018-03-30 | 2018-03-30 | 基于细粒度特征的Android恶意应用检测的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108681670A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109670310A (zh) * | 2019-01-28 | 2019-04-23 | 杭州师范大学 | 一种基于半监督K-Means聚类算法的Android恶意软件检测方法 |
CN110781081A (zh) * | 2019-10-12 | 2020-02-11 | 南京信息职业技术学院 | 一种移动应用回调强制触发方法、***及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310153A (zh) * | 2013-04-28 | 2013-09-18 | 中国人民解放军理工大学 | 一种基于Android平台的细粒度权限控制方法 |
CN105550583A (zh) * | 2015-12-22 | 2016-05-04 | 电子科技大学 | 基于随机森林分类方法的Android平台恶意应用检测方法 |
CN107798242A (zh) * | 2017-11-13 | 2018-03-13 | 南京大学 | 一种静动态结合的恶意安卓应用自动检测*** |
CN107832610A (zh) * | 2017-09-25 | 2018-03-23 | 暨南大学 | 基于组合特征模式的Android恶意软件检测方法 |
-
2018
- 2018-03-30 CN CN201810289216.2A patent/CN108681670A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310153A (zh) * | 2013-04-28 | 2013-09-18 | 中国人民解放军理工大学 | 一种基于Android平台的细粒度权限控制方法 |
CN105550583A (zh) * | 2015-12-22 | 2016-05-04 | 电子科技大学 | 基于随机森林分类方法的Android平台恶意应用检测方法 |
CN107832610A (zh) * | 2017-09-25 | 2018-03-23 | 暨南大学 | 基于组合特征模式的Android恶意软件检测方法 |
CN107798242A (zh) * | 2017-11-13 | 2018-03-13 | 南京大学 | 一种静动态结合的恶意安卓应用自动检测*** |
Non-Patent Citations (2)
Title |
---|
邵舒迪 等: "基于权限和API特征结合的Android恶意软件检测方法", 《计算机科学》 * |
黄浩华 等: "静动态结合的恶意Android应用自动检测技术", 《信息安全学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109670310A (zh) * | 2019-01-28 | 2019-04-23 | 杭州师范大学 | 一种基于半监督K-Means聚类算法的Android恶意软件检测方法 |
CN110781081A (zh) * | 2019-10-12 | 2020-02-11 | 南京信息职业技术学院 | 一种移动应用回调强制触发方法、***及存储介质 |
CN110781081B (zh) * | 2019-10-12 | 2024-04-09 | 南京信息职业技术学院 | 一种移动应用回调强制触发方法、***及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Schwarz et al. | JavaScript Template Attacks: Automatically Inferring Host Information for Targeted Exploits. | |
US9690945B2 (en) | Security analysis using relational abstraction of data structures | |
CN102622536B (zh) | 一种恶意代码捕获方法 | |
CN111125716A (zh) | 一种以太坊智能合约漏洞检测方法及装置 | |
CN102402479B (zh) | 用于静态分析的中间表示结构 | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN101770551A (zh) | 一种基于硬件模拟器的处理隐藏进程的方法 | |
CN109784062A (zh) | 漏洞检测方法及装置 | |
CN109726067A (zh) | 一种进程监控方法以及客户端设备 | |
WO2022180702A1 (ja) | 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法 | |
CN102831339A (zh) | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 | |
CN102081719A (zh) | 基于动态污染传播的软件安全测试***及方法 | |
JP2021051745A (ja) | コンピュータ装置およびメモリ管理方法 | |
Nazir et al. | Software birthmark design and estimation: a systematic literature review | |
CN105975858A (zh) | 安卓***下基于虚拟技术的恶意代码检测方法及*** | |
CN108681670A (zh) | 基于细粒度特征的Android恶意应用检测的方法及装置 | |
CN109992532A (zh) | 存储空间的访问权限管理方法及存储权限管理单元 | |
CN108197476A (zh) | 一种智能终端设备的漏洞检测方法及装置 | |
CN105718793A (zh) | 基于修改沙箱环境防止恶意代码识别沙箱的方法及*** | |
CN113051624B (zh) | 基于类型检测的智能合约信息流完整性验证方法及*** | |
CN113010268B (zh) | 恶意程序识别方法及装置、存储介质、电子设备 | |
US9507621B1 (en) | Signature-based detection of kernel data structure modification | |
CN111159718B (zh) | 用于漏洞修复的方法及装置、家电设备 | |
CN113127351A (zh) | 一种第三方组件检测方法、***和计算机设备 | |
Al-Ahmad et al. | Fuzz test case generation for penetration testing in mobile cloud computing applications |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181019 |