CN105989294B - 安卓安装包检测方法及装置 - Google Patents
安卓安装包检测方法及装置 Download PDFInfo
- Publication number
- CN105989294B CN105989294B CN201510085688.2A CN201510085688A CN105989294B CN 105989294 B CN105989294 B CN 105989294B CN 201510085688 A CN201510085688 A CN 201510085688A CN 105989294 B CN105989294 B CN 105989294B
- Authority
- CN
- China
- Prior art keywords
- code block
- code
- node
- apk
- block
- 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.)
- Active
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种安卓安装包检测方法及装置。本发明实施例的安卓安装包检测方法,包括:对待测的apk进行分析,获得apk的源代码;根据apk的源代码确定apk的至少一个代码块和apk的所有代码块路径;所有代码块路径包括:至少一个代码块中每个代码块与其他代码块的至少一条路径;根据至少一个代码块,及所有代码块路径,确定apk的代码块执行列表;apk的代码块执行列表包括:每个代码块在所有代码块路径上的代码块执行顺序;根据每个代码块和每个代码块在所有代码块路径上的代码块执行顺序,对apk进行漏洞检测。本发明实施例可提高apk漏洞检测的检测准确率。
Description
技术领域
本发明实施例涉及检测技术,尤其涉及一种安卓安装包检测方法及装置。
背景技术
随着安卓(Android)平台的智能终端的普及,针对安卓(Android)平台的恶意代码也日益增多,这使得安卓平台智能终端的安全问题不断的增加。安卓平台作为权限分割的操作系统,通过权限访问控制策略保证应用程序间的隔离性。同时,安卓平台还提供了组件间通信机制,以通过不同组件间相互访问进行组件功能复用。该组件间通信机制的高灵活性,使其成为攻击者进行权限提升攻击的主要手段,从而使得该攻击者能够在未经用户许可的情况下绕过安卓平台的安全机制获得权限。
目前,静态污点分析方法是常见的检测安卓安装包(Android Package,简称apk)的方法,该静态污点分析方法按照该apk中代码块的声明顺序,对该apk进行漏洞检测。其中,按照该apk中各代码块的声明顺序对该apk进行漏洞检测,实际上是根据与该代码块的声明顺序对应的路径进行检测。
而该apk中代码块是按照代码块的事件触发顺序进行执行的,且代码块的事件触发顺序并不限于该代码块的声明顺序,因此采用静态污点分析方法进行apk漏洞检测的准确率较低。
发明内容
本发明实施例提供一种安卓安装包检测方法及装置,以解决静态污点分析方法的检测准确率较低的问题。
第一方面,本发明实施例提供一种安卓安装包检测方法,包括:
对待测的安卓安装包apk进行分析,获得所述apk的源代码;
根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码块路径;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至少一条路径;
根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行列表;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码块执行顺序;
根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
根据第一方面,在第一方面的第一种可能实现的方式中,所述根据所述至少一个代码块,及所述所有代码块路径确定所述apk的代码块执行列表,包括:
从所述至少一个代码块中确定入口节点;所述入口节点的每个代码块用于调用代码块;
根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代码块的出口节点;所述出口节点的每个代码块用于被代码块调用;
将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块外的其他代码块确定为中间节点;
根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序。
根据第一方面的第一种可能实现的方式,在第二种可能实现的方式中,所述根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序包括:
判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所述中间节点的代码块;
若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
根据第一方面的第二种可能实现的方式,在第三种可能实现的方式中,所述方法还包括:
若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块;
生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码块的代码块执行顺序。
根据第一方面的第三种可能实现的方式,在第四种可能实现的方式中,若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块,包括:
若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阈值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
根据第一方面至第一方面的第四种可能实现的方式中任意一种,在第五种可能实现的方式中,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测,包括:
若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与所述下一代码块的路径为泄露路径。
根据第一方面的第五种可能实现的方式,在第六种可能实现的方式中,所述方法还包括:
若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明;
根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感代码块;
确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。
根据第一方面至第一方面的第六种可能实现的方式中任意一种,在第七种可能实现的方式中,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测,包括:
对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名;
根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
第二方面,本发明实施例提供一种安卓安装包检测装置,包括:
分析模块,用于对待测的安卓安装包apk进行分析,获得所述apk的源代码;
确定模块,用于根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码块路径;根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行列表;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至少一条路径;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码块执行顺序;
检测模块,用于根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
根据第二方面,在第二方面的第一种可能实现的方式中,所述确定模块,还用于从所述至少一个代码块中确定入口节点;根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代码块的出口节点;将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块外的其他代码块确定为中间节点;根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序;其中,所述入口节点的每个代码块用于调用代码块,所述出口节点的每个代码块用于被代码块调用。
根据第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述装置还包括:
第一判断模块,用于判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所述中间节点的代码块;
生成模块,用于若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
根据第二方面的第二种可能实现的方式,在第三种可能实现的方式中,
所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块;
所述生成模块,还用于生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码块的代码块执行顺序。
根据第二方面的第三种可能实现的方式,在第四种可能实现的方式中,
所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阈值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
根据第二方面至第二方面的第四种可能实现的方式中任意一种,在第五种可能实现的方式中,所述装置还包括:
第二判断模块,用于若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
所述确定模块,还用于若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与所述下一代码块的路径为泄露路径。
根据第二方面的第五种可能实现的方式,在第六种可能实现的方式中,
所述确定模块,还用于若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明;根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感代码块;确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。
根据第二方面至第二方面的第六种可能实现的方式中任意一种,在第七种可能实现的方式中,所述分析模块,还用于对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名;
所述检测模块,还用于根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
本发明实施例安卓安装包检测方法及装置,通过对待测的apk进行分析,获得该apk的至少一个代码块和该apk的路径顺序列表;根据该每个代码块和该apk的路径顺序列表中该每个代码块与其他代码块的至少一条路径对该apk进行漏洞检测,由于该apk的路径顺序列表包括:该apk的所有路径的代码块执行顺序;该apk的所有路径包括:该至少一个代码块中每个代码块与该其他代码块的至少一条路径,那么该方法实际是根据该apk的所有代码块在该apk的所有路径执行顺序对该apk进行漏洞检测,因而,采用本发明实施例的方法进行apk漏洞检测可提高检测准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的安卓安装包检测方法的流程图;
图2为本发明另一实施例提供的安卓安装包检测方法的流程图;
图3为本发明另一实施例提供的安卓安装包检测方法的流程图;
图4为本发明另一实施例提供的安卓安装包检测方法的流程图;
图5为本发明另一实施例提供的安卓安装包检测方法的流程图;
图6为本发明另一实施例提供的安卓安装包检测方法的流程图;
图7为本发明另一实施例提供的别名树的结构示意;
图8为本发明另一实施例提供的安卓安装包检测方法的流程图;
图9为本发明另一实施例提供的安卓安装包检测装置的结构示意图;
图10为本发明另一实施例提供的计算机系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
该方法由安卓安装包检测装置执行,该装置通常以软件的形式作为安全检测软件集成在个人电脑(PC,Personal Computer)的处理器或云端数据中心的处理器上,通过运行该安全监测软件执行该安卓安装包检测方法,从而对与该PC或该云端数据中心网络连接的安卓智能终端的apk(Android Package,安卓安装包)进行检测。该装置还可以硬件和/或软件的方式来实现,集成在该安卓智能终端的处理器中。图1为本发明一实施例提供的安卓安装包检测方法的流程图。如图1所示,本实施例的方法包括如下步骤:
S101、对待测的apk进行分析,获得该apk的源代码。
具体地,该apk实际为经安卓模拟器,如安卓软件开发工具(SoftwareDevelopment Kit,简称SDK)编译后的该安卓平台的操作系统识别的文件。该apk可以包括被编译的执行程序,文件资源(resources)、证书(certificates),和清单文件(manifestfile)等。对该apk进行分析,可以是通过调用该apk对应的应用程序接口(ApplicationProgramming Interface,简称API)对该apk进行反编译,获得该apk中该被编译的执行程序的源代码。该apk中的该被编译的执行文件可以为经过Dalvik虚拟机转换的应用程序,该apk中的该被编译的执行文件可以为Dalvik可执行Dalvik Executable,简称dex)程序。该dex程序的源代码为Dalvik字节码。
对该apk进行分析,可以是采用开源软件如SOOT中的Dexpler工具调用该apk对应的API对该apk进行分析,并将该apk文件中的该dex程序从Dalvik字节码转化为Jimple的三地址代码(three-address code)。该三地址代码也可称为该Dalvik字节码与Java源代码间的中间代码。
S102、根据该apk的源代码确定该apk的至少一个代码块和该apk的所有代码块路径;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条路径。
具体地,该apk的至少一个代码块为该apk所包括的所有代码块。其中,一个代码块(Block)可以为一个方法包,而一个方法包可包括至少一个方法,那么该一个代码块则可包括实现该至少一个方法对应的代码。其中,该一个方法可以是实现一种操作或功能采用的方法。也即是说,该一个代码块可以为该apk的一个独立组件,该apk的至少一个代码块中每个代码块可独立运行实现一个操作或功能,也可与其他代码块配合,从而实现该apk的完整功能。
根据该apk的源代码获得该apk的至少一个代码块可以是根据对该apk分析后获得的中间代码,也就是三地址代码确定的。
由于安卓平台中提供了组件间通信机制,那么该apk的至少一个代码块中每个代码块可作为一个独立组件与其他代码块相互访问,而至少两个代码块间的调用与被调用即可构成路径,因此,该每个代码块与该其他代码块具有至少一个路径。该所有代码块路径包括该apk中所有代码块的代码块路径,该所有代码块路径包括:该至少一个代码块中每个代码块与该其他代码块的至少一条路径。
S103、根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺序。
该apk的代码块执行列表中包括的该每个代码块在每条路径的代码块执行顺序,可以是通过该每个代码块在该每条路径上的执行序号。该每个代码块在该每条路径上的执行序号,可以是通过该每个代码块在该每条路径上的顺序标识,如数字序号或字母序号等表示。
该apk的代码块执行列表可以通过表项来表示,那么该apk的代码块执行列表可包括该所有代码块路径和该每个代码块在该所有代码块路径上的执行序号。该apk的代码块执行列表还可通过路径流程图的形式表示,在该路径流程图中,每条路径上的各代码块可标注有对应的执行序号。
S104、根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测。
根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测,可以是针对该每个代码块,分别检测该每个代码块在该每个代码块与该其他代码块的至少一条路径中是否存在泄漏路径,从而确定该apk是否存在漏洞。
本发明实施例提供的安卓安装包检测方法,通过对待测的apk进行分析,获得该apk的源代码;根据该apk的源代码确定该apk的至少一个代码块和该apk的所有代码块路径;根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序对该apk进行漏洞检测,由于该所有代码块路径包括:该至少一个代码块中每个代码块与该其他代码块的至少一条路径,该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺序,那么该方法实际是根据该apk的所有代码块在该所有代码块路径上的代码块执行顺序对该apk进行漏洞检测,因而,本发明实施例的方法进行apk漏洞检测可提高检测的准确率。
本发明实施例还提供一种安卓安装包检测方法。图2为本发明另一实施例提供的安卓安装包检测方法的流程图。如图2所示,该方法在上述实施例中S103中根据该至少一个代码块,及该所有代码块路径确定该apk的代码块执行列表,可包括:
S201、从该至少一个代码块中确定入口节点;该入口节点的每个代码块用于调用代码块。
具体地,从该至少一个代码块中确定入口节点,可以是根据该所有代码块路径确定每条代码块路径的初始代码块,从该至少一个代码块中确定该入口节点。该入口节点(entry node)也可称为源节点(source node)。
S202、根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代码块的出口节点;该出口节点的每个代码块用于被代码块调用。
根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代码块的出口节点,可以是分别获取该入口节点的每个代码块的信息,并根据获取的信息确定该每个代码块的出口节点的信息,继而根据该每个代码块的出口节点的信息确定该每个代码块为起始代码块的出口节点。该出口节点(exit node)还可称为目标节点(target node)。
S203、将该至少一个代码块中该入口节点的每个代码块和该出口节点的每个代码块外的其他代码块确定为中间节点。
S204、根据该入口节点、该出口节点及该中间节点,确定该每个代码块在该所有代码块路径上的代码块执行顺序。
也就是说,对于入口节点中的每个代码块在该所有代码块路径中每条代码块路径上生成一个次序,即执行顺序。
本发明实施例还提供一种安卓安装包检测方法。图3为本发明另一实施例提供的安卓安装包检测方法的流程图。如图3所示,可选的,S204中根据该入口节点、该出口节点及该中间节点,确定该每个代码块在该所有代码块路径上的代码块执行顺序可包括:
S301、判断该入口节点的每个代码块调用的代码块,为该出口节点的代码块还是该中间节点的代码块。
该判断该入口节点的每个代码块调用的代码块为该出口节点的代码块还是该中间节点的代码块,可以是判断该入口节点的每个代码块调用的代码块的出边集合是否为零。若该入口节点的每个代码块调用的代码块的出边集合为零,则该入口节点的每个代码块调用的代码块为该出口节点的代码块。若该入口节点的每个代码块调用的代码块的出边集合不为零,则该入口节点的每个代码块调用的代码块为该中间节点的代码块。
S302、若该入口节点的每个代码块调用的代码块为该出口节点的代码块,生成该入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。
可选的,所述方法还包括:
S303、若该入口节点的每个代码块调用的代码块为该中间节点的代码块,确定该中间节点的代码块对应的该出口节点的代码块。
S304、生成该入口节点的每个代码块、该中间节点的代码块至该出口节点的代码块的代码块执行顺序。
可选的,S303中若该入口节点的每个代码块调用的代码块为该中间节点的代码块,确定该中间节点的代码块对应的该出口节点的代码块,可包括:
若该入口节点的每个代码块调用的代码块为该中间节点的代码块,且,该中间节点的代码块具有未被访问的该出口节点的代码块,根据预设的递归阈值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块。
具体地,该入口节点的每个代码块调用的代码块为该中间节点的代码块,也就是该入口节点的每个代码块调用的代码块的出边集合不为零。该中间节点的代码块具有未被访问的该出口节点的代码块,也就是说,该中间节点的代码块具有未被访问的出边。在每条路径上,入口节点的代码块、中间节点的代码块及出口节点的代码块可构成一条边(edge)。也就是说,对于该入口节点的一个代码块,该一个代码与一个其他代码块的一条路径,可以称为一条边。
根据预设的递归阈值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块,可以是当该中间节点的代码块具有未被访问的所述出口节点的代码块时,确定该中间节点的代码块对应的该出口节点的第一代码块,并标记该中间节点的代码块与该第一代码块的边已被访问;同时对递归次数加1,再次确定该中间节点的代码块对应的该出口节点的第二代码块;当该递归次数大于或等于该递归阈值,生成该入口节点的每个代码块、该中间节点的代码块及上述各递归次数获得的该中间节点的代码块对应的该出口节点的代码块的执行顺序。
本实施例提供的的方法中,根据预设的递归阈值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块,可避免检测方法陷入死循环。
本发明实施例还提供一种安卓安装包检测方法。图4为本发明另一实施例提供的安卓安装包检测方法的流程图。如图4所示,该方法在上述实施例的S104中根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测,可包括:
S401、若该每个代码块为预设敏感代码集合中的代码块,且该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的下一代码块,判断该下一代码块是否为该预设敏感代码集合中的代码块。
具体地,该预设敏感代码集合可包括至少一个代码块,该预设敏感代码集合中的所有代码块均为敏感代码块。该预设敏感代码集合中的所有代码块可以根据结合其他安全检测软件的检测结果中的存在漏洞的代码块的统计结果,预先进行配置的。
若该每个代码块为预设敏感代码集合中的代码块,那么该每个代码块的输出值或该每个代码块使用的参数则为敏感数据。该每个代码块的输出值或该每个代码块使用的参数被传递,至该所有代码块路径上该每个代码块的下一代码块,可以是以该每个代码块的输出值或该每个代码块使用的参数作为该下一代码块的输入值,使得该下一代码块根据该输入值运行。
该判断该下一代码块是否为该预设敏感代码集合中的代码块,例如可以是通过比较该下一代码块与该预设代码集合中的各代码块进行确定。
需要说明的是,在该实施例的S401若该每个代码块为预设敏感代码集合中的代码块,且该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的下一代码块,判断该下一代码块是否为该预设敏感代码集合中的代码块之前,该方法还可包括:
判断该每个代码块是否为该预设敏感代码集合中的代码块;
若该每个代码块为该预设敏感代码集合中的代码块,判断该每个代码块的输出值或该每个代码块使用的参数是否被传递至该下一代码块。
S402、若该下一代码块为该预设敏感代码集合中的代码块,确定该每个代码块与该下一代码块的路径为泄露路径。
若该每个代码块为该预设敏感代码集合中的代码块,该每个代码块的输出值或所述每个代码块使用的参数被传递至该下一代码块,且该下一代码块也为该预设敏感代码集合中的代码块,也就是说,该每个代码块和该下一代码块作为敏感代码集合中的代码块,即敏感代码块,通过代码块之间的传输路径传输敏感数据。那么该每个代码块与该下一代码块的路径可能被攻击者所利用,从而获取该智能终端的私密信息,因此,确定该每个代码块与该下一代码块的路径为泄露路径。
该实施例通过检测该每个代码块与该下一代码块的路径,对该apk进行漏洞分析。该每个代码块与该下一代码块的路径为泄露路径,那么包括该每个代码块与该下一代码块的该apk存在漏洞。也就是说,该实施例的方法中,针对该每个代码块在该所有代码块路径上,以代码块为单位逐个进行检测,可保证对该apk的漏洞分析更准确,提高apk漏洞检测的准确率。
该实施例还提供一种安卓安装包检测方法。图5为本发明另一实施例提供的安卓安装包检测方法的流程图。如图5所示,该方法,还可包括:
S501、若该每个代码块不是该预设敏感代码集合中的代码块,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,及该引用参数对应的代码块的声明。
具体地,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,可以是根据该apk的源代码确定该每个代码块、该每个代码块的引用参数对应的代码块及该引用参数对应的代码块的实例。举例来说,若该apk的源代码中,该每个代码块为Sink(a.getInfo())。那么该每个代码块为Sink代码块,该Sink代码块的引用参数为getInfo(),即getInfo的输出值,那么该每个代码块的引用参数对应的代码块则可以为getInfo代码块,该引用参数对应的代码块的实例为Sink代码块的a实例。
确定该引用参数对应的代码块的声明,可以是确定该实例的声明,并根据该实例的声明确定该实例的类,继而根据该实例的类确定该实例的类对应的基类代码块,在该基类代码块对应的源代码中确定该引用参数对应的代码块的声明。其中,该引用参数对应的代码块的声明指的是,该引用参数对应的代码块的访问权限的声明;该实例的声明,为该实例的访问权限声明。的举例来说,若Sink(a.getInfo())代码块所在代码块的源代码如下所示。
上述该Sink(a.getInfo())代码块所在代码块的源代码中,该实例的声明代码“Aa=new A()”声明了该实例a的类为A。
该类A的代码块的源代码可如下所示:
Public class A extends General{
M1(){…}
}
该实例的类A的代码块中,该基类代码块为General代码块。
该基类代码块对应的源代码例如可以如下所示:
该基类代码块,如General代码块对应的源代码中确定该引用参数对应的代码块的声明代码“Public string getinfo()”。
S502、根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏感代码块。
根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏感代码块,可以是以该引用参数对应的代码块的声明为起始,查找该引用参数对应的代码块中是否包括预设代码,如返回值代码,return,若包括该引用参数对应的代码块中包括该预设代码,则该引用参数对应的代码块为敏感代码块。其中,该引用参数对应的代码块的声明,为该引用参数对应的代码块的访问权限声明。
举例来说,若该引用参数对应的代码块的源代码如下所示:
因而,以该引用参数对应的代码块的声明代码“Public string getinfo()”为起始,由于该引用参数对应的代码块中包括该预设代码return,确定该引用参数对应的代码块为敏感代码。
S503、确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
由于该引用参数对应的代码块为敏感代码,那么该引用参数对应的代码块与该每个代码的路径中必然存在权限泄露,因而,确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
需要说明的是,本实施例中上述各实例、类或代码块的声明仅以Public为例进行说明,该各实例、类或代码块的声明还可以是Private或Protected等其他类型的访问权限声明,在此不再赘述。
本实施例的安卓安装包检测方法中,对apk进行漏洞检测,还考虑了面向对象(Object Oriented)属性问题中的类继承,可使得该检测方法的检测准确度更高。
可选的,本发明实施例还提供另一种安卓安装包检测方法。图6为本发明另一实施例提供的安卓安装包检测方法的流程图。如图6所示,该方法,在S104中根据该每个代码块和该每个代码块在该所有代码块上的代码块执行顺序,对该apk进行漏洞检测,可包括:
S601、对该每个代码块进行回溯别名分析,确定该每个代码块的别名。
具体地,同一代码块可能具有不同的名称,该同一代码块的不同名称互为该同一代码块的别名。该回溯别名分析还可为point to分析。
不同代码块中可以通过对该每个代码块进行回溯别名分析,建立该每个代码块的别名树,并根据所述每个代码块的别名数确定该每个代码块的别名。
举例来说,若该apk中包括如下三个代码块,该三个代码块中第一代码块可以如下所示:
Void main(){
A a=new A();
G b=a.g;
foo(a);
sink(b.f);
}
根据该第一代码块中“G b=a.g”可知,代码块类G中的b与a.g互为别名。根据“A a=new A();G b=a.g;”可知,b为a的子类代码块。根据“Gb=a.g;foo(a);sink(b.f)”可知,b.f为b的子类代码块。
该第二代码块可以如下所示:
Void foo(A z)
{
G x=z.g;
String w=source();
x.f=w;
}
根据该第二代码块中“G x=z.g”可知,代码块类G中的x与z.g互为别名。根据该第一代码块中的“foo(a)”和该第二代码块中的“foo(A z)”可知,a与z互为别名。根据“G x=z.g;String w=source();x.f=w”可知,x.f为x的子类代码块。
该第三代码块可如下所示:
根据“Class A”可知,该第三代码块中声明了代码块类A,根据“ClassG”可知该第三代码块中声明了代码块类G。根据“Public G g”可知,在该第三代码块在代码块类A中声明一个代码块类G和代码块类G的实例g,这是一个类嵌套现象。根据“Public string f”可知,该第三代码块在代码块类G中还声明一个字符串f。图7为本发明另一实施例提供的别名树的结构示意图。该图7的别名树可以是根据如上所述的三个代码块的获得的各代码块的别名并建立的。
S602、根据该每个代码块的别名和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测。
同时,本实施例的另一种安卓安装包检测方法中,对apk进行漏洞检测的方法中还考虑了回溯别名分析,也就是point to分析,可更好地保证该检测方法的检测准确度。
本发明实施例还提供一种安卓安装包检测方法。该实施例通过具体的实例对上述任一实施例的方法进行说明。图8为本发明另一实施例提供的安卓安装包检测方法的流程图。如图8所示,该方法可包括:
S801、对该待测的apk进行分析,获得该apk的源代码。
S802、根据该apk的源代码确定该至少一个代码块,及该apk的所有代码块路径;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条路径。
S803、根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺序。
S804、根据该apk的源代码对该至少一个代码块的每个代码块进行回溯别名分析,确定该每个代码块的别名。
S805、根据该每个代码块的别名判断该每个代码块是否为预设敏感代码集合中的代码块。
若是,则继续执行S806至S814,若否,则继续执行S815至S817。
S806、若该每个代码块为该预设敏感代码集合中的代码块,确定该至少一个代码块中的入口节点;该入口节点的每个代码块用于调用代码块。
S807、根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代码块的出口节点;该出口节点的每个代码块用于被代码块调用。
S808、将该至少一个代码块中该入口节点的每个代码块和该出口节点的每个代码块外的其他代码块确定为中间节点。
S809、判断该入口节点的每个代码块调用的代码块,为该出口节点的代码块还是该中间节点的代码块。
若该入口节点的每个代码块调用的代码块为该出口节点的代码块,继续执行步骤S810;若该入口节点的每个代码块调用的代码块为该中间节点的代码块,继续执行S811至S814。
S810、若该入口节点的每个代码块调用的代码块为该出口节点的代码块,生成该入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。
S811、若该入口节点的每个代码块调用的代码块为该中间节点的代码块,且,该中间节点的代码块具有未被访问的该出口节点的代码块,根据预设的递归阈值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块。
S812、生成该入口节点的每个代码块、该中间节点的代码块至该出口节点中的代码块的代码块执行顺序。
S813、该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的下一代码块,且该下一代码块为该预设敏感代码集合中的代码块,确定该每个代码块与该下一代码块的路径为泄露路径。
S814、若该每个代码块不是该预设敏感代码集合中的代码块,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,及该引用参数对应的代码块的声明。
S815、根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏感代码块。
S816、确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
本发明实施例的安卓安装包检测方法,通过具体实例对上述任一实施例的方法进行说明,其有益效果与上述实施例类似,在此不再赘述。
本发明实施例还提供一种安卓安装包检测装置。本发明实施例的安卓安装包检测装置可执行上述任一实施例所述的安卓安装包检测方法。图9为本发明另一实施例提供的安卓安装包检测装置的结构示意图。如图9所示,该安卓安装包检测装置900可包括:分析模块901、确定模块902和检测模块903。
其中,分析模块901,用于对待测的apk进行分析,获得该apk的源代码。
确定模块902,用于根据所述apk的源代码确定该apk的至少一个代码块,和,该apk的所有代码块路径;根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条路径。该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺序。
检测模块903,用于根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测。
可选的,确定模块902,还用于从该至少一个代码块中确定入口节点;根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代码块的出口节点;将该至少一个代码块中该入口节点的每个代码块和该出口节点的每个代码块外的其他代码块确定为中间节点;根据该入口节点、该出口节点及该中间节点,确定该每个代码块在该所有代码块路径上的代码块执行顺序。其中,该入口节点的每个代码块用于调用代码块,该出口节点的每个代码块用于被代码块调用。
可选的,安卓安装包检测装置900还包括:
第一判断模块,用于判断该入口节点的每个代码块调用的代码块,为该出口节点的代码块还是该中间节点的代码块。
生成模块,用于若该入口节点的每个代码块调用的代码块为该出口节点的代码块,生成该入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。
可选的,确定模块902,还用于若该入口节点的每个代码块调用的代码块为该中间节点的代码块,确定该中间节点的代码块对应的该出口节点的代码块。
该生成模块,还用于生成该入口节点的每个代码块、该中间节点的代码块至该出口节点的代码块的代码块执行顺序。
可选的,确定模块902,还用于若该入口节点的每个代码块调用的代码块为该中间节点的代码块,且,该中间节点的代码块具有未被访问的该出口节点的代码块,根据预设的递归阈值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块。
可选的,该安卓安装包检测装置900还包括:
第二判断模块,用于若该每个代码块为预设敏感代码集合中的代码块,该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的下一代码块,判断该下一代码块是否为该预设敏感代码集合中的代码块。
确定模块902,还用于若该下一代码块为该预设敏感代码集合中的代码块,确定该每个代码块与该下一代码块的路径为泄露路径。
可选的,确定模块902,还用于若该每个代码块不是该预设敏感代码集合中的代码块,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,及该引用参数对应的代码块的声明;根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏感代码块;确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
可选的,该分析模块,还用于对该每个代码块进行回溯别名分析,确定该每个代码块的别名。
检测模块903,还用于根据该每个代码块的别名和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测。
本发明实施例提供的安卓安装包检测方法,可执行上述任一实施例的方法,其具体实现过程及有益效果与上述实施例类似,在此不再赘述。
本发明实施例还提供一种计算机系统。该计算机系统可用于执行前述各个实施例中的安卓安装包检测方法。图10为本发明另一实施例提供的计算机系统的结构示意图。如图10所示,该安卓安装包检测装置1000包括至少一个处理器1001(例如CPU),至少一个网络接口1002或者其他通信接口,存储器1003,和至少一个通信总线1004,用于实现这些装置之间的连接通信。处理器1001用于执行存储器1003中存储的可执行模块,例如计算机程序。存储器1003可能包含高速随机存取存储器(Random Access Memory,简称RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口1002(可以是有线或者无线)实现该安卓安装包检测装置与至少一个安卓平台的智能终端之间的通信连接。
在一些实施方式中,存储器1003存储了程序10031,程序可以被处理器1001执行,以用于:对待测的apk进行分析,获得该apk的源代码;根据该apk的源代码确定该apk的至少一个代码块,和,该apk的所有代码块路径;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条路径;根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺序;根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏洞检测。
本发明实施例提供的安卓安装包检测方法,可执行上述中任一实施例的方法,其具体实现过程及有益效果与上述实施例类似,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM(Read OnlyMemory,只读存储器)、RAM(Read Access Memory,随机存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种安卓安装包检测方法,其特征在于,包括:
对待测的安卓安装包apk进行分析,获得所述apk的源代码;
根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码块路径;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至少一条路径;
根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行列表;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码块执行顺序;
根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测;
其中,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测,包括:
对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名;
根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个代码块,及所述所有代码块路径确定所述apk的代码块执行列表,包括:
从所述至少一个代码块中确定入口节点;所述入口节点的每个代码块用于调用代码块;
根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代码块的出口节点;所述出口节点的每个代码块用于被代码块调用;
将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块外的其他代码块确定为中间节点;
根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序。
3.根据权利要求2所述的方法,其特征在于,所述根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序包括:
判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所述中间节点的代码块;
若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块;
生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码块的代码块执行顺序。
5.根据权利要求4所述的方法,其特征在于,若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块,包括:
若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阈值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测,包括:
若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与所述下一代码块的路径为泄露路径。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明;
根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感代码块;
确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。
8.一种安卓安装包检测装置,其特征在于,包括:
分析模块,用于对待测的安卓安装包apk进行分析,获得所述apk的源代码;
确定模块,用于根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码块路径;根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行列表;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至少一条路径;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码块执行顺序;
检测模块,用于根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测;
其中,所述分析模块,还用于对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名;
所述检测模块,还用于根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测。
9.根据权利要求8所述的装置,其特征在于,
所述确定模块,还用于从所述至少一个代码块中确定入口节点;根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代码块的出口节点;将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块外的其他代码块确定为中间节点;根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序;其中,所述入口节点的每个代码块用于调用代码块,所述出口节点的每个代码块用于被代码块调用。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一判断模块,用于判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所述中间节点的代码块;
生成模块,用于若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
11.根据权利要求10所述的装置,其特征在于,
所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块;
所述生成模块,还用于生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码块的代码块执行顺序。
12.根据权利要求11所述的装置,其特征在于,
所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阈值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
13.根据权利要求8-12中任一项所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
所述确定模块,还用于若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与所述下一代码块的路径为泄露路径。
14.根据权利要求13所述的装置,其特征在于,
所述确定模块,还用于若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明;根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感代码块;确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510085688.2A CN105989294B (zh) | 2015-02-17 | 2015-02-17 | 安卓安装包检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510085688.2A CN105989294B (zh) | 2015-02-17 | 2015-02-17 | 安卓安装包检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105989294A CN105989294A (zh) | 2016-10-05 |
CN105989294B true CN105989294B (zh) | 2019-02-26 |
Family
ID=57038294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510085688.2A Active CN105989294B (zh) | 2015-02-17 | 2015-02-17 | 安卓安装包检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105989294B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778254B (zh) * | 2016-11-24 | 2020-05-01 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN108153666B (zh) * | 2016-12-06 | 2023-05-26 | 三六零科技集团有限公司 | 一种静态检测安卓代码中的资源回收漏洞的方法和装置 |
CN108268773B (zh) * | 2016-12-30 | 2021-12-28 | 南京理工大学 | Android应用升级包本地存储安全性检测方法 |
CN109829312B (zh) * | 2019-01-29 | 2021-01-01 | 北京启明星辰信息安全技术有限公司 | 基于调用链的java漏洞检测方法及检测系统 |
CN112099802B (zh) * | 2020-09-18 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 应用程序的组件识别方法及装置 |
CN114911467B (zh) * | 2021-10-22 | 2023-05-09 | 北京思明启创科技有限公司 | 代码检测方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
CN102945347A (zh) * | 2012-09-29 | 2013-02-27 | 中兴通讯股份有限公司 | 一种检测Android恶意软件的方法、系统及设备 |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
CN103473507A (zh) * | 2013-09-25 | 2013-12-25 | 西安交通大学 | 一种基于方法调用图的Android恶意软件检测方法 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
-
2015
- 2015-02-17 CN CN201510085688.2A patent/CN105989294B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
CN102945347A (zh) * | 2012-09-29 | 2013-02-27 | 中兴通讯股份有限公司 | 一种检测Android恶意软件的方法、系统及设备 |
CN103473507A (zh) * | 2013-09-25 | 2013-12-25 | 西安交通大学 | 一种基于方法调用图的Android恶意软件检测方法 |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
Non-Patent Citations (1)
Title |
---|
"Android系统应用程序组件安全性分析";曾立鹍等;《软件》;20140609;第35卷(第3期);第147页左栏第2段-151页右栏第2段 |
Also Published As
Publication number | Publication date |
---|---|
CN105989294A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105989294B (zh) | 安卓安装包检测方法及装置 | |
Balachandran et al. | Control flow obfuscation for android applications | |
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
WO2017049800A1 (zh) | 检测应用漏洞代码的方法和装置 | |
KR101246623B1 (ko) | 악성 애플리케이션 진단 장치 및 방법 | |
JP7131946B2 (ja) | アプリケーションの保安性を評価する方法およびシステム | |
CN111259395B (zh) | 智能合约的利用程序获取方法、装置及存储介质 | |
CN105022958B (zh) | 一种安卓应用中基于代码库安全规约的应用程序漏洞检测分析方法 | |
US20120110551A1 (en) | Simulating black box test results using information from white box testing | |
US10423408B2 (en) | Identifying and isolating library code in software applications | |
US20240121261A1 (en) | Automated Security Analysis of Software Libraries | |
Elsayed et al. | Offering security diagnosis as a service for cloud SaaS applications | |
JP7287480B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
WO2022180702A1 (ja) | 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法 | |
Martinelli et al. | Evaluating model checking for cyber threats code obfuscation identification | |
KR102118236B1 (ko) | 컨트랙트에 대한 운영 체제 지원 기법 | |
CN106130959A (zh) | 恶意应用识别方法及装置 | |
CN115659358B (zh) | 一种智能合约模糊测试方法及装置 | |
CN113312618A (zh) | 程序漏洞检测方法、装置、电子设备及介质 | |
US20140130019A1 (en) | Hybrid Program Analysis | |
Kang et al. | Scaling javascript abstract interpretation to detect and exploit node. js taint-style vulnerability | |
Singh et al. | Parallel chopped symbolic execution | |
CN102446253B (zh) | 一种网页木马检测方法及系统 | |
CN112506564B (zh) | 一种用于建立控制流图的方法、系统和介质 | |
Heelan et al. | Augmenting vulnerability analysis of binary code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210429 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |