应用程序权限动态控制方法和系统的制作方法

文档序号:6521606阅读:225来源:国知局
应用程序权限动态控制方法和系统的制作方法
【专利摘要】本发明公开了一种应用程序权限动态控制方法和系统,所述方法包括:服务管理(SM)进程接收到应用程序的服务请求时调用被注入的共享库中的新ioctl函数;新ioctl函数获取请求服务的进程id号和服务组件名称向应用程序权限动态控制系统发送;所述系统若确定接收的服务组件名称存在于对应该进程id号的权限申请信息列表中,则向新ioctl函数返回匹配成功信息;否则提示用户进行配置;所述系统若接收到用户的启用指令,则将接收的服务组件名称添加到对应该进程id号的权限申请信息列表中,向新ioctl函数返回匹配成功信息,SM进程响应服务请求;否则返回匹配失败信息,SM进程拒绝服务请求;从而具有更高的灵活性和通用性。
【专利说明】应用程序权限动态控制方法和系统
【技术领域】
[0001]本发明涉及移动终端技术,尤其涉及一种应用程序权限动态控制方法和系统。
【背景技术】
[0002]Android是基于Linux平台的开源操作系统,可使用于如智能手机、平板电脑、电视、数码相机、游戏机等的移动终端中,受到移动终端设备厂商和用户的广泛关注。
[0003]目前,基于Android操作系统的应用程序层出不穷。然而,由于Android操作系统的开放性特点,开发人员可以全面了解操作系统内部的机制与实现,使得操作系统的安全漏洞易被发现和利用。例如,一些应用程序的APK (Android Package, Android安装包)中被嵌入了恶意行为,如窃取个人隐私数据、消耗用户资费、占用网络流量、远程控制终端信息等;这些应用程序在安装的过程中可以获得额外的系统访问权限,对系统资源进行越权使用。而且,这些应用程序的恶意行为往往在后台运行,用户难以发现。
[0004]为了管理应用程序对系统资源的使用行为,实现应用程序权限的控制,Android操作系统提供了一套基本的授权模式:在应用程序的安装过程中,安装器会弹出询问窗体询问用户是否同意应用程序所有的权限申请;用户选择同意,便会授权应用程序所有的权限申请,用户选择拒绝,便会中止应用程序的安装。这样,安装的应用程序在运行过程中,Andriod操作系统可以根据应用程序安装时所授予的权限,控制应用程序对系统服务、数据等各项资源的访问和使用行为。但是,应用程序安装完成后,授予的各项权限不可更改;之后用户无法再根据自己的需求授予应用程序所申请的权限,使得该方法不够灵活。
[0005]为实现对应用程序的访问权限进行控制,现有的另一种方法是:在Android操作系统源码中查找到定位系统关键部件、关键资源的API (Application ProgrammingInterface,应用程序编程接口),通过API来管理应用程序对系统资源的访问行为,从而实现对应用程序权限的主动控制和管理。然而,该方法存在需要对Android操作系统进行重新编译和定制,以“刷机”方式重置移动终端的软件系统,且对Android应用程序配置文件中的系统权限申请列表和Android操作系统的API版本依赖性较明显等弊端,使得该方法的适用性和易用性较差,从而导致该方法在控制应用程序权限时也不够灵活。
[0006]因此,有必要提供一种灵活性、通用性更高的应用程序权限控制方法。

【发明内容】

