一种安卓应用的流量监控方法和装置的制造方法

文档序号:10555602阅读:277来源:国知局
一种安卓应用的流量监控方法和装置的制造方法
【专利摘要】本发明公开了一种安卓应用的流量监控方法和装置。该方法包括:获取指定安卓应用的安装包并保存至指定目录;构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行;对指定安卓应用在运行过程中产生的网络数据流量进行监控。可见,本方案根据网络数据流量获知指定安卓应用的运行状态,根据需求对安卓应用进行管理,在当前不够纯净的安卓生态环境中,具有相当重要的意义。
【专利说明】
_种安卓应用的流量监控方法和装置
技术领域
[0001]本发明涉及互联网技术领域,具体涉及一种安卓应用的流量监控方法和装置。
【背景技术】
[0002]现有技术中大多具有安全监控功能的软件均是在指定时间对安卓应用的进行静态监控,如对安卓应用进行反编译,将反编译得到的代码结果与特征库进行比对,以判断安卓应用中是否存在恶意代码,该监控过程由于特征库的滞后而具有相当的判断失误率,且非动态的监控过程很容易被恶意安卓应用的开发者规避,因此,需要一种对安卓应用的动态行为过程进行监控的方案。

【发明内容】

[0003]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的安卓应用的流量控制方法和装置。
[0004]依据本发明的一个方面,提供了一种安卓应用的流量监控方法,该方法包括:
[0005]获取指定安卓应用的安装包并保存至指定目录;
[0006]构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行;
[0007]对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0008]可选地,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控包括:
[0009]拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。
[0010]可选地,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控还包括:
[0011]在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;
[0012]如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。
[0013]可选地,该方法进一步包括:
[0014]获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;
[0015]在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0016]可选地,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;
[0017]则该方法进一步包括:
[0018]在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0019]可选地,在所述获取指定安卓应用的安装包并保存至指定目录之前,该方法进一步包括:
[0020]通过免ROOT方式获取安卓系统权限。
[0021 ]可选地,所述通过免ROOT方式获取安卓系统权限包括:
[0022]获取补丁包;
[0023]通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限;
[0024]其中,所述补丁包中包括:所述将指定安卓应用的安装包保存至指定目录的步骤,所述构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行的步骤,以及,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控的步骤的执行文件。
[0025]可选地,所述通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限包括:
[0026]以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。
[0027]可选地,所述获取指定安卓应用的安装包并保存至指定目录包括:
[0028]当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0029]可选地,所述获取指定安卓应用的安装包并保存至指定目录包括:
[0030]当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0031]可选地,所述构造指定安卓应用运行所需要的沙箱包括:
[0032]解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;
[0033]构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;
[0034]构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;
[0035]构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;
[0036]为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0037]可选地,构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行包括:
[0038]解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;
[0039]在该镜像安装包的执行文件中注入指示调用钩子函数的代码;
[0040]修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;
[0041]在安卓系统中安装并运行该镜像安装包;
[0042]其中,所述钩子函数用于对指定安卓应用的行为进行监控。
[0043]依据本发明的另一个方面,提供了一种安卓应用的流量监控装置,该装置包括:
[0044]获取单元,适于获取指定安卓应用的安装包并保存至指定目录;
[0045]构造单元,适于构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行;
[0046]监控单元,适于对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0047]可选地,所述监控单元,适于拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。
[0048]可选地,所述监控单元,进一步适于在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。
[0049]可选地,所述监控单元,进一步适于获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;以及适于在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0050]可选地,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;
[0051]所述监控单元,进一步适于在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0052]可选地,该装置进一步包括:
[0053]系统权限获取单元,适于在所述获取单元执行获取指定安卓应用的安装包并保存至指定目录的步骤之前,通过免ROOT方式获取安卓系统权限。
[0054]可选地,所述系统权限获取单元,适于获取补丁包,通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限;
[0055]其中,所述获取单元、所述构造单元以及所述监控单元通过调用所述补丁包中的执行文件执行相应的步骤。
[0056]可选地,所述系统权限获取单元,适于以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。
[0057]可选地,所述获取单元,适于当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0058]可选地,所述获取单元,适于当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0059]可选地,所述构造单元,适于解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0060]可选地,所述构造单元,适于解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;在该镜像安装包的执行文件中注入指示调用钩子函数的代码;修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;在安卓系统中安装并运行该镜像安装包;
[0061 ]其中,所述钩子函数用于对指定安卓应用的行为进行监控。
[0062]由上述可知,根据本发明的技术方案,将指定安卓应用放入沙箱中运行,通过沙箱为指定安卓应用提供一个封闭的运行环境,以实现对指定安卓应用的运行过程产生的网络数据流量进行监控,根据网络数据流量获知指定安卓应用的运行状态,根据需求对安卓应用进行管理,在当前不够纯净的安卓生态环境中,具有相当重要的意义。
[0063]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0064]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0065]图1示出了根据本发明一个实施例的一种安卓应用的流量监控方法的流程图;
[0066]图2示出了根据本发明另一个实施例的一种安卓应用的流量监控方法的流程图;
[0067]图3示出了根据本发明一个实施例的一种安卓应用的流量监控装置的示意图;
[0068]图4示出了根据本发明另一个实施例的一种安卓应用的流量监控装置的示意图。
【具体实施方式】
[0069]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0070]图1示出了根据本发明一个实施例的一种安卓应用的流量监控方法的流程图。如图1所示,该方法包括:
[0071 ]步骤SllO,获取指定安卓应用的安装包并保存至指定目录。
[0072]步骤S120,构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行。
[0073]步骤S130,对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0074]可见,图1所示的方法将指定安卓应用放入沙箱中运行,通过沙箱为指定安卓应用提供一个封闭的运行环境,以实现对指定安卓应用的运行过程产生的网络数据流量进行监控,根据网络数据流量获知指定安卓应用的运行状态,根据需求对安卓应用进行管理,在当前不够纯净的安卓生态环境中,具有相当重要的意义。
[0075]例如,将指定安卓应用a的安装包保存到指定目录,构造该指定安卓应用a运行所需要的沙箱,使得指定安卓应用a在该沙箱中运行,通过对指定安卓应用a在运行过程中产生的网络数据流量的监控,获知到安卓应用a在未进行数据下载和上传时依然会产生网络数据流量,说明安卓应用a可能在用户未感知的情况下进行数据传输,此时,可以对安卓应用a的网络数据流量进行限制或者对用户进行提示,以保护用户的信息安全。
[0076]本方案为指定安卓应用构建沙箱,使得指定安卓应用在沙箱中运行,指定安卓应用所有的网络访问都要经由沙箱的网络访问API发出,基于此原理,在本发明的一个实施例中,步骤S130中对指定安卓应用在运行过程中产生的网络数据流量进行监控包括:拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。具体地,可以在沙箱中设置钩子程序,当指定安卓应用发送网络访问请求时,在该网络访问请求到达沙箱的网络访问接口之前,利用钩子程序拦截该网络访问请求,根据该网络访问请求获知对应的网络数据流量。
[0077]进一步地,步骤S130对指定安卓应用在运行过程中产生的网络数据流量进行监控还包括:在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。例如,预设指定安卓应用在每次网络访问时所产生的网络数据流量的上限阈值为30M,在拦截到指定安卓应用发送的网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过30M,是则,不再将该网络访问请求发送至沙箱的网络访问API,阻止该网络访问请求的继续发送,否则,将该网络访问请求发送至沙箱的网络访问API,使得该网络访问请求经由沙箱的网络访问API发出。
[0078]在本发明的另一个实施例中,可以不对每个网络访问请求对应的网络数据流量做限制,而是对指定安卓应用在预设统计周期内产生的网络数据流量进行限制。例如,预设指定安卓应用在一天内产生的网络数据流量的上限阈值为30M,则对一天内每次拦截到的指定安卓应用发送的网络访问请求都进行记录,对网络数据流量进行累积,当指定安卓应用所产生的网络数据流量累积到30M后,则在再次拦截到指定安卓应用发送的网络访问请求时,阻止该网络访问请求的继续发送。
[0079]此外,在拦截到指定安卓应用发送的网络访问请求后均对相关信息进行记录,生成关于指定安卓应用产生网络数据流量的监控日志,日志中记录了:每次指定安卓应用发出网络访问请求将要产生的网络数据流量,每次指定安卓应用发出网络访问请求时指定安卓应用是否与用户发生交互;根据监控日志中的记录可以获知指定安卓应用是否在用户无感知的情况下进行数据下载和上传等不安全行为。
[0080]其中,安卓系统中的Activity组件表现为与用户交互的可视化界面,指定安卓应用与Activity组件交互的过程即为与用户进行交互的过程,则在拦截到指定安卓应用发送的网络访问请求时,可以通过判断指定安卓应用在实现当前功能时是否有与Activity组件交互的过程,如果有则确定指定安卓应用在发出网络访问请求时与用户发生交互,如果无则确定指定安卓应用在静默状态下发出网络访问请求,该行为有可能是在用户无察觉的情况下做出的危险行为,在监控日志中应予以记录,并推送给用户进行提醒,以及,结合对指定安卓应用产生的网络数据流量的限制,对用户加以保护。
[0081]在本发明的一个实施例中,图1所示的方法进一步包括:
[0082]步骤S140,获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式。
[0083]步骤S150,在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0084]此外,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;则图1所示的方法进一步包括:在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0085]在本发明的其他实施例中,步骤S140所获取的网络数据流量信息还可以包括:当前移动终端对应的SIM卡信息、和/或所述移动终端当前对应的网络制式信息。
[0086]在本发明的一个实施例中,上述所获取的当前移动终端的网络数据流量信息可以通过服务器进行查询,本实施例可以预置信息查询服务器,其中保存有当前移动终端中用户身份识别卡的唯一标识信息及其选用的通信业务运营商,并且还保存有各个不同移动通信运营商的查询代码,以及通信业务运营商在各个区域的通信业务服务器的查询端口号。确定查询信息和接入服务器的端口号时,首先根据用户身份识别卡的唯一标识信息确定移动终端选用的通信业务运营商,并且具体为移动终端所在区域的通信业务运营商,进一步确定该通信业务运营商采用的查询代码,根据选用的某个区域的通信业务运营商确定连接的通信业务服务器的查询端口号。
[0087]在本发明的一个实施例中,对于监控到的每个指定安卓应用,该指定安卓应用在一个时间段内产生的网络数据流量与该时间段内当前移动终端的总网络数据流量的比值反映了该指定安卓应用的网络使用情况。其中,当前移动终端的网络数据流量可以从所述移动终端的网卡中读取,移动终端的网卡中记录了移动终端消耗的总网络数据流量,ifconfig是Iinux中用于显示或配置网络设备(网络接口卡)的命令,用来查看、配置、启用或禁用网络接口的工具,通过运行ifconfig命令可以获得,将当前获取的网络数据流量与前一次获取的网络数据流量相减,可以得到两次获取的时间段内的网络数据流量,例如,以分钟为单位取得指定安卓应用的网络数据流量,而对于当前移动终端,将当前一分钟与前一分钟从网卡读出的值相减得到该移动终端每分钟的网络数据流量,将二者进行比较,可以间接反映指定安卓应用的网络使用状态,有利于本方案通过沙箱对该指定安卓应用的监管。
[0088]本发明在步骤SllO中获取指定安卓应用的安装包并保存至指定目录,其中所称的指定目录,是指本发明处于文件组织、管理效率的考虑而为这些需要构建沙箱环境而提供的自定义默认目录,所有通过本方案在沙箱中运行的安卓应用的安装包,均可被移动或复制保存到该指定目录中,进一步还可以对其进行加密或隐藏,以确保其安全性;需要指出的是,这里的指定目录,还可以是安卓系统中已经存在的目录,既可以是单个目录,也可以是多个目录,概括而言,是为本发明所采用的用于存放由本方案构建沙箱环境的目标安卓应用的安装包的目录。
[0089]在本发明的一个实施例中,图1所示方法的步骤SllO中获取指定安卓应用的安装包并保存至指定目录包括:
[0090]方式一,当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0091]例如,众所周知地,安卓系统中,安卓应用的安装会涉及对如下目录的操作:data/app,安卓应用安装目录,安装时安卓系统先把安卓应用的安装包(AndroidPackage,APK)复制到此data/app目录;(^丨&/(^1¥丨1^-030116,将3。1^解压后的代码文件(.dex文件)安装到该目录下;data/data,用于建立并存放安卓应用所需的资源数据。基于上述原理可知,安卓应用的apk文件即为其安装包,在data/app目录中可以找到该安装包。因此,对于已安装的指定安卓应用而言,可以从data/app目录中复制相应的apk文件到指定目录中,然后卸载该指定安卓应用,使得后续指定安卓应用在沙箱中运行而不在沙箱外运行,避免发生冲突。
[0092]方式二,当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0093]例如,对于一个准备或正在进行安装的安卓应用而言,本发明可以通过将自身注册为默认安装器的形式,获取该安卓应用的安装广播信息,从该安装广播信息中获取该安卓应用的安装包所在位置,从该位置获取该安卓应用的安装包,将该安卓应用的安装包移动存放到指定目录。
[0094]在本发明的一个实施例中,图1所示方法的步骤S120中构造指定安卓应用运行所需要的沙箱包括:解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0095]例如,步骤S120的具体执行过程可以是:
[0096]首先,解析指定目录下的指定安卓应用的安装包,获取指定安装包中包含的各组件,其中,安卓应用的组件分为四种类型,这四种类型分别为:活动(Activity)组件、广播接收者(Broadcast Receiver)组件、服务Service组件和Content Provider组件。不是所有的安卓应用都必须包含所有这四种类型的组件,有的安卓应用可能由上述一种组件或多种组件组建。各组件都需要注册才能使用,即每一个组件都需要在安卓应用的安装包的配置文件An dr ο i dManif est.xml中进行配置。因此,指定安卓应用的安装包的配置文件AndroidManifest.xml中有列出指定安卓应用所包含的所有组件。由此可知,本实施例可通过读取指定安卓应用的安装包中的AndroidManifest.xml文件,来获取指定安卓应用的安装包中所包含的所有组件。这里需要说明的是:安卓系统中的应用程序管理服务(PackageManager Service,PMS)安装安卓应用的过程实质上就是解析安卓应用的安装包中的配置文件AndroidManifest.xml的过程,并从里面得到安卓应用的相关信息,如得到安卓应用的Activity组件、Service组件、Broadcast Receiver组件和Content Provider组件等信息,有了这些信息后,通过活动管理服务(Activity Manager Service,AMS)就可以在安卓系统中正常地运行该应用程序了,与上述安卓系统安装安卓应用的过程类似,本方案也要先通过解析指定安卓应用的安装包来获取指定安卓应用的相关信息,具体地,可采用反射机制来获取指定安卓应用的安装包中包含的各组件;其中,本实施例中所采用的反射机制可以为Java反射机制,Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象的方法的功能即为JAVA语言的反射机制。不同语言都有其相对应的反射机制,例如,C语言和C++语言均有其对应的反射机制。
[0097]其次,指定安卓应用在被加载运行时所采用的上下文是沙箱的上下文,因此,本方案所构造的沙箱中不仅要能加载指定安卓应用中的各组件,还需构建指定安卓应用运行所需要的环境。
[0098]众所周知地,安卓应用在运行的过程中,是通过一个称为Asset Manager资源管理器来读取打包在安卓应用的安装包里面的资源文件的;安卓应用的每一个activity组件都关联一个context Impl对象,这个context Impl对象就是用来描述activity组件的运行上下文环境的;调用这个Context Impl对象的成员函数ini t来执行初始化Acti vity组件运行上下文环境的工作,其中就包括创建用来访问安卓应用资源的R e s ο u r c e s对象和AssetManager对象的工作。其中,ContextImpl.1nit函数就定义在文件frameworks/base/core/java/android/app/Contextlmpl.java中;ContextImpl.1nit函数中的参数packagelnfo指向的是一个LoadedApk对象,这个LoadedApk对象描述的是当前正在启动组件所属的Apk;用来访问应用程序资源的Resources对象是通过调用参数packagelnfο所指向的是一个LoadedApk对象的成员函数getResources来创建的。由此可知,为了创建Resources对象,以提取或访问安卓应用资源,本实施例还需分别为应用中的各组件构建一个loaded APK对象。
[0099]可见,本实施例需要为指定安卓应用构造其运行所需的资源环境,以在启动各所述组件时调取相应的资源。具体的,可采用如下方式实现:对资源Resources类的构造函数中的成员变量massets进行修改,以在启动各所述组件时通过所述massets来调取相应的资源;和/或对资源管理器Asset Manager中的Asset Path函数进行修改,修改后的所述AssetPath函数指向所述安卓应用的安装包中的资源文件,以在启动各所述组件时通过所述Asset Manager调取所述Asset Path函数来获取所述资源文件中的对应资源。其中,Resources类的构造函数定义在文件 frameworks/base/core/ java/android/content/res/Resources.java中。因为Resources类的构造函数将参数assets所指向的一个AssetManager对象保存在成员变量mAssets中,即mAssets = assets,使得Resources类的构造函数可以通过mAssets来访问应用程序的资源。因此,本实施例可通过对资源类的构造函数中的成员变量massets进行修改,来实现通过massets调取应用程序所需的资源。其中,上述实现方式可采用反射机制来实现。当然,本实施例还可对资源管理器Asset Manager中的Asset Path函数进行修改,如通过AssetManager对象的成员函数addAssetPath来添加指定的应用程序资源文件路径(如:路径为/system/app/Music.apk)到Asset Path函数中。由于addAssetPath是隐藏API我们无法直接调用,所以只能通过反射机制来实现。
[0100]再者,本实施例还需要为指定安卓应用构造类加载器,以加载各所述组件中的相应加载类。具体的,所述构造类加载器,可采用如下方式实现:将指定安卓应用的路径添加到类加载器中的路径列表pathlist中,构造根据所述应用程序路径查找加载类的类加载器;和/或,对类加载器中的m parent成员进行修改,构造首先用parent找加载类的类加载器。构造首先用parent找加载类的类加载器的目的是:系统在找一个加载类的时候,首先调的是findloadedclassO函数,紧接着就会去调用mparentfindclassO函数。如果本实施例直接将class loader构造为首先用parent找加载类的类加载器,这样系统在找这个类的时候,就直接调用mparentf indclass()函数去找了,省去了调用f indloadedclass()函数找类的步骤。
[0101]接着,由于一个安卓应用的运行只有一个主进程ActivityThread,Acti vityThread对象描述的是当前正在运行的安卓应用进程。因此,本实施例正在沙箱中需构造出指定安卓应用的ActivityThread,以使所述Activity Thread执行指定安卓应用中的各组件的启动操作。
[0102]最后,本步骤分别为各所述组件构造一个加载指定安卓应用的安装包loadedAPK对象。具体的,可采用如下方式实现:通过反射机制反射Activity Thread里的packageinfo,以分别为各所述组件构造一个加载指定安卓应用的安装包loaded APK对象。[0?03]此外,若加载的所述组件为内容提供者ContentProvider组件,贝Ij通过反射机制调用所述 ContentProvider 组件。
[0104]由上述例子可知,本实施例提供的技术方案通过构造指定安卓应用运行所需的运行环境,以为应用程序提供同安装后的运行环境相同的沙箱环境,使得指定安卓应用在沙箱中运行,由于指定应用程序是在沙箱内部的运行环境内运行的,通过沙箱能有效的进行权限的拦截、安卓应用的行为的监控等,在一定程度上能解决因安卓系统上存在的诸多漏洞所带来的安全隐患问题。
[0105]在本发明的一个实施例中,步骤S120中构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行包括:解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;在该镜像安装包的执行文件中注入指示调用钩子函数的代码;修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;在安卓系统中安装并运行该镜像安装包;其中,所述钩子函数用于对指定安卓应用的行为进行监控。
[0106]众所周知,指定安卓应用的安装包为压缩文件,一种方式中,可以将指定安卓应用的安装包解压至一个临时工作目录以完成解压工作,解压后,即可对指定安卓应用的安装包中的各个文件进行解析;另一种方式中,也可以在内存中直接解析指定安卓应用的安装包。无论采取哪种方式对指定安卓应用的安装包进行解析,目的是为了获取相关参数和资源,以配置生成指定安卓应用的镜像安装包,该镜像可以是硬盘镜像也可以是内存镜像。由于指定安卓应用的安装包的构成文件中包含执行文件Classes.dex,相应地,在指定安卓应用的镜像安装包中也包含执行文件Classes, dex,本方案通过在镜像安装包中的执行文件中Classes.dex注入指示调用钩子程序的代码;且指定安卓应用的安装包的构成文件中包含配置文件Androidmanifest.xml,相应地,在指定安卓应用的镜像安装包中也包含配置文件Androidmanifest.xml,对该配置文件进行修改,使得修改后的镜像安装包适于加载指定安卓应用,具体地,本方案利用Java反射调用机制将LoadAPK与Acti vityThread涉及的运行时配置信息用反射替换成指定目录中的指定安卓应用的安装包的类加载器ClassLoader与资源,实现镜像安装包对应的应用在运行时对指定安卓应用的加载。至此,本实施例所构建的指定安装应用的镜像安装包对应的应用在运行时,先加载上述指示调用钩子程序的执行文件,再加载指定安卓应用,能够实现利用钩子程序对指定安卓应用在运行中发生的行为的监控捕获,具体地,对指定安卓应用在运行时产生的网络数据流量进行监控。
[0107]本实施例中,指定安卓应用被加载到所构建的指定安卓应用的镜像安装包对应的应用的内部环境中去运行,该指定安卓应用的镜像安装包对应的应用的内部环境实质上相当于是沙箱环境,将指定安卓应用在安卓系统中隔离开来,并通过在该沙箱环境中设置钩子程序来实现对指定安卓应用的监控。
[0108]Unix系的操作系统,以安卓系统为典型代表,广泛应用于各种移动通信终端中。安卓系统具有相对较为严格的权限管理机制,默认状态下,非系统应用的权限较低。要突破权限限制,需要将非系统应用的权限提高到最高级别,也即进行ROOT授权。获得安卓系统权限的非系统应用即可对其他安卓应用的恶意行为进行拦截,对消耗系统资源的设置项进行修改,因此,多数情况下,市面上的安全软件需要在已经获得ROOT授权的安卓移动终端上工作,才能达到其最优效果。但是,一般用户并不掌握较高的专业知识,未必能对其终端进行ROOT授权,即使进行了 ROOT授权,在为安全软件开放更高权限的同时,也给了恶意程序以可乘之机。更为矛盾的是,在非ROOT条件下,一部分恶意程序能工作,而传统的安全监控软件却会失去绝对优势。因此,在非ROOT条件下解决对安卓系统中的安卓应用的安全监控需求,是业内一直以来的努力方向。
[0109]为此,图2示出了根据本发明另一个实施例的一种安卓应用的流量监控方法的流程图。如图2所示,该方法包括:
[0110]步骤S210,通过免ROOT方式获取安卓系统权限。
[0111]步骤S220,获取指定安卓应用的安装包并保存至指定目录。
[0112]步骤S230,构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行。
[0113]步骤S240,对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0114]可见,为了对安卓系统上的系统应用以及第三方应用均能实现流量监控,图2所示的方法在将指定安卓应用放入沙箱运行、对指定安卓应用产生的网络数据流量进行监控之前,先要获取安卓系统权限,即获取安卓系统中的system文件夹的操作权限;现有技术中ROOT方式是获取系统目录操作权限的最基本条件,然而,与现有技术不同的是,本方案不通过ROOT方式获取系统目录操作权限,可以在那些无法ROOT或者用户不愿意ROOT的安卓设备上实施对安卓应用的流量监控,不修改系统,无需对安卓设备进行刷机,不影响安卓设备的质保和升级,符合用户需求。
[0115]具体地,在本发明的一个实施例中,步骤S210中通过免ROOT方式获取安卓系统权限的方案是:获取补丁包;通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限。本实施例通过为特定系统漏洞进行修复,借修复系统漏洞之机引入补丁包,将补丁包加载到安卓系统中,成为系统应用的一部分,以获取安卓系统权限。其中提到的特定系统漏洞是指:现有的安卓系统目前存在的系统漏洞。
[0116]上述通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限包括:在加载补丁包修复特定系统漏洞的过程中,以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。在补丁包中的执行文件获取到安卓系统权限之后,可以对安卓系统中的system文件夹进行操作,即可以执行后续步骤S220-S240将指定安卓应用的安装包保存至指定目录、构造指定安卓应用运行所需要的沙箱并使得指定安卓应用在该沙箱中运行、对指定安卓应用产生的网络数据流量进行监控的过程;其中,所述补丁包的执行文件中包含指示执行上述步骤S220-S240的代码,则通过调用所述补丁包中的相应执行文件执行上述步骤S220-S230,步骤S220-S230的执行逻辑与图1所示方法的步骤S110-S130的执行逻辑相同,在上文中已有详细的描述。
[0117]以一个具体的例子来说明图2所示方法的实施过程:本例中特定系统漏洞为安卓系统中的MasterKey漏洞,利用该漏洞可以在不修改签名的情况下修改安卓系统代码。基于此系统原生漏洞,本方案对该系统漏洞加以利用,一方面修复了该漏洞,另一方面利用该漏洞的修复过程获取了安卓系统权限,一举多得,符合实际需求,保障用户使用安卓设备的信息安全。具体地,本方案在检查到安卓系统中的MaterKey漏洞后将通知用户对该漏洞进行修复,修复过程中需要获取用于修复该漏洞的补丁包,安装该补丁包,以该补丁包应用替换安卓系统原有的系统应用Setting Storage,或者,以该补丁包在安卓系统原有的系统应用Setting Storage的基础上进行升级,由于系统应用Setting Storage在安卓系统启动时即进行加载,则本方案获取的补丁包中的执行文件也在安卓系统启动时便进行加载,此时补丁包中的执行文件中的代码拥有了安卓系统最高权限,可以实现System文件访问、权限管理等操作。在获得了安卓系统权限之后,即可以执行获取指定安卓应用的安装包并保存至指定目录、构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行、对指定安卓应用在运行过程中产生的网络数据流量进行监控的操作。
[0118]此外,本方案中修复特定系统漏洞的补丁包可以根据用户意愿随时卸载,卸载后无残留,符合用户需求。
[ΟΙ19] 上例中所述的特定系统漏洞MasterKey漏洞以及特定系统应用Setting Storage应用均为举例说明,可以根据实际需求进行选择,在此不做限制。
[0120]图3示出了根据本发明一个实施例的一种安卓应用的流量监控装置的示意图。如图3所示,该安卓应用的流量监控装置300包括:
[0121 ]获取单元310,适于获取指定安卓应用的安装包并保存至指定目录。
[0122]构造单元320,适于构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行。
[0123]监控单元330,适于对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0124]可见,图3所示的装置在各单元的交互下,将指定安卓应用放入沙箱中运行,通过沙箱为指定安卓应用提供一个封闭的运行环境,以实现对指定安卓应用的运行过程产生的网络数据流量进行监控,根据网络数据流量获知指定安卓应用的运行状态,根据需求对安卓应用进行管理,在当前不够纯净的安卓生态环境中,具有相当重要的意义。
[0125]在本发明的一个实施例中,监控单元330,适于拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。
[0126]进一步地,监控单元330,进一步适于在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。
[0127]在本发明的一个实施例中,所述监控单元330,进一步适于获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;以及适于在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0128]其中,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;所述监控单元330,进一步适于在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0129]在本发明的一个实施例中,获取单元310获取指定安卓应用的安装包并保存至指定目录的过程可以是:
[0130]方案一,当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0131]方案二,当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0132]在本发明的一个实施例中,构造单元320构造指定安卓应用运行所需的沙箱的过程是:解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0133]在本发明的另一个实施例中,构造单元320构造指定安卓应用运行所需的沙箱的过程是,适于解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;在该镜像安装包的执行文件中注入指示调用钩子函数的代码;修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;在安卓系统中安装并运行该镜像安装包。其中,所述钩子函数用于对指定安卓应用的行为进行监控。
[0134]图4示出了根据本发明另一个实施例的一种安卓应用的流量监控装置的示意图。如图4所示,该安卓应用的流量监控装置400包括:获取单元410、构造单元420、监控单元430和系统权限获取单元440。
[0135]其中,获取单元410、构造单元420、监控单元430包含与图3所示的获取单元310、构造单元320、监控单元330对应相同的功能,相同的部分在此不再赘述。
[0136]系统权限获取单元440,适于在所述获取单元执行获取指定安卓应用的安装包并保存至指定目录的步骤之前,通过免ROOT方式获取安卓系统权限。
[0137]本发明的一个实施例中,系统权限获取单元440,适于获取补丁包,通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限。
[0138]在一个具体的例子中,所述系统权限获取单元440,适于以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。其中,所述获取单元410、所述构造单元420以及所述监控单元430通过调用所述补丁包中的执行文件执行相应的步骤。
[0139]需要说明的是,图3-图4所示装置的各实施例与图1-图2所示方法的各实施例对应相同,上文中已有详细说明,在此不再赘述。
[0140]综上所述,在本发明的技术方案中,通过免ROOT方式获取安卓系统权限,在获取到安卓系统权限后,构造指定安卓应用运行所需的沙箱,使得指定安卓应用在沙箱中运行,利用沙箱对指定安卓应用产生的网络数据流量进行监控。依据该方案,以安卓应用在运行过程中产生的网络数据流量为监控指标,通过网络数据流量反映安卓应用的安全等级,以对安卓用户进行保护,并且,通过加载补丁包而非免ROOT方式获取安卓系统权限,不对安卓系统进行不可逆修改,不影响安卓系统的运行,不影响相应安卓设备的升级和质保,在需要时可以对获取安卓系统权限的补丁包进行卸载,过程简单、可逆、无危害,符合任何程度的用户需求。
[0141]需要说明的是:
[0142]在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0143]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0144]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0145]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0146]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0147]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的安卓应用的流量监控装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0148]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0149]本发明公开了Al、一种安卓应用的流量监控方法,其中,该方法包括:
[0150]获取指定安卓应用的安装包并保存至指定目录;
[0151]构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行;
[0152]对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0153]A2、如Al所述的方法,其中,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控包括:
[0154]拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。
[0155]A3、如A2所述的方法,其中,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控还包括:
[0156]在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;
[0157]如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。
[0158]A4、如Al所述的方法,其中,该方法进一步包括:
[0159]获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;
[0160]在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0161]A5、如A4所述的方法,其中,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;
[0162]则该方法进一步包括:
[0163]在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0164]A6、如Al所述的方法,在所述获取指定安卓应用的安装包并保存至指定目录之前,该方法进一步包括:
[0165]通过免ROOT方式获取安卓系统权限。
[0166]A7、如A6所述的方法,其中,所述通过免ROOT方式获取安卓系统权限包括:
[0167]获取补丁包;
[0168]通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限;
[0169]其中,所述补丁包中包括:所述将指定安卓应用的安装包保存至指定目录的步骤,所述构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行的步骤,以及,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控的步骤的执行文件。
[0170]AS、如A7所述的方法,其中,所述通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限包括:
[0171]以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。
[0172]A9、如Al所述的方法,其中,所述获取指定安卓应用的安装包并保存至指定目录包括:
[0173]当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0174]A10、如Al所述的方法,其中,所述获取指定安卓应用的安装包并保存至指定目录包括:
[0175]当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0176]All、如Al所述的方法,其中,所述构造指定安卓应用运行所需要的沙箱包括:
[0177]解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;
[0178]构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;
[0179]构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;
[0180]构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;
[0181 ]为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0182]A12、如Al所述的方法,其中,构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行包括:
[0183]解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;
[0184]在该镜像安装包的执行文件中注入指示调用钩子函数的代码;
[0185]修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;
[0186]在安卓系统中安装并运行该镜像安装包;
[0187]其中,所述钩子函数用于对指定安卓应用的行为进行监控。
[0188]本发明还公开了B13、一种安卓应用的流量监控装置,其中,该装置包括:
[0189]获取单元,适于获取指定安卓应用的安装包并保存至指定目录;
[0190]构造单元,适于构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行;
[0191]监控单元,适于对指定安卓应用在运行过程中产生的网络数据流量进行监控。
[0192]B14、如B13所述的装置,其中,
[0193]所述监控单元,适于拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。
[0194]B15、如B14所述的装置,其中,
[0195]所述监控单元,进一步适于在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。
[0196]B16、如B13所述的装置,其中,
[0197]所述监控单元,进一步适于获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;以及适于在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。
[0198]B17、如B16所述的装置,其中,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度;
[0199]所述监控单元,进一步适于在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
[0200]B18、如B13所述的装置,该装置进一步包括:
[0201]系统权限获取单元,适于在所述获取单元执行获取指定安卓应用的安装包并保存至指定目录的步骤之前,通过免ROOT方式获取安卓系统权限。
[0202]B19、如B18所述的装置,其中,
[0203]所述系统权限获取单元,适于获取补丁包,通过加载所述补丁包对特定系统漏洞进行修复,获取安卓系统权限;
[0204]其中,所述获取单元、所述构造单元以及所述监控单元通过调用所述补丁包中的执行文件执行相应的步骤。
[0205]B20、如B19所述的装置,其中,
[0206]所述系统权限获取单元,适于以所述补丁包替换特定系统应用,实现安卓系统对所述补丁包中的执行文件的加载,使得所述补丁包中的执行文件获取安卓系统权限。
[0207]B21、如B13所述的装置,其中,
[0208]所述获取单元,适于当指定安卓应用是已安装应用时,从安卓系统的应用安装目录中查找指定安卓应用的安装包,将该安装包复制至指定目录,卸载指定安卓应用。
[0209]B22、如B13所述的装置,其中,
[0210]所述获取单元,适于当指定安卓应用是正在进行安装的应用时,通过注册默认安装器拦截指定安卓应用的安装广播信息,从该安装广播信息中获取指定安卓应用的安装包,将该安装包存放至指定目录。
[0211]B23、如B13所述的装置,其中,
[0212]所述构造单元,适于解析指定目录下的指定安卓应用的安装包,获取指定安卓应用的相关信息;构造指定安卓应用运行所需的资源环境,以在指定安卓应用运行时调取相应的资源;构造类加载器,以加载指定安卓应用的执行文件中的相应类文件;构造主线程,以使该主线程执行指定安卓应用中的各组件的启动操作;为指定安卓应用中的各组件分别构造一个加载安卓应用安装包对象。
[0213]B24、如B13所述的装置,其中,
[0214]所述构造单元,适于解析指定目录下的指定安卓应用的安装包,生成该指定安卓应用的镜像安装包;在该镜像安装包的执行文件中注入指示调用钩子函数的代码;修改该镜像安装包的配置文件的配置参数,用于加载指定安卓应用;在安卓系统中安装并运行该镜像安装包;
[0215]其中,所述钩子函数用于对指定安卓应用的行为进行监控。
【主权项】
1.一种安卓应用的流量监控方法,其中,该方法包括: 获取指定安卓应用的安装包并保存至指定目录; 构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行; 对指定安卓应用在运行过程中产生的网络数据流量进行监控。2.如权利要求1所述的方法,其中,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控包括: 拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。3.如权利要求2所述的方法,其中,所述对指定安卓应用在运行过程中产生的网络数据流量进行监控还包括: 在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值; 如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。4.如权利要求1所述的方法,其中,该方法进一步包括: 获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式; 在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。5.如权利要求4所述的方法,其中,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度; 则该方法进一步包括: 在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。6.一种安卓应用的流量监控装置,其中,该装置包括: 获取单元,适于获取指定安卓应用的安装包并保存至指定目录; 构造单元,适于构造指定安卓应用运行所需要的沙箱,使得指定安卓应用在该沙箱中运行; 监控单元,适于对指定安卓应用在运行过程中产生的网络数据流量进行监控。7.如权利要求6所述的装置,其中, 所述监控单元,适于拦截指定安卓应用通过所述沙箱的网络访问接口发送的网络访问请求,获取该网络访问请求对应的网络数据流量。8.如权利要求7所述的装置,其中, 所述监控单元,进一步适于在拦截到指定安卓应用发送的每个网络访问请求后,判断该网络访问请求对应的网络数据流量是否超过预设阈值;如果该网络访问请求对应的网络数据流量超过预设阈值,阻止该网络访问请求的继续发送。9.如权利要求6所述的装置,其中, 所述监控单元,进一步适于获取当前移动终端的网络数据流量信息,所述网络数据流量信息中包括:网络数据流量统计模式;以及适于在监控到各指定安卓应用在运行过程中产生的网络数据流量后,利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量。10.如权利要求9所述的装置,其中,所述网络数据流量信息中还包括:网络数据流量统计模式对应的基础网络数据流量额度; 所述监控单元,进一步适于在利用各指定安卓应用的网络数据流量动态更新所述网络数据流量统计模式对应的当前网络数据流量之后,判断所述当前网络数据流量是否超出所述基础网络数据流量额度,是则,通过沙箱阻止一个或多个指定安卓应用产生网络数据流量的事件。
【文档编号】G06F21/53GK105915546SQ201610429966
【公开日】2016年8月31日
【申请日】2016年6月16日
【发明人】刘刚
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1