一种应用程序监控方法及装置与流程

文档序号:12734556阅读:282来源:国知局
一种应用程序监控方法及装置与流程

本发明涉及应用程序监控领域,特别是涉及一种应用程序监控方法及装置。



背景技术:

Linux系统是一个可定制、裁剪的操作系统,为了灵活使用该操作系统,Linux设置了不同的用户权限,用于控制不同用户对该操作系统上的资源访问权限。安卓系统是运行在Linux内核上的,安卓(Android)与Linux分别有自己的一套严格的安全及权限机制。例如,对于安卓系统来说,最高权限Root可以访问系统的资源、删除和安装应用程序。随着基于安卓系统的软件和应用的逐渐增多,滥用安卓系统权限的软件越来越多,例如,有些恶意软件在获取了安卓系统的ROOT权限后,经常有恶意扣费、获取隐私、联网下载插件等看似正常的行为。然而,权限框架下,安卓系统的安全机制没办法防御类似上述的行为。

为了实现对第三方软件进行安全监控,现有技术中常见的做法是:安装监控软件,并为该监控软件获取安卓的ROOT权限,在权限框架下,由监控软件对第三方应用软件进行监控。然而,随着Android系统的不断演进,Root权限越来越难以获得,使得通过开发监控软件来监控第三方应用的周期变得越来越长,并且不可控。



技术实现要素:

本发明所要解决的技术问题是:提供一种应用程序监控方法,解决不需要获取最高级别用户权限就可以实现第三方应用软件监控的问题,快速、方便。

为了解决上述问题,本发明实施例提供了一种应用程序监控方法,包括:在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序;在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果 更新预先建立的资源访问请求的重定向表。

在一个实施例中,所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序的步骤之前,还包括:检测到该应用程序的安装指令后,提取该应用程序的安装包信息中的资源访问接口;初始化用于重定向所述资源访问接口发送的资源访问请求的重定向表;将所述资源访问请的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包并安装。

其中,所述应用程序作为所述监控程序的快捷方式与所述监控程序关联;所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序具体为:检测到运行所述快捷方式的指令后,进一步调用该快捷方式对应的监控程序。

在本发明的一个具体实施例中,所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序的步骤之后,还包括:缓存所述监控程序发送的资源访问请求;所述在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果更新预先建立的资源访问请求的重定向表的步骤包括:在预设时间段内,分析缓存的所述资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。

具体实施时,所述在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果更新预先建立的资源访问请求的重定向表,还包括:在预设时间段内,在后台模拟环境中运行所述监控程序;采集并分析的所述监控程序发送的资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。

具体实施时,所述将所述资源访问请求的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包的步骤进一步包括:将所述资源访问请求的重定向表、预置的监控代码、该应用程序安装包中的代码文件封装成监控程序的代码文件,其中,所述预置的监控代码为所述资源访问接口的钩子函 数;将该应用程序安装包中的原始资源文件、库文件、配置文件和所述监控程序的代码文件重新打包、签名生成监控程序的安装包。

相应的,本发明还公开了一种应用程序监控装置,包括:调用模块,用于在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序;监控模块,用于在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果更新预先建立的资源访问请求的重定向表。

在本发明的另一实施例中,所述装置还包括:信息提取模块,用于检测到该应用程序的安装指令后,提取该应用程序的安装包信息中的资源访问接口;重定向表初始化模块,用于初始化用于重定向所述资源访问接口发送的资源访问请求的重定向表;程序安装模块,用于将所述资源访问请的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包并安装。

其中,所述应用程序作为所述监控程序的快捷方式与所述监控程序关联;所述调用模块具体用于,检测到运行所述快捷方式的指令后,进一步调用该快捷方式对应的监控程序。

在本发明的另一实施例中,所述装置还包括:缓存模块,用于缓存所述监控程序发送的资源访问请求缓存所述监控程序发送的资源访问请求;

所述监控模块进一步用于,在预设时间段内,分析缓存的所述资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。

本发明通过定向调用与待运行的应用程序关联的监控程序,该监控程序通过在所述应用程序外加壳,实现对待运行应用程序的监控,并在预设时间段内,分析所述监控程序的资源访问请求,如果发现有未授权的资源访问请求,则重定向该资源访问请求,从而快速、便捷地实现监控应用程序行为的目的,并且不需要获取ROOT权限。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明应用程序监控方法一个实施例的流程图;

图2是本发明应用程序监控方法另一个实施例的流程图;

图3是本发明应用程序监控方法再一个实施例的流程图;

图4是本发明应用程序监控装置一个实施例的结构示意图;

图5是本发明应用程序监控装置另一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

本发明公开的一种应用程序监控方法,如图1所示,该方法包括:

步骤130,在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序;

步骤150,在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果更新预先建立的资源访问请求的重定向表。

具体实施时,所述应用程序作为所述监控程序的快捷方式与所述监控程序关联;所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序具体为:检测到运行所述快捷方式的指令后,进一步调用该快捷方式对应的监控程序。监控程序是应用程序的关联程序,监控程序的安装包根据应用程序的安装包生成。在生成监控程序的安装包的过程中,在应用程序启动的第一个Activity中增加一个快捷方式的方法,将应用程序的名称和图标作为快捷方式的名称和图标,这样,对于用户来说,体验上操作的依然是应用程序;修改应用程序安装包中的AndroidManifest.xml文件,在安卓系统的桌面UI(Launcher)中添加一个监控程序的副本,即将应用程序作为 监控程序的副本,即可以实现在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序。

本发明通过定向调用与待运行的应用程序关联的监控程序,该监控程序通过在所述应用程序外加壳,实现对待运行应用程序的监控,并在预设时间段内,分析所述监控程序的资源访问请求,如果发现有未授权的资源访问请求,则重定向该资源访问请求,从而快速、便捷地实现监控应用程序行为的目的,并且不需要获取ROOT权限。

实施例二:

基于实施例一,本发明的另一具体实施例中,如图2所示,还包括:

步骤100,检测到该应用程序的安装指令后,提取该应用程序的安装包信息中的资源访问接口。安卓系统应用程序的APK安装包全名称是Android application package,它包含了应用的二进制代码、资源、配置文件等。每一个安装到Android系统上的应用程序都会被编译打包为一个单独的文件,后缀名为.apk。但APK文件其实就是Zip格式,因此我们一方面可以通过解压技术释放其内部文件,另一方面还可通过Apktool之类的工具软件获取其内部文件。

下面简单介绍安卓系统应用程序的安装包的目录结构。

Assets\——该目录存放的是额外资源和配置文件,如txt或html说明文档、字体文件和图片资源等,此类资源文件不能被赋予ID,但可用路径访问。

Lib\——该目录般在armeabi子文件夹中存放一些so文件,例如libnative-audio-jni.so文件等。

Res\——该目录存放的是图片资源和界面的布局文件。drawable和drawable其他分辨率目录存放的是各种不同分辨率的图片资源;layout、menu、xml目录存放的是软件界面的布局文件,包括菜单、窗口、主界面和设置界面等。

resources.arsc——二进制的资源索引表。

META-INF\——该目录存放的就是签名后的证书,用于保护APK包的完整性和系统的安全。该目录下一般有MANIFEST.MF和以.RSA、.SF结尾的文件, 这些文件记录了其它目录文件的证书签名,Android系统在安装APK安装包的时候会逐个检查APK内部各文件是否与本目录记录的证书签名一致,如果不一致,则认为文件已被篡改,拒绝该APK的安装和运行。

AndroidManifest.xml——对本APK所包含的Android应用程序的全局描述文件,如应用的包名、版本号、模块入口等;该文件还记录了所需要的权限、引用的库文件、类等信息。

classes.dex——该文件是Java源码编译后生成的Java字节码文件,是虚拟机可执行文件。

