安卓安装包检测方法及装置的制造方法
【专利摘要】本发明实施例提供一种安卓安装包检测方法及装置。本发明实施例的安卓安装包检测方法,包括:对待测的apk进行分析,获得apk的源代码;根据apk的源代码确定apk的至少一个代码块和apk的所有代码块路径;所有代码块路径包括:至少一个代码块中每个代码块与其他代码块的至少一条路径;根据至少一个代码块,及所有代码块路径,确定apk的代码块执行列表;apk的代码块执行列表包括:每个代码块在所有代码块路径上的代码块执行顺序;根据每个代码块和每个代码块在所有代码块路径上的代码块执行顺序,对apk进行漏洞检测。本发明实施例可提高apk漏洞检测的检测准确率。
【专利说明】
安卓安装包检测方法及装置
技术领域
[0001] 本发明实施例设及检测技术,尤其设及一种安卓安装包检测方法及装置。
【背景技术】
[0002] 随着安卓(Amlroid)平台的智能终端的普及,针对安卓(Amlroid)平台的恶意代 码也日益增多,运使得安卓平台智能终端的安全问题不断的增加。安卓平台作为权限分割 的操作系统,通过权限访问控制策略保证应用程序间的隔离性。同时,安卓平台还提供了组 件间通信机制,W通过不同组件间相互访问进行组件功能复用。该组件间通信机制的高灵 活性,使其成为攻击者进行权限提升攻击的主要手段,从而使得该攻击者能够在未经用户 许可的情况下绕过安卓平台的安全机制获得权限。
[0003] 目前,静态污点分析方法是常见的检测安卓安装包(Amlroid化ckage,简称apk) 的方法,该静态污点分析方法按照该apk中代码块的声明顺序,对该apk进行漏桐检巧U。其 中,按照该apk中各代码块的声明顺序对该apk进行漏桐检测,实际上是根据与该代码块的 声明顺序对应的路径进行检测。
[0004] 而该apk中代码块是按照代码块的事件触发顺序进行执行的,且代码块的事件触 发顺序并不限于该代码块的声明顺序,因此采用静态污点分析方法进行apk漏桐检测的准 确率较低。
【发明内容】
阳0化]本发明实施例提供一种安卓安装包检测方法及装置,W解决静态污点分析方法的 检测准确率较低的问题。
[0006] 第一方面,本发明实施例提供一种安卓安装包检测方法,包括:
[0007] 对待测的安卓安装包apk进行分析,获得所述apk的源代码;
[0008] 根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码 块路径;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至 少一条路径;
[0009] 根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行 列表;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码 块执行顺序;
[0010] 根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行 顺序,对所述apk进行漏桐检测。
[0011] 根据第一方面,在第一方面的第一种可能实现的方式中,所述根据所述至少一个 代码块,及所述所有代码块路径确定所述apk的代码块执行列表,包括:
[0012] 从所述至少一个代码块中确定入口节点;所述入口节点的每个代码块用于调用代 码块;
[0013] 根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代 码块的出口节点;所述出口节点的每个代码块用于被代码块调用;
[0014] 将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代 码块外的其他代码块确定为中间节点;
[0015] 根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述 所有代码块路径上的代码块执行顺序。
[0016] 根据第一方面的第一种可能实现的方式,在第二种可能实现的方式中,所述根据 所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路 径上的代码块执行顺序包括:
[0017] 判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所 述中间节点的代码块;
[0018] 若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述 入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
[0019] 根据第一方面的第二种可能实现的方式,在第Ξ种可能实现的方式中,所述方法 还包括:
[0020] 若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述 中间节点的代码块对应的所述出口节点的代码块;
[0021] 生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码 块的代码块执行顺序。
[0022] 根据第一方面的第Ξ种可能实现的方式,在第四种可能实现的方式中,若所述入 口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间节点的代码块 对应的所述出口节点的代码块,包括:
[0023] 若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述 中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阔值,采用递 归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
[0024] 根据第一方面至第一方面的第四种可能实现的方式中任意一种,在第五种可能实 现的方式中,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码 块执行顺序,对所述apk进行漏桐检测,包括:
[0025] 若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或 所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码 块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
[00%] 若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与 所述下一代码块的路径为泄露路径。
[0027] 根据第一方面的第五种可能实现的方式,在第六种可能实现的方式中,所述方法 还包括:
[0028] 若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代 码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明;
[0029] 根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感 代码块;
[0030] 确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。
[0031] 根据第一方面至第一方面的第六种可能实现的方式中任意一种,在第屯种可能实 现的方式中,所述根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码 块执行顺序,对所述apk进行漏桐检测,包括:
[0032] 对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名;
[0033] 根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码 块执行顺序,对所述apk进行漏桐检测。
[0034] 第二方面,本发明实施例提供一种安卓安装包检测装置,包括:
[0035] 分析模块,用于对待测的安卓安装包apk进行分析,获得所述apk的源代码;
[0036] 确定模块,用于根据所述apk的源代码确定所述apk的至少一个代码块,和,所述 apk的所有代码块路径;根据所述至少一个代码块,及所述所有代码块路径,确定所述apk 的代码块执行列表;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他 代码块的至少一条路径;所述apk的代码块执行列表包括:所述每个代码块在所述所有代 码块路径上的代码块执行顺序;
[0037] 检测模块,用于根据所述每个代码块和所述每个代码块在所述所有代码块路径上 的代码块执行顺序,对所述apk进行漏桐检测。
[0038] 根据第二方面,在第二方面的第一种可能实现的方式中,所述确定模块,还用于从 所述至少一个代码块中确定入口节点;根据所述入口节点的每个代码块分别确定所述入口 节点的每个代码块为起始代码块的出口节点;将所述至少一个代码块中所述入口节点的每 个代码块和所述出口节点的每个代码块外的其他代码块确定为中间节点;根据所述入口节 点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码 块执行顺序;其中,所述入口节点的每个代码块用于调用代码块,所述出口节点的每个代码 块用于被代码块调用。
[0039] 根据第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述装置 还包括:
[0040] 第一判断模块,用于判断所述入口节点的每个代码块调用的代码块,为所述出口 节点的代码块还是所述中间节点的代码块;
[0041] 生成模块,用于若所述入口节点的每个代码块调用的代码块为所述出口节点的代 码块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。
[0042] 根据第二方面的第二种可能实现的方式,在第Ξ种可能实现的方式中,
[0043] 所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节 点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码块;
[0044] 所述生成模块,还用于生成所述入口节点的每个代码块、所述中间节点的代码块 至所述出口节点的代码块的代码块执行顺序。
[0045] 根据第二方面的第Ξ种可能实现的方式,在第四种可能实现的方式中,
[0046] 所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节 点的代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设 的递归阔值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。
[0047] 根据第二方面至第二方面的第四种可能实现的方式中任意一种,在第五种可能实 现的方式中,所述装置还包括:
[0048] 第二判断模块,用于若所述每个代码块为预设敏感代码集合中的代码块,所述每 个代码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每 个代码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块;
[0049] 所述确定模块,还用于若所述下一代码块为所述预设敏感代码集合中的代码块, 确定所述每个代码块与所述下一代码块的路径为泄露路径。
[0050] 根据第二方面的第五种可能实现的方式,在第六种可能实现的方式中,
[0051] 所述确定模块,还用于若所述每个代码块不是所述预设敏感代码集合中的代码 块,根据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参 数对应的代码块的声明;根据所述引用参数对应的代码块的声明,确定所述引用参数对应 的代码块为敏感代码块;确定所述每个代码块与所述引用参数对应的代码块的路径为泄露 路径。
[0052] 根据第二方面至第二方面的第六种可能实现的方式中任意一种,在第屯种可能实 现的方式中,所述分析模块,还用于对所述每个代码块进行回溯别名分析,确定所述每个代 码块的别名;
[0053] 所述检测模块,还用于根据所述每个代码块的别名和所述每个代码块在所述所有 代码块路径上的代码块执行顺序,对所述apk进行漏桐检测。
[0054] 本发明实施例安卓安装包检测方法及装置,通过对待测的apk进行分析,获得该 apk的至少一个代码块和该apk的路径顺序列表;根据该每个代码块和该apk的路径顺序 列表中该每个代码块与其他代码块的至少一条路径对该apk进行漏桐检测,由于该apk的 路径顺序列表包括:该apk的所有路径的代码块执行顺序;该apk的所有路径包括:该至少 一个代码块中每个代码块与该其他代码块的至少一条路径,那么该方法实际是根据该apk 的所有代码块在该apk的所有路径执行顺序对该apk进行漏桐检测,因而,采用本发明实施 例的方法进行apk漏桐检测可提高检测准确率。
【附图说明】
[0055] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可W 根据运些附图获得其他的附图。
[0056] 图1为本发明一实施例提供的安卓安装包检测方法的流程图;
[0057] 图2为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0058] 图3为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0059] 图4为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0060] 图5为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0061] 图6为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0062] 图7为本发明另一实施例提供的别名树的结构示意;
[0063] 图8为本发明另一实施例提供的安卓安装包检测方法的流程图;
[0064] 图9为本发明另一实施例提供的安卓安装包检测装置的结构示意图; 阳0化]图10为本发明另一实施例提供的计算机系统的结构示意图。
【具体实施方式】
[0066] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0067] 该方法由安卓安装包检测装置执行,该装置通常W软件的形式作为安全检测软件 集成在个人电脑(PCJersonal Computer)的处理器或云端数据中屯、的处理器上,通过运行 该安全监测软件执行该安卓安装包检测方法,从而对与该PC或该云端数据中屯、网络连接 的安卓智能终端的apk(An化oid化ckage,安卓安装包)进行检测。该装置还可W硬件和/ 或软件的方式来实现,集成在该安卓智能终端的处理器中。图1为本发明一实施例提供的 安卓安装包检测方法的流程图。如图1所示,本实施例的方法包括如下步骤:
[0068] S101、对待测的apk进行分析,获得该apk的源代码。 W例具体地,该apk实际为经安卓模拟器,如安卓软件开发工具(Software Development Kit,简称SDK)编译后的该安卓平台的操作系统识别的文件。该apk可W包括 被编译的执行程序,文件资源(resources)、证书(certificates),和清单文件(manifest file)等。对该apk进行分析,可W是通过调用该apk对应的应用程序接口(Application Programming Inte计ace,简称API)对该apk进行反编译,获得该apk中该被编译的执行程 序的源代码。该apk中的该被编译的执行文件可W为经过化Iv化虚拟机转换的应用程序, 该apk中的该被编译的执行文件可W为化Iv化可执行化Iv化Execut油le,简称dex)程 序。该dex程序的源代码为化Iv化字节码。
[0070] 对该apk进行分析,可W是采用开源软件如SOOT中的Dexpler工具调用该apk 对应的API对该apk进行分析,并将该apk文件中的该dex程序从化Iv化字节码转化为 Jimple的Ξ地址代码(t虹ee-acMress code)。该Ξ地址代码也可称为该化Iv化字节码与 化va源代码间的中间代码。
[0071] S102、根据该apk的源代码确定该apk的至少一个代码块和该apk的所有代码块 路径;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条 路径。
[0072] 具体地,该apk的至少一个代码块为该apk所包括的所有代码块。其中,一个代码 块度lock)可W为一个方法包,而一个方法包可包括至少一个方法,那么该一个代码块则 可包括实现该至少一个方法对应的代码。其中,该一个方法可W是实现一种操作或功能采 用的方法。也即是说,该一个代码块可W为该apk的一个独立组件,该apk的至少一个代码 块中每个代码块可独立运行实现一个操作或功能,也可与其他代码块配合,从而实现该曰pk 的完整功能。
[0073] 根据该apk的源代码获得该apk的至少一个代码块可W是根据对该apk分析后获 得的中间代码,也就是Ξ地址代码确定的。
[0074] 由于安卓平台中提供了组件间通信机制,那么该apk的至少一个代码块中每个代 码块可作为一个独立组件与其他代码块相互访问,而至少两个代码块间的调用与被调用即 可构成路径,因此,该每个代码块与该其他代码块具有至少一个路径。该所有代码块路径包 括该apk中所有代码块的代码块路径,该所有代码块路径包括:该至少一个代码块中每个 代码块与该其他代码块的至少一条路径。
[00巧]S103、根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列 表;该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺 序。
[0076] 该apk的代码块执行列表中包括的该每个代码块在每条路径的代码块执行顺序, 可W是通过该每个代码块在该每条路径上的执行序号。该每个代码块在该每条路径上的执 行序号,可W是通过该每个代码块在该每条路径上的顺序标识,如数字序号或字母序号等 表不。
[0077] 该apk的代码块执行列表可W通过表项来表示,那么该apk的代码块执行列表可 包括该所有代码块路径和该每个代码块在该所有代码块路径上的执行序号。该apk的代码 块执行列表还可通过路径流程图的形式表示,在该路径流程图中,每条路径上的各代码块 可标注有对应的执行序号。
[0078] S104、根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺 序,对该apk进行漏桐检测。
[0079] 根据该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对 该apk进行漏桐检测,可W是针对该每个代码块,分别检测该每个代码块在该每个代码块 与该其他代码块的至少一条路径中是否存在泄漏路径,从而确定该apk是否存在漏桐。
[0080] 本发明实施例提供的安卓安装包检测方法,通过对待测的apk进行分析,获得该 apk的源代码;根据该apk的源代码确定该apk的至少一个代码块和该apk的所有代码块 路径;根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列表;根据 该每个代码块和该每个代码块在该所有代码块路径上的代码块执行顺序对该apk进行漏 桐检测,由于该所有代码块路径包括:该至少一个代码块中每个代码块与该其他代码块的 至少一条路径,该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代 码块执行顺序,那么该方法实际是根据该apk的所有代码块在该所有代码块路径上的代码 块执行顺序对该apk进行漏桐检测,因而,本发明实施例的方法进行apk漏桐检测可提高检 测的准确率。
[0081] 本发明实施例还提供一种安卓安装包检测方法。图2为本发明另一实施例提供的 安卓安装包检测方法的流程图。如图2所示,该方法在上述实施例中S103中根据该至少一 个代码块,及该所有代码块路径确定该apk的代码块执行列表,可包括:
[0082] S201、从该至少一个代码块中确定入口节点;该入口节点的每个代码块用于调用 代码块。
[0083] 具体地,从该至少一个代码块中确定入口节点,可W是根据该所有代码块路径确 定每条代码块路径的初始代码块,从该至少一个代码块中确定该入口节点。该入口节点 (entry node)也可称为源节点(source node)。
[0084] S202、根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代 码块的出口节点;该出口节点的每个代码块用于被代码块调用。
[0085] 根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代码块 的出口节点,可W是分别获取该入口节点的每个代码块的信息,并根据获取的信息确定该 每个代码块的出口节点的信息,继而根据该每个代码块的出口节点的信息确定该每个代码 块为起始代码块的出口节点。该出口节点(exit node)还可称为目标节点(target node)。
[0086] S203、将该至少一个代码块中该入口节点的每个代码块和该出口节点的每个代码 块外的其他代码块确定为中间节点。
[0087] S204、根据该入口节点、该出口节点及该中间节点,确定该每个代码块在该所有代 码块路径上的代码块执行顺序。
[0088] 也就是说,对于入口节点中的每个代码块在该所有代码块路径中每条代码块路径 上生成一个次序,即执行顺序。
[0089] 本发明实施例还提供一种安卓安装包检测方法。图3为本发明另一实施例提供的 安卓安装包检测方法的流程图。如图3所示,可选的,S204中根据该入口节点、该出口节点 及该中间节点,确定该每个代码块在该所有代码块路径上的代码块执行顺序可包括:
[0090] S301、判断该入口节点的每个代码块调用的代码块,为该出口节点的代码块还是 该中间节点的代码块。
[0091] 该判断该入口节点的每个代码块调用的代码块为该出口节点的代码块还是该中 间节点的代码块,可W是判断该入口节点的每个代码块调用的代码块的出边集合是否为 零。若该入口节点的每个代码块调用的代码块的出边集合为零,则该入口节点的每个代码 块调用的代码块为该出口节点的代码块。若该入口节点的每个代码块调用的代码块的出边 集合不为零,则该入口节点的每个代码块调用的代码块为该中间节点的代码块。
[0092] S302、若该入口节点的每个代码块调用的代码块为该出口节点的代码块,生成该 入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。
[0093] 可选的,所述方法还包括:
[0094] S303、若该入口节点的每个代码块调用的代码块为该中间节点的代码块,确定该 中间节点的代码块对应的该出口节点的代码块。
[00巧]S304、生成该入口节点的每个代码块、该中间节点的代码块至该出口节点的代码 块的代码块执行顺序。
[0096] 可选的,S303中若该入口节点的每个代码块调用的代码块为该中间节点的代码 块,确定该中间节点的代码块对应的该出口节点的代码块,可包括:
[0097] 若该入口节点的每个代码块调用的代码块为该中间节点的代码块,且,该中间节 点的代码块具有未被访问的该出口节点的代码块,根据预设的递归阔值,采用递归调用,确 定该中间节点的代码块对应的该出口节点的代码块。
[0098] 具体地,该入口节点的每个代码块调用的代码块为该中间节点的代码块,也就是 该入口节点的每个代码块调用的代码块的出边集合不为零。该中间节点的代码块具有未被 访问的该出口节点的代码块,也就是说,该中间节点的代码块具有未被访问的出边。在每条 路径上,入口节点的代码块、中间节点的代码块及出口节点的代码块可构成一条边(edge)。 也就是说,对于该入口节点的一个代码块,该一个代码与一个其他代码块的一条路径,可W 称为一条边。
[0099] 根据预设的递归阔值,采用递归调用,确定该中间节点的代码块对应的该出口节 点的代码块,可W是当该中间节点的代码块具有未被访问的所述出口节点的代码块时,确 定该中间节点的代码块对应的该出口节点的第一代码块,并标记该中间节点的代码块与该 第一代码块的边已被访问;同时对递归次数加1,再次确定该中间节点的代码块对应的该 出口节点的第二代码块;当该递归次数大于或等于该递归阔值,生成该入口节点的每个代 码块、该中间节点的代码块及上述各递归次数获得的该中间节点的代码块对应的该出口节 点的代码块的执行顺序。 阳100] 本实施例提供的的方法中,根据预设的递归阔值,采用递归调用,确定该中间节点 的代码块对应的该出口节点的代码块,可避免检测方法陷入死循环。 阳101] 本发明实施例还提供一种安卓安装包检测方法。图4为本发明另一实施例提供的 安卓安装包检测方法的流程图。如图4所示,该方法在上述实施例的S104中根据该每个代 码块和该每个代码块在该所有代码块路径上的代码块执行顺序,对该apk进行漏桐检测, 可包括:
[0102] S401、若该每个代码块为预设敏感代码集合中的代码块,且该每个代码块的输出 值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的下一代码块, 判断该下一代码块是否为该预设敏感代码集合中的代码块。
[0103] 具体地,该预设敏感代码集合可包括至少一个代码块,该预设敏感代码集合中的 所有代码块均为敏感代码块。该预设敏感代码集合中的所有代码块可W根据结合其他安全 检测软件的检测结果中的存在漏桐的代码块的统计结果,预先进行配置的。
[0104] 若该每个代码块为预设敏感代码集合中的代码块,那么该每个代码块的输出值或 该每个代码块使用的参数则为敏感数据。该每个代码块的输出值或该每个代码块使用的参 数被传递,至该所有代码块路径上该每个代码块的下一代码块,可W是W该每个代码块的 输出值或该每个代码块使用的参数作为该下一代码块的输入值,使得该下一代码块根据该 输入值运行。
[01化]该判断该下一代码块是否为该预设敏感代码集合中的代码块,例如可W是通过比 较该下一代码块与该预设代码集合中的各代码块进行确定。
[0106] 需要说明的是,在该实施例的S401若该每个代码块为预设敏感代码集合中的代 码块,且该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上 该每个代码块的下一代码块,判断该下一代码块是否为该预设敏感代码集合中的代码块之 前,该方法还可包括: 阳107] 判断该每个代码块是否为该预设敏感代码集合中的代码块;
[0108] 若该每个代码块为该预设敏感代码集合中的代码块,判断该每个代码块的输出值 或该每个代码块使用的参数是否被传递至该下一代码块。
[0109] S402、若该下一代码块为该预设敏感代码集合中的代码块,确定该每个代码块与 该下一代码块的路径为泄露路径。
[0110] 若该每个代码块为该预设敏感代码集合中的代码块,该每个代码块的输出值或所 述每个代码块使用的参数被传递至该下一代码块,且该下一代码块也为该预设敏感代码集 合中的代码块,也就是说,该每个代码块和该下一代码块作为敏感代码集合中的代码块,即 敏感代码块,通过代码块之间的传输路径传输敏感数据。那么该每个代码块与该下一代码 块的路径可能被攻击者所利用,从而获取该智能终端的私密信息,因此,确定该每个代码块 与该下一代码块的路径为泄露路径。 阳111] 该实施例通过检测该每个代码块与该下一代码块的路径,对该apk进行漏桐分 析。该每个代码块与该下一代码块的路径为泄露路径,那么包括该每个代码块与该下一代 码块的该apk存在漏桐。也就是说,该实施例的方法中,针对该每个代码块在该所有代码块 路径上,W代码块为单位逐个进行检测,可保证对该apk的漏桐分析更准确,提高apk漏桐 检测的准确率。
[0112] 该实施例还提供一种安卓安装包检测方法。图5为本发明另一实施例提供的安卓 安装包检测方法的流程图。如图5所示,该方法,还可包括:
[0113] S501、若该每个代码块不是该预设敏感代码集合中的代码块,根据该apk的源代 码确定该每个代码块的引用参数对应的代码块,及该引用参数对应的代码块的声明。
[0114] 具体地,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,可W 是根据该apk的源代码确定该每个代码块、该每个代码块的引用参数对应的代码块及该引 用参数对应的代码块的实例。举例来说,若该apk的源代码中,该每个代码块为Sink (a. getin化0)。那么该每个代码块为Sink代码块,该Sink代码块的引用参数为getinfo 0, 即getin化的输出值,那么该每个代码块的引用参数对应的代码块则可W为getin化代码 块,该引用参数对应的代码块的实例为Sink代码块的a实例。
[0115] 确定该引用参数对应的代码块的声明,可W是确定该实例的声明,并根据该实例 的声明确定该实例的类,继而根据该实例的类确定该实例的类对应的基类代码块,在该基 类代码块对应的源代码中确定该引用参数对应的代码块的声明。其中,该引用参数对应的 代码块的声明指的是,该引用参数对应的代码块的访问权限的声明;该实例的声明,为该实 例的访问权限声明。的举例来说,若Sink(a. getin化0)代码块所在代码块的源代码如下 所示。 阳116]
[0117] 上述该Sink (a. getin化0)代码块所在代码块的源代码中,该实例的声明代码"A a = new A 0 "声明了该实例a的类为A。
[011引该类A的代码块的源代码可如下所示:
[0119] Public class A extends General{ 阳 120] Ml〇{···} 阳121] } 阳122] 该实例的类A的代码块中,该基类代码块为General代码块。 阳123] 该基类代码块对应的源代码例如可W如下所示: 阳 124]
[01巧]该基类代码块,如General代码块对应的源代码中确定该引用参数对应的代码块 的声明代码"Public string getinfoQ"。
[01%] S502、根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏 感代码块。 阳127] 根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏感代码 块,可W是W该引用参数对应的代码块的声明为起始,查找该引用参数对应的代码块中是 否包括预设代码,如返回值代码,return,若包括该引用参数对应的代码块中包括该预设代 码,则该引用参数对应的代码块为敏感代码块。其中,该引用参数对应的代码块的声明,为 该引用参数对应的代码块的访问权限声明。
[0128] 举例来说,若该引用参数对应的代码块的源代码如下所示: 阳 129]
阳130] 因而,m亥引用参数对应的代码块的声明代码叩Ublic string getin化0"为起 始,由于该引用参数对应的代码块中包括该预设代码return,确定该引用参数对应的代码 块为敏感代码。 阳131] S503、确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
[0132] 由于该引用参数对应的代码块为敏感代码,那么该引用参数对应的代码块与该每 个代码的路径中必然存在权限泄露,因而,确定该每个代码块与该引用参数对应的代码块 的路径为泄露路径。
[0133] 需要说明的是,本实施例中上述各实例、类或代码块的声明仅W化blic为例进行 说明,该各实例、类或代码块的声明还可W是Private或Protected等其他类型的访问权限 声明,在此不再寶述。
[0134] 本实施例的安卓安装包检测方法中,对apk进行漏桐检测,还考虑了面向对象 的bject化iented)属性问题中的类继承,可使得该检测方法的检测准确度更高。
[0135] 可选的,本发明实施例还提供另一种安卓安装包检测方法。图6为本发明另一实 施例提供的安卓安装包检测方法的流程图。如图6所示,该方法,在S104中根据该每个代码 块和该每个代码块在该所有代码块上的代码块执行顺序,对该apk进行漏桐检测,可包括: 阳136] S601、对该每个代码块进行回溯别名分析,确定该每个代码块的别名。
[0137] 具体地,同一代码块可能具有不同的名称,该同一代码块的不同名称互为该同一 代码块的别名。该回溯别名分析还可为point to分析。
[0138] 不同代码块中可W通过对该每个代码块进行回溯别名分析,建立该每个代码块的 别名树,并根据所述每个代码块的别名数确定该每个代码块的别名。
[0139] 举例来说,若该apk中包括如下Ξ个代码块,该Ξ个代码块中第一代码块可W如 下所示:
[0140] Void main () {
[0141] A a = new A (); 阳 142] G b = a. g ; 阳 143] foo(a);
[0144] sink (b. f);
[0145] }
[0146] 根据该第一代码块中"G b = a.g"可知,代码块类G中的b与a.g互为别名。根 据"A a = new AQ ;G b = a. g ;"可知,b为a的子类代码块。根据"抓=a. g ;foo(a); sink (b. f)"可知,b. f为b的子类代码块。 阳147] 该第二代码块可W如下所示:
[0148] Void foo(A z)
[0149] { 阳 150] G X = z. g ;
[0151] String w = source 0 ; 阳 152] X. f = w ; 阳153] }
[0154] 根据该第二代码块中"G x = z.g"可知,代码块类G中的X与z.g互为别名。根 据该第一代码块中的"foo(a)"和该第二代码块中的"f〇〇(A Z)"可知,a与Z互为别名。根 据"G X = Z. g ;St;ring W = source 0 ;x. f = W"可知,X. f 为 X 的子类代码块。 阳155] 该第Ξ代码块可如下所示: 阳 156]
阳157] 根据"Class A"可知,该第Ξ代码块中声明了代码块类A,根据"ClassG"可知该第 Ξ代码块中声明了代码块类G。根据"化blic G g"可知,在该第Ξ代码块在代码块类A中 声明一个代码块类G和代码块类G的实例g,运是一个类嵌套现象。根据"化blic string f"可知,该第Ξ代码块在代码块类G中还声明一个字符串f。图7为本发明另一实施例提 供的别名树的结构示意图。该图7的别名树可W是根据如上所述的Ξ个代码块的获得的各 代码块的别名并建立的。
[0158] S602、根据该每个代码块的别名和该每个代码块在该所有代码块路径上的代码块 执行顺序,对该apk进行漏桐检测。
[0159] 同时,本实施例的另一种安卓安装包检测方法中,对apk进行漏桐检测的方法中 还考虑了回溯别名分析,也就是point to分析,可更好地保证该检测方法的检测准确度。
[0160] 本发明实施例还提供一种安卓安装包检测方法。该实施例通过具体的实例对上述 任一实施例的方法进行说明。图8为本发明另一实施例提供的安卓安装包检测方法的流程 图。如图8所示,该方法可包括: 阳161] S801、对该待测的apk进行分析,获得该apk的源代码。
[0162] S802、根据该apk的源代码确定该至少一个代码块,及该apk的所有代码块路径; 该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至少一条路径。
[0163] S803、根据该至少一个代码块,及该所有代码块路径,确定该apk的代码块执行列 表;该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码块执行顺 序。
[0164] S804、根据该apk的源代码对该至少一个代码块的每个代码块进行回溯别名分 析,确定该每个代码块的别名。
[0165] S805、根据该每个代码块的别名判断该每个代码块是否为预设敏感代码集合中的 代码块。
[0166] 若是,则继续执行S806至S814,若否,则继续执行S815至S817。
[0167] S806、若该每个代码块为该预设敏感代码集合中的代码块,确定该至少一个代码 块中的入口节点;该入口节点的每个代码块用于调用代码块。
[0168] S807、根据该入口节点的每个代码块分别确定该入口节点的每个代码块为起始代 码块的出口节点;该出口节点的每个代码块用于被代码块调用。 阳169] S808、将该至少一个代码块中该入口节点的每个代码块和该出口节点的每个代码 块外的其他代码块确定为中间节点。
[0170] S809、判断该入口节点的每个代码块调用的代码块,为该出口节点的代码块还是 该中间节点的代码块。 阳171 ] 若该入口节点的每个代码块调用的代码块为该出口节点的代码块,继续执行步骤 S810 ;若该入口节点的每个代码块调用的代码块为该中间节点的代码块,继续执行S811至 S814。 阳172] S810、若该入口节点的每个代码块调用的代码块为该出口节点的代码块,生成该 入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。 阳173] S811、若该入口节点的每个代码块调用的代码块为该中间节点的代码块,且,该中 间节点的代码块具有未被访问的该出口节点的代码块,根据预设的递归阔值,采用递归调 用,确定该中间节点的代码块对应的该出口节点的代码块。 阳174] S812、生成该入口节点的每个代码块、该中间节点的代码块至该出口节点中的代 码块的代码块执行顺序。
[01巧]S813、该每个代码块的输出值或该每个代码块使用的参数被传递至该所有代码块 路径上该每个代码块的下一代码块,且该下一代码块为该预设敏感代码集合中的代码块, 确定该每个代码块与该下一代码块的路径为泄露路径。
[0176] S814、若该每个代码块不是该预设敏感代码集合中的代码块,根据该apk的源代 码确定该每个代码块的引用参数对应的代码块,及该引用参数对应的代码块的声明。
[0177] S815、根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为敏 感代码块。
[0178] S816、确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
[0179] 本发明实施例的安卓安装包检测方法,通过具体实例对上述任一实施例的方法进 行说明,其有益效果与上述实施例类似,在此不再寶述。 阳180] 本发明实施例还提供一种安卓安装包检测装置。本发明实施例的安卓安装包检测 装置可执行上述任一实施例所述的安卓安装包检测方法。图9为本发明另一实施例提供的 安卓安装包检测装置的结构示意图。如图9所示,该安卓安装包检测装置900可包括:分析 模块901、确定模块902和检测模块903。 阳181] 其中,分析模块901,用于对待测的apk进行分析,获得该apk的源代码。 阳182] 确定模块902,用于根据所述apk的源代码确定该apk的至少一个代码块,和,该 apk的所有代码块路径;根据该至少一个代码块,及该所有代码块路径,确定该apk的代码 块执行列表;该所有代码块路径包括:该至少一个代码块中每个代码块与其他代码块的至 少一条路径。该apk的代码块执行列表包括:该每个代码块在该所有代码块路径上的代码 块执行顺序。
[0183] 检测模块903,用于根据该每个代码块和该每个代码块在该所有代码块路径上的 代码块执行顺序,对该apk进行漏桐检测。
[0184] 可选的,确定模块902,还用于从该至少一个代码块中确定入口节点;根据该入口 节点的每个代码块分别确定该入口节点的每个代码块为起始代码块的出口节点;将该至少 一个代码块中该入口节点的每个代码块和该出口节点的每个代码块外的其他代码块确定 为中间节点;根据该入口节点、该出口节点及该中间节点,确定该每个代码块在该所有代码 块路径上的代码块执行顺序。其中,该入口节点的每个代码块用于调用代码块,该出口节点 的每个代码块用于被代码块调用。 阳化5] 可选的,安卓安装包检测装置900还包括:
[0186] 第一判断模块,用于判断该入口节点的每个代码块调用的代码块,为该出口节点 的代码块还是该中间节点的代码块。
[0187] 生成模块,用于若该入口节点的每个代码块调用的代码块为该出口节点的代码 块,生成该入口节点的每个代码块至该出口节点的代码块的代码块执行顺序。
[0188] 可选的,确定模块902,还用于若该入口节点的每个代码块调用的代码块为该中间 节点的代码块,确定该中间节点的代码块对应的该出口节点的代码块。
[0189] 该生成模块,还用于生成该入口节点的每个代码块、该中间节点的代码块至该出 口节点的代码块的代码块执行顺序。
[0190] 可选的,确定模块902,还用于若该入口节点的每个代码块调用的代码块为该中间 节点的代码块,且,该中间节点的代码块具有未被访问的该出口节点的代码块,根据预设的 递归阔值,采用递归调用,确定该中间节点的代码块对应的该出口节点的代码块。 阳191] 可选的,该安卓安装包检测装置900还包括:
[0192] 第二判断模块,用于若该每个代码块为预设敏感代码集合中的代码块,该每个代 码块的输出值或该每个代码块使用的参数被传递至该所有代码块路径上该每个代码块的 下一代码块,判断该下一代码块是否为该预设敏感代码集合中的代码块。 阳193] 确定模块902,还用于若该下一代码块为该预设敏感代码集合中的代码块,确定该 每个代码块与该下一代码块的路径为泄露路径。
[0194] 可选的,确定模块902,还用于若该每个代码块不是该预设敏感代码集合中的代码 块,根据该apk的源代码确定该每个代码块的引用参数对应的代码块,及该引用参数对应 的代码块的声明;根据该引用参数对应的代码块的声明,确定该引用参数对应的代码块为 敏感代码块;确定该每个代码块与该引用参数对应的代码块的路径为泄露路径。
[0195] 可选的,该分析模块,还用于对该每个代码块进行回溯别名分析,确定该每个代码 块的别名。
[0196] 检测模块903,还用于根据该每个代码块的别名和该每个代码块在该所有代码块 路径上的代码块执行顺序,对该apk进行漏桐检测。 阳197] 本发明实施例提供的安卓安装包检测方法,可执行上述任一实施例的方法,其具 体实现过程及有益效果与上述实施例类似,在此不再寶述。
[0198] 本发明实施例还提供一种计算机系统。该计算机系统可用于执行前述各个实施例 中的安卓安装包检测方法。图10为本发明另一实施例提供的计算机系统的结构示意图。如 图10所示,该安卓安装包检测装置1000包括至少一个处理器1001 (例如CPU),至少一个网 络接口 1002或者其他通信接口,存储器1003,和至少一个通信总线1004,用于实现运些装 置之间的连接通信。处理器1001用于执行存储器1003中存储的可执行模块,例如计算机 程序。存储器1003可能包含高速随机存取存储器(Random Access Memo巧,简称RAM),也 可能还包括非不稳定的存储器(non-volatile memcxry),例如至少一个磁盘存储器。通过至 少一个网络接口 1002(可W是有线或者无线)实现该安卓安装包检测装置与至少一个安卓 平台的智能终端之间的通信连接。
[0199] 在一些实施方式中,存储器1003存储了程序10031,程序可W被处理器1001执行, W用于:对待测的apk进行分析,获得该apk的源代码;根据该apk的源代码确定该apk的 至少一个代码块,和,该apk的所有代码块路径;该所有代码块路径包括:该至少一个代码 块中每个代码块与其他代码块的至少一条路径;根据该至少一个代码块,及该所有代码块 路径,确定该apk的代码块执行列表;该apk的代码块执行列表包括:该每个代码块在该所 有代码块路径上的代码块执行顺序;根据该每个代码块和该每个代码块在该所有代码块路 径上的代码块执行顺序,对该apk进行漏桐检测。 阳200] 本发明实施例提供的安卓安装包检测方法,可执行上述中任一实施例的方法,其 具体实现过程及有益效果与上述实施例类似,在此不再寶述。 阳201 ] 本领域普通技术人员可W理解:实现上述各方法实施例的全部或部分步骤可W通 过程序指令相关的硬件来完成。前述的程序可W存储于一计算机可读取存储介质中。该程 序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM巧ead化ly Memcxry,只读存储器)、RAM巧ead Access Memcxry,随机存储器)、磁碟或者光盘等各种可W 存储程序代码的介质。 阳202] 最后应说明的是:W上各实施例仅用W说明本发明的技术方案,而非对其限制; 尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可W对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征 进行等同替换;而运些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技 术方案的范围。
【主权项】
1. 一种安卓安装包检测方法,其特征在于,包括: 对待测的安卓安装包apk进行分析,获得所述apk的源代码; 根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk的所有代码块路 径;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码块的至少一 条路径; 根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代码块执行列表; 所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块路径上的代码块执行 顺序; 根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代码块执行顺序, 对所述apk进行漏洞检测。2. 根据权利要求3所述的方法,其特征在于,所述根据所述至少一个代码块,及所述所 有代码块路径确定所述apk的代码块执行列表,包括: 从所述至少一个代码块中确定入口节点;所述入口节点的每个代码块用于调用代码 块; 根据所述入口节点的每个代码块分别确定所述入口节点的每个代码块为起始代码块 的出口节点;所述出口节点的每个代码块用于被代码块调用; 将所述至少一个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块 外的其他代码块确定为中间节点; 根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在所述所有 代码块路径上的代码块执行顺序。3. 根据权利要求2所述的方法,其特征在于,所述根据所述入口节点、所述出口节点及 所述中间节点,确定所述每个代码块在所述所有代码块路径上的代码块执行顺序包括: 判断所述入口节点的每个代码块调用的代码块,为所述出口节点的代码块还是所述中 间节点的代码块; 若所述入口节点的每个代码块调用的代码块为所述出口节点的代码块,生成所述入口 节点的每个代码块至所述出口节点的代码块的代码块执行顺序。4. 根据权利要求3所述的方法,其特征在于,所述方法还包括: 若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,确定所述中间 节点的代码块对应的所述出口节点的代码块; 生成所述入口节点的每个代码块、所述中间节点的代码块至所述出口节点的代码块的 代码块执行顺序。5. 根据权利要求4所述的方法,其特征在于,若所述入口节点的每个代码块调用的代 码块为所述中间节点的代码块,确定所述中间节点的代码块对应的所述出口节点的代码 块,包括: 若所述入口节点的每个代码块调用的代码块为所述中间节点的代码块,且,所述中间 节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递归阈值,采用递归调 用,确定所述中间节点的代码块对应的所述出口节点的代码块。6. 根据权利要求1-5中任一项所述的方法,其特征在于,所述根据所述每个代码块和 所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测, 包括: 若所述每个代码块为预设敏感代码集合中的代码块,所述每个代码块的输出值或所述 每个代码块使用的参数被传递至所述所有代码块路径上所述每个代码块的下一代码块,判 断所述下一代码块是否为所述预设敏感代码集合中的代码块; 若所述下一代码块为所述预设敏感代码集合中的代码块,确定所述每个代码块与所述 下一代码块的路径为泄露路径。7. 根据权利要求6所述的方法,其特征在于,所述方法还包括: 若所述每个代码块不是所述预设敏感代码集合中的代码块,根据所述apk的源代码确 定所述每个代码块的引用参数对应的代码块,及所述引用参数对应的代码块的声明; 根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码块为敏感代码 块; 确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。8. 根据权利要求1-7中任一项所述的方法,其特征在于,所述根据所述每个代码块和 所述每个代码块在所述所有代码块路径上的代码块执行顺序,对所述apk进行漏洞检测, 包括: 对所述每个代码块进行回溯别名分析,确定所述每个代码块的别名; 根据所述每个代码块的别名和所述每个代码块在所述所有代码块路径上的代码块执 行顺序,对所述apk进行漏洞检测。9. 一种安卓安装包检测装置,其特征在于,包括: 分析模块,用于对待测的安卓安装包apk进行分析,获得所述apk的源代码; 确定模块,用于根据所述apk的源代码确定所述apk的至少一个代码块,和,所述apk 的所有代码块路径;根据所述至少一个代码块,及所述所有代码块路径,确定所述apk的代 码块执行列表;所述所有代码块路径包括:所述至少一个代码块中每个代码块与其他代码 块的至少一条路径;所述apk的代码块执行列表包括:所述每个代码块在所述所有代码块 路径上的代码块执行顺序; 检测模块,用于根据所述每个代码块和所述每个代码块在所述所有代码块路径上的代 码块执行顺序,对所述apk进行漏洞检测。10. 根据权利要求9所述的装置,其特征在于, 所述确定模块,还用于从所述至少一个代码块中确定入口节点;根据所述入口节点的 每个代码块分别确定所述入口节点的每个代码块为起始代码块的出口节点;将所述至少一 个代码块中所述入口节点的每个代码块和所述出口节点的每个代码块外的其他代码块确 定为中间节点;根据所述入口节点、所述出口节点及所述中间节点,确定所述每个代码块在 所述所有代码块路径上的代码块执行顺序;其中,所述入口节点的每个代码块用于调用代 码块,所述出口节点的每个代码块用于被代码块调用。11. 根据权利要求10所述的装置,其特征在于,所述装置还包括: 第一判断模块,用于判断所述入口节点的每个代码块调用的代码块,为所述出口节点 的代码块还是所述中间节点的代码块; 生成模块,用于若所述入口节点的每个代码块调用的代码块为所述出口节点的代码 块,生成所述入口节点的每个代码块至所述出口节点的代码块的代码块执行顺序。12. 根据权利要求11所述的装置,其特征在于, 所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的 代码块,确定所述中间节点的代码块对应的所述出口节点的代码块; 所述生成模块,还用于生成所述入口节点的每个代码块、所述中间节点的代码块至所 述出口节点的代码块的代码块执行顺序。13. 根据权利要求12所述的装置,其特征在于, 所述确定模块,还用于若所述入口节点的每个代码块调用的代码块为所述中间节点的 代码块,且,所述中间节点的代码块具有未被访问的所述出口节点的代码块,根据预设的递 归阈值,采用递归调用,确定所述中间节点的代码块对应的所述出口节点的代码块。14. 根据权利要求9-13中任一项所述的装置,其特征在于,所述装置还包括: 第二判断模块,用于若所述每个代码块为预设敏感代码集合中的代码块,所述每个代 码块的输出值或所述每个代码块使用的参数被传递至所述所有代码块路径上所述每个代 码块的下一代码块,判断所述下一代码块是否为所述预设敏感代码集合中的代码块; 所述确定模块,还用于若所述下一代码块为所述预设敏感代码集合中的代码块,确定 所述每个代码块与所述下一代码块的路径为泄露路径。15. 根据权利要求14所述的装置,其特征在于, 所述确定模块,还用于若所述每个代码块不是所述预设敏感代码集合中的代码块,根 据所述apk的源代码确定所述每个代码块的引用参数对应的代码块,及所述引用参数对应 的代码块的声明;根据所述引用参数对应的代码块的声明,确定所述引用参数对应的代码 块为敏感代码块;确定所述每个代码块与所述引用参数对应的代码块的路径为泄露路径。16. 根据权利要求9-15中任一项所述的装置,其特征在于, 所述分析模块,还用于对所述每个代码块进行回溯别名分析,确定所述每个代码块的 别名; 所述检测模块,还用于根据所述每个代码块的别名和所述每个代码块在所述所有代码 块路径上的代码块执行顺序,对所述apk进行漏洞检测。
【文档编号】G06F21/57GK105989294SQ201510085688
【公开日】2016年10月5日
【申请日】2015年2月17日
【发明人】许志光, 姚兆明, 王敬萱, 崔兴敏, 谢中威, 曾田
【申请人】华为技术有限公司