[0007]本发明实施例提供了一种应用程序权限动态控制方法和系统,用以提高应用程序权限控制的灵活性、通用性。
[0008]根据本发明的一个方面,提供了一种应用程序权限动态控制方法,包括:
[0009]服务管理ServiceManager进程接收到应用程序发送的服务请求时,调用新共享库中的接口控制ioctl函数;所述ioctl函数对所述服务请求进行解析,获取其中的进程id号和服务组件名称后通过所述ServiceManager进程与应用程序权限动态控制系统之间的通信链路向所述应用程序权限动态控制系统发送;[0010]所述应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向所述ioctl函数返回匹配成功信息;若否,则显示提示框提示用户是否运行本次服务请求;
[0011]所述应用程序权限动态控制系统若通过所述提示框接收到用户输入的许可指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息中后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息;
[0012]所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
[0013]其中,所述新共享库是预先加载的,以及所述通信链路是预先建立的:
[0014]应用程序权限动态控制系统运行后将所述ServiceManager进程挂起,并备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间后,执行所述新共享库中的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;
[0015]之后,所述应用程序权限动态控制系统根据备份的寄存器值和进程上下文恢复所述ServiceManager进程的执行现场。
[0016]较佳地,所述权限列表数据库中的权限申请信息是预先提取并保存的:
[0017]所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息并保存到所述权限列表数据库中。
[0018]较佳地,所述应用程序权限动态控制系统安装于具有Android操作系统的移动终端中。
[0019]较佳地,所述Manifest文件具体为XML格式的AndroidManifest.xml文件。
[0020]根据本发明的另一个方面,还提供了一种应用程序权限动态控制系统,包括:
[0021]权限匹配模块,用于在接收到ioctl函数通过所述应用程序权限动态控制系统与ServiceManager进程之间的通信链路发送的进程id号和服务组件名称后,根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向所述ioctl函数返回匹配成功信息;若否,则发送权限配置通知;其中,所述ioctl函数是所述ServiceManager进程接收到应用程序发送的服务请求时从新共享库中调用的;
[0022]权限配置模块,用于接收到所述权限配置通知后,显示提示框提示用户是否启用本次服务请求;若通过所述提示框接收到用户输入的启用指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息;所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
[0023]进一步,所述应用程序权限动态控制系统,还包括:
[0024]注入模块,用于在所述应用程序权限动态控制系统运行后,将所述ServiceManager进程挂起并处于受控状态,同时备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间中,执行所述新共享库的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;之后,根据备份的寄存器值和进程上下文恢复所述ServiceManager 进程。
[0025]进一步,所述应用程序权限动态控制系统,还包括:
[0026]权限信息保存模块,用于在所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后保存到所述权限列表数据库中。
[0027]较佳地,所述应用程序权限动态控制系统安装于具有Android操作系统的移动终端中。
[0028]较佳地,所述Manifest文件具体为XML格式的AndroidManifest.xml文件。
[0029]本发明实施例的技术方案中,服务管理ServiceManager进程接收到应用程序的服务请求时,调用新共享库中的ioctl函数,新共享库中ioctl函数获取应用程序的服务请求,并解析出获取的服务器请求中的进程id和应用程序所请求的服务组件名称后,通过预先建立的通信链路,发送到应用程序权限动态控制系统。应用程序权限动态控制系统根据权限列表数据库中、该应用程序的权限申请信息中的服务组件名称,以及用户输入的指令来确定出向新共享库中ioctl函数返回的信息,即匹配成功信息、或匹配失败信息;ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)根据应用程序权限动态控制系统返回的信息确定是否响应应用程序的服务请求。由于本发明实现应用程序权限的动态控制,并不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
[0030]而且,本发明的技术方案中,从Andriod操纵系统底层实现对应用程序权限的控制,可靠性更高;不需要定位Andriod系统服务组件的API,可以避免因定位API不全而导致应用程序越权使用系统资源,更好地避免了恶意行为对Andriod操作系统的影响;进一步,实现应用程序权限动态控制的方法和系统可以Andriod应用程序安装包APK的形成呈现,具有较好地复用性,易于推广。
【专利附图】