在检测到应用程序的安装指令后,在/data/app目录下获取安装包并解压,每一个Android项目都包含一个清单(Manifest)文件,名称为AndroidManifest.xml,它存储在项目层次中的最底层。清单可以定义应用程序及其组件的结构和元数据,它包含了组成应用程序的每一个组件(活动、服务、内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。通过查找AndroidManifest.xml中的组件的入口,提取应用程序可能使用的资源访问接口。分析classes.dex文件,查找上述可能使用的资源访问接口对应的类,获得待监控的类集合。

步骤110,初始化用于重定向所述资源访问接口发送的资源访问请求的重定向表。创建一个资源访问请求列表,并为每一个资源访问请求初始化一个重定向的安全请求。在应用程序没有运行时,为了避免误操作,安全请求可以设置为与资源访问请求相同的值。也可以根据用户的设置,或安卓系统的安全管理机制将某些资源访问请求对应的安全请求设置为空。

步骤120,将所述资源访问请的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包并安装。所述将所述资源访问请的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包的步骤进一步包括:将所述资源访问请求的重定向表、预置的监控代码、该应用程序安装包中的代码文 件封装成监控程序的代码文件,其中,所述预置的监控代码为所述资源访问接口的钩子函数;将该应用程序安装包中的原始资源文件、库文件、配置文件和所述监控程序的代码文件重新打包、签名生成监控程序的安装包。所述预置的监控代码用于监控常用的资源访问接口,通过钩子函数对常用的资源访问接口进行进一步封装,并根据资源访问请求的重定向表对资源访问接口发送的资源访问请求进行重定向。

术语“钩子”涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在键盘或鼠标事件传递到应用程序之前拦截它们,或者拦截系统调用、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。本实施例采用钩子函数接管所述应用程序调用资源访问接口的指令,用于监控应用程序的资源访问行为。具体实施时,为资源访问接口设置钩子函数用于读取获得的待监控的类集合中各个类发送的资源访问请求,并在该资源访问请求为受限资源访问请求时,对所述资源访问请求进行重定向,根据资源访问请求重定向表将首先请求定向至安全请求。其中,受限资源访问请求可以是根据应用程序的权限确定的系统访问请求,也可以是根据配置文件确定的受限访问请求,本发明对此不作限定。将钩子函数、资源访问请求重定向表、待安装的应用程序的classes.dex生成监控程序安装包的classes.dex,按照与待安装应用程序相同的目录结构整合待安装的应用程序的Assets\,Lib\,Res\,resources.arsc,修改后的AndroidManifest.xml重新进行打包,并更新MATA-INF目录中其他文件打包后的签名,即完成监控程序的安装包的构造。之后,通过安装软件完成该监控程序的安装。

上述步骤130中,在检测到应用程序的运行指令后,根据预先建立的快捷方式和监控程序的关联,调用与该应用程序关联的监控程序。

在上述步骤150,在预设时间段内,分析所述监控程序的资源访问请求, 并根据分析结果更新预先建立的资源访问请求的重定向表。

本发明保留了待安装应用程序的资源文件、二进制代码,仅仅在资源访问接口设置了钩子函数来实现资源访问的监控,没有改变元应用程序的用户体验,不需要高用户权限,就可以快速、便捷地实现对应用软件的监控。

实施例三:

本发明的另一具体实施例中,如图3所示,所述方法还包括:所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序的步骤之后,还包括:步骤140,缓存所述监控程序发送的资源访问请求。在监控程序执行的过程中,钩子函数缓存资源访问请求,例如:网络IP地址、数据库读取指令、系统资源读取指令等。钩子函数还可以记录资源访问请求的频度、指令序列等。

所述步骤150具体包括:在预设时间段内,分析缓存的所述资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。经过了一段时间的缓存,在预设时间段内,例如:在系统待机状态下、凌晨等时间,运行后台分析程序,对缓存的资源访问请求进行分析,当某一资源访问请求符合预设的受限资源访问请求的特征时,确定为该资源访问请求为受限请求,通过修改资源访问请求重定向表将该受限资源访问请求重定向到安全请求。

其中,资源访问请求重定向表可以作为监控程序的配置文件或者日志文件保存在系统中,可以随时修改。所述的预设时间段根据具体的应用程序属性,设置为应用程序空闲的时间段。所述安全请求可以为空或者预设的安全地址、安全数据等,本发明对此不做限定。

本发明实施例根据具体的资源访问行为进行分析后设置重定向的资源访问请求,而不是固定对某一个或某一类资源访问请求进行重定向,监控更精确。并且,受限资源访问请求和重定向的安全请求动态变化,适应用户的使用习惯,提高了用户体验。

实施例四:

基于实施例一和二,本发明的另一具体实施例中,所述方法的步骤150 具体为:在预设时间段内,在后台模拟环境中运行所述监控程序;采集并分析的所述监控程序发送的资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求重定向表中的受限访问请求为安全请求。

具体实施时,后台模拟环境可以为沙箱,或者虚拟机。在预设时间段内,在后台调用该监控程序,模拟监控程序的运行行为,采集并分析该监控程序发送的资源访问请求,当某一资源访问请求符合预设的受限资源访问请求的特征时,确定为该资源访问请求为受限请求,通过修改资源访问请求重定向表将该受限资源访问请求重定向到安全请求。

其中,资源访问请求重定向表可以作为监控程序的配置文件或者日志文件保存在系统中,可以随时修改。所述的预设时间段根据具体的应用程序属性,设置为应用程序空闲的时间段。所述安全请求可以为空或者预设的安全地址、安全数据等,本发明对此不做限定。

通过在后台模拟环境运行监控程序以采集资源访问请求,不影响用户正常使用该应用程序,并且不对系统数据产生任何影响,并能够达到快速、便捷地监控应用程序的目的。

以上本发明的实施例中,可以通用应用程序安装器检测应用程序的安装请求,所说的应用程序为安卓系统的第三方应用程序,而非系统程序。

实施例五:

相应的,本发明还公开了一种应用程序监控装置,如图4所示,包括:

调用模块430,用于在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序;

监控模块450,用于在预设时间段内,分析所述监控程序的资源访问请求,并根据分析结果更新预先建立的资源访问请求的重定向表。

具体实施时,所述应用程序作为所述监控程序的快捷方式与所述监控程序关联;所述在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序具体为:检测到运行所述快捷方式的指令后,进一步调用该快捷方式对应的监控程序。监控程序是应用程序的关联程序,监控程序的安装包 根据应用程序的安装包生成。在生成监控程序的安装包的过程中,在应用程序启动的第一个Activity中增加一个快捷方式的方法,将应用程序的名称和图标作为快捷方式的名称和图标,这样,对于用户来说,体验上操作的依然是应用程序;修改应用程序安装包中的AndroidManifest.xml文件,在安卓系统的桌面UI(Launcher)中添加一个监控程序的副本,即将应用程序作为监控程序的副本,即可以实现在检测到应用程序的运行指令后,定向调用与该应用程序关联的监控程序。

本发明通过定向调用与待运行的应用程序关联的监控程序,该监控程序通过在所述应用程序外加壳,实现对待运行应用程序的监控,并在预设时间段内,分析所述监控程序的资源访问请求,如果发现有未授权的资源访问请求,则重定向该资源访问请求,从而快速、便捷地实现监控应用程序行为的目的,并且不需要获取ROOT权限。

实施例六:

基于实施例五,本发明的另一实施例中,如图5所示,所述装置还包括:

信息提取模块400,用于检测到该应用程序的安装指令后,提取该应用程序的安装包信息中的资源访问接口;

重定向表初始化模块410,用于初始化用于重定向所述资源访问接口发送的资源访问请求的重定向表;

程序安装模块420,用于将所述资源访问请的重定向表、预置的监控代码、该应用程序安装包的原始数据,按照安装包的生成规则重新打包,生成与该应用程序关联的监控程序的安装包并安装。

所述程序安装模块420进一步包括:

信息提取子模块421,用于将所述资源访问请求的重定向表、预置的监控代码、该应用程序安装包中的代码文件封装成监控程序的代码文件,其中,所述预置的监控代码为所述资源访问接口的钩子函数;

安装包生成子模块422,用于将该应用程序安装包中的原始资源文件、库文件、配置文件和所述监控程序的代码文件重新打包、签名生成监控程序的安装包。

本实施例的具体实现方案参见前述方法实施例,此处不再赘述。本发明保留了待安装应用程序的资源文件、二进制代码,仅仅在资源访问接口设置了钩子函数来实现资源访问的监控,没有改变元应用程序的用户体验,不需要高用户权限,就可以实现应用软件的监控。

在本发明的另一实施例中,所述装置还包括:

缓存模块440(图中未示出),用于缓存所述监控程序发送的资源访问请求;

所述监控模块450,用于在预设时间段内,分析缓存的所述资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。

本发明实施例根据具体的资源访问行为进行分析后设置重定向的资源访问请求,而不是固定对某一个或某一类资源访问请求进行重定向,监控更精确。并且,受限资源访问请求和重定向的安全请求动态变化,适应用户的使用习惯,提高了用户体验。

在本发明的再一实施例中,所述监控模块450具体用于:在预设时间段内,在后台模拟环境中运行所述监控程序;采集并分析的所述监控程序发送的资源访问请求;当所述资源访问请求中存在受限访问请求时,更新所述预先建立的资源访问请求的重定向表中的受限访问请求为安全请求。

通过在后台模拟环境运行监控程序以采集资源访问请求,不影响用户正常使用该应用程序,并且不对系统数据产生任何影响,并能够达到监控系统数据的目的。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上对本申请对提供的一种应用程序监控方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于 本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1