【附图说明】
[0031]图1为本发明实施例的加载新共享库以及建立通讯链路的方法的流程图;
[0032]图2为本发明实施例的应用程序权限控制方法的流程图;
[0033]图3为本发明实施例的应用程序权限控制系统的内部结构框图。
【具体实施方式】
[0034]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
[0035]本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
[0036]本发明的发明人考虑到,可以选取Andriod操作系统所使用的守护进程,即SM(月艮务管理,ServiceManager)进程,作为目标进程,通过进程注入的方式在ServiceManger进程中注入一个编译后的新共享库,使ServiceManager进程在接收到应用程序的服务请求时,先执行注入的新共享库中的代码逻辑;同时,对新共享库中的接口控制ioctl函数(新ioctl函数)进行改进,使得在ServiceManager进程调用新共享库中的ioctl函数时,相比于原共享库中的ioctl函数(原ioctl函数),新共享库中的ioctl函数还可以获取应用程序的服务请求,并将获取的服务请求中的数据发送到应用程序权限动态控制系统。
[0037]之后,应用程序权限动态控制系统根据权限列表数据库中该应用程序的权限申请信息,以及用户根据自己的需求输入的指令,确定出是否授予应用程序所请求的服务的权限后,向新ioctl函数返回信息;ServiceManager进程所调用的新共享库中的ioctl函数(即新ioctl函数)根据返回的信息响应或拒绝应用程序的服务请求。由于实现应用程序权限的动态控制不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
[0038]下面结合附图详细说明本发明的技术方案。在本发明实施例中,应用程序权限动态控制系统可以安装于具有Andriod操作系统的移动终端中,在其运行后,可以预先将编译后的新共享库加载到Andriod操作系统的ServiceManager进程的相应地址空间中,并建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路,具体方法的流程如图1所示,包括如下步骤:
[0039]SlOl:应用程序权限动态控制系统运行后,将ServiceManager进程挂起,备份ServiceManager进程的寄存器值和进程上下文。
[0040]具体地,应用程序权限动态控制系统每次运行后,其上层Java代码可以通过调用shell命令,调用其使用底层C语言编写的可执行文件,并通过Linux的系统函数ptraCe_attach将ServiceManager进程挂起,并备份ServiceManager进程的寄存器值和进程上下文,以备后续ServiceManager进程的恢复。
[0041]S102:应用程序权限动态控制系统将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间后,执行新共享库的入口函数,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路。
[0042]在本步骤中,应用程序权限动态控制系统将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间;之后,应用程序权限动态控制系统执行新共享库的入口函数,即so_entry,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路,即socket通信链路。该通信链路可用于将ServiceManager进程打包的应用程序的服务请求的数据发送给应用程序权限动态控制系统。
[0043]S103:应用程序权限动态控制系统根据备份的寄存器值和进程上下文恢复ServiceManager 进程。
[0044]具体地,应用程序权限动态控制系统将步骤SlOl中备份的寄存器值和进程上下文写回到ServiceManager进程中,使ServiceManager进程恢复挂起时的状态继续执行。
[0045]基于预先加载的新共享库、预先建立的通信链路,本发明实施例提供的应用程序权限动态控制方法的流程如图2所示,具体包括如下步骤:[0046]S201:ServiceManager进程接收到应用程序发送的服务请求时,调用新共享库中的接口控制ioctl函数。
[0047]具体地,Binder是Andriod操作系统中的进程间通信机制,ioctl函数是用来处理Binder进程间通讯请求的关键函数。应用程序向Andriod操作系统请求服务时,向Andriod操作系统的ServiceManager进程发送服务请求,ServiceManager进程接收到服务请求后,调用新共享库中的接口控制ioctl函数。
[0048]S202:新共享库中的ioctl函数对ServiceManager进程接收到的服务请求进行解析,将解析出的进程id号和服务组件名称向应用程序权限动态控制系统发送。
[0049]事实上,原共享库中的ioctl函数(即原ioctl函数)不具有对应用程序的服务请求进行解析的功能,不能获取到应用程序的服务请求中的进程id号和服务组件名称;而本发明的技术方案中,通过加载新共享库,从而将原共享库中的ioctl函数替换为新共享库中的ioctl函数(新ioctl函数),新共享库中的ioctl函数(新ioctl函数)可以对ServiceManager进程接收到的服务请求进行解析,获取其中的进程id号和服务组件名称,并通过预先建立的、ServiceManager进程与应用程序权限动态控制系统之间的通信链路向应用程序权限动态控制系统发送。
[0050]S203:应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息。
[0051]具体地,权限列表数据库中的权限申请信息是预先保存的,具体为:应用程序权限动态控制系统运行后,对于Andriod操作系统下每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后,将解析出的权限申请信息对应该应用程序的进程id号保存到权限列表数据库中。在本步骤中,应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找出对应该进程id号的权限申请信息,进而确定出查找出的权限申请信息中的服务组件名称。其中,Manifest文件具体可以为XML格式的AndroidManifest 文件,如 AndriodManifest.xml。
[0052]S204:应用程序权限动态控制系统确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则跳转到步骤S208 ;否则,执行步骤S205。
[0053]在本步骤中,应用程序权限动态控制系统将接收的服务组件名称与查找到的权限申请信息中的服务组件名称进行匹配,确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则表明应用程序所请求的服务没有涉及越权访问操作;否则,表明应用程序所请求的服务涉及越权访问操作。
[0054]S205:应用程序权限动态控制系统显示提示框提示用户是否启用本次服务请求。
[0055]具体地,若应用程序权限动态控制系统确定接收的服务组件名称存在于查找到的权限申请信息中,则在本步骤中可以通过移动终端的图形用户界面(⑶I,Graphical UserInterface),在⑶I内显示提示框提示用户是否启用本次服务请求。
[0056]S206:应用程序权限动态控制系统确定是否通过提示框接收到用户输入的启用指令;若是,则执行步骤S207 ;否则,执行步骤S210。
[0057]具体地,用户可以在⑶I的显示框内输入启用指令或拒绝指令;若用户输入启用指令,则表明用户授予应用程序本次服务请求的访问权限;若用户输入拒绝指令,则表明用户拒绝应用程序本次服务请求的访问权限。因此,用户可以根据自己的需求自主配置应用程序的访问权限,使得应用程序权限的控制更加灵活。
[0058]S207:应用程序权限动态控制系统将接收的服务组件名称添加到权限列表数据库中对应接收的进程id号的权限申请信息中。
[0059]具体地,若应用程序权限动态控制系统通过提示框接收到用户输入的启用指令,则更新权限列表数据库中应用程序的权限申请信息,将接收的服务组件名称添加到权限列表数据库中对应接收的进程id号的权限申请信息中;并执行下述步骤S208。
[0060]S208:应用程序权限动态控制系统向新共享库中的ioctl函数返回匹配成功信
肩、O
[0061]S209:新共享库中的ioctl函数响应应用程序的服务请求。
[0062]具体地,ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)若接收到匹配成功信息,则响应应用程序的服务请求;应用程序将可以成功从ServiceManager进程获取所请求的服务的实例对象,并得到该服务的使用权。
[0063]S210:应用程序权限动态控制系统向新共享库中的ioctl函数返回匹配失败信肩、O
[0064]具体地,若应用程序权限动态控制系统没有通过提示框接收到用户输入的启用指令,也就是,接收到用户输入的拒绝指令,则向新共享库中的ioctl函数(新ioctl函数)返回匹配失败信息,并执行步骤S211。
[0065]S211:新共享库中的ioctl函数拒绝应用程序的服务请求。
[0066]具体地,ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)若接收到匹配失败信息,则拒绝应用程序的服务请求。
[0067]因此,ServiceManager进程可以通过调用新共享库中的ioctl函数(新ioctl函数)获取应用程序的服务请求,并通过应用程序权限动态控制系统对应用程序的访问权限进行控制,使得应用程序权限的控制更为灵活。
[0068]基于上述的应用程序权限动态控制方法,本发明实施例提供的应用程序权限动态控制系统可安装于具有安卓Android操作系统的移动终端(如智能手机)中,其内部结构框图如图3所示,具体包括:权限匹配模块301和权限配置模块302。
[0069]权限匹配模块301用于在接收到ioctl函数通过应用程序权限动态控制系统与ServiceManager进程之间的通信链路发送的进程id号和服务组件名称后,根据接收的进程id号,在权限列表数据库305中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向新共享库中的ioctl函数(新ioctl函数)返回匹配成功信息;若否,则向权限配置模块302发送权限配置通知;其中,ioctl函数是ServiceManager进程接收到应用程序发送的服务请求时从新共享库中调用的。
[0070]权限配置模块302用于接收到权限匹配模块301发送的权限配置通知后,显示提示框提示用户是否启用本次服务请求;若通过提示框接收到用户输入的启用指令,则将接收的服务组件名称添加到权限列表数据库305中对应接收的进程id号的权限申请信息后,向新共享库中的ioctl函数(新ioctl函数)返回匹配成功信息;否则,向新共享库中的ioctl函数(新ioctl函数)返回匹配失败信息。新共享库中的ioctl函数(新ioctl函数)用于若接收到匹配成功信息,则响应ServiceManager进程接收到的服务请求;若接收到匹配失败信息,则拒绝ServiceManager进程接收到的服务请求。
[0071]进一步,上述的应用程序权限控制系统,还可包括:注入模块303。
[0072]注入模块303用于在应用程序权限动态控制系统运行后,将ServiceManager进程挂起,备份ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间后,执行新共享库的入口函数,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;之后,根据备份的寄存器值和进程上下文恢复ServiceManager进程。其中,注入模块303是使用底层C语言编写并以可执行文件的形式保存在本地的。
[0073]进一步,上述的应用程序权限控制系统,还包括:权限信息保存模块304。
[0074]权限信息保存模块304用于在应用程序权限动态控制系统运行后,对于所有安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后保存到权限列表数据库305中。其中,Manifest文件具体为XML格式的AndroidManifest文件。
[0075]本发明的技术方案中,服务管理ServiceManager进程接收到应用程序的服务请求时,调用新共享库中的ioctl函数(新ioctl函数),新共享库中ioctl函数获取应用程序的服务请求,并解析出获取的服务器请求中的进程id和应用程序所请求的服务组件名称后,通过预先建立的通信链路,发送到应用程序权限动态控制系统。应用程序权限动态控制系统根据权限列表数据库中、该应用程序的权限申请信息中的服务组件名称,以及用户输入的指令来确定出向新共享库中ioctl函数返回的信息,即匹配成功信息、或匹配失败信息;ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)根据应用程序权限动态控制系统返回的信息确定是否响应应用程序的服务请求。由于本发明实现应用程序权限的动态控制,并不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
[0076]而且,本发明的技术方案中,从Andriod操纵系统底层实现对应用程序权限的控制,可靠性更高;不需要定位Andriod系统服务组件的API,可以避免因定位API不全而导致应用程序越权使用系统资源,更好地避免了恶意行为对Andriod操作系统的影响;进一步,实现应用程序权限动态控制的方法和系统可以Andriod应用程序安装包APK的形成呈现,具有较好地复用性,易于推广。
[0077]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:R0M/RAM、磁碟、光盘等。
[0078]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种应用程序权限动态控制方法,其特征在于,包括: 服务管理ServiceManager进程接收到应用程序发送的服务请求时,调用新共享库中的接口控制ioctl函数;所述ioctl函数对所述服务请求进行解析,获取其中的进程id号和服务组件名称后通过所述ServiceManager进程与应用程序权限动态控制系统之间的通信链路向所述应用程序权限动态控制系统发送; 所述应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向所述ioctl函数返回匹配成功信息;若否,则显示提示框提示用户是否运行本次服务请求; 所述应用程序权限动态控制系统若通过所述提示框接收到用户输入的许可指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息中后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息; 所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
2.如权利要求1所述的方法,其特征在于,所述新共享库是预先加载的,以及所述通信链路是预先建立的: 应用程序权限动态控制系统运行后将所述ServiceManager进程挂起,并备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间后,执行所述新共享库中的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路; 之后,所述应用程序权限动态控制系统根据备份的寄存器值和进程上下文恢复所述ServiceManager进程的执行现场。
3.如权利要求1或2所述的方法,其特征在于,所述权限列表数据库中的权限申请信息是预先提取并保存的: 所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息并保存到所述权限列表数据库中。
4.如权利要求3所述的方法,其特征在于,所述应用程序权限动态控制系统安装于具有Android操作系统的移动终端中。
5.如权利要求4所述的方法,其特征在于,所述Manifest文件具体为XML格式的AndroidManifest.xml 文件。
6. 一种应用程序权限动态控制系统,其特征在于,包括: 权限匹配模块,用于在接收到ioctl函数通过所述应用程序权限动态控制系统与服务管理ServiceManager进程之间的通信链路发送的进程id号和服务组件名称后,根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息列表中;若是,则向所述ioctl函数返回匹配成功信息;若否,则发送权限配置通知;其中,所述ioctl函数是所述ServiceManager进程接收到应用程序发送的服务请求时从新共享库中调用的; 权限配置模块,用于接收到所述权限配置通知后,显示提示框提示用户是否允许本次服务请求;若通过所述提示框接收到用户输入的许可指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息;所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
7.如权利要求6所述的系统,其特征在于,还包括: 注入模块,用于在所述应用程序权限动态控制系统运行后,将所述ServiceManager进程挂起并处于受控状态,同时备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间中,执行所述新共享库的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;之后,根据备份的寄存器值和进程上下文恢复所述ServiceManager进程。
8.如权利要求7所述的系统,其特征在于,还包括: 权限信息保存模块,用于在所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后保存到所述权限列表数据库中。
9.如权利要求6-8任一所述的系统,其特征在于,其安装于具有Android操作系统的移动终端中。
10.如权利要求9所述的系统,其特征在于,所述Manifest文件具体为XML格式的AndroidManifest.xml 文件。
【文档编号】G06F21/12GK103617380SQ201310632042
【公开日】2014年3月5日 申请日期:2013年11月28日 优先权日:2013年11月28日
【发明者】范文浩, 吴帆, 阙斌生, 张洪光, 唐碧华, 余小秋 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1