CN103617380B - 应用程序权限动态控制方法和系统 - Google Patents
应用程序权限动态控制方法和系统 Download PDFInfo
- Publication number
- CN103617380B CN103617380B CN201310632042.2A CN201310632042A CN103617380B CN 103617380 B CN103617380 B CN 103617380B CN 201310632042 A CN201310632042 A CN 201310632042A CN 103617380 B CN103617380 B CN 103617380B
- Authority
- CN
- China
- Prior art keywords
- authority
- application program
- information
- servicemanager
- kinetic
- 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
- 238000000034 method Methods 0.000 title claims abstract description 148
- 230000008569 process Effects 0.000 claims description 121
- 230000006870 function Effects 0.000 claims description 86
- 238000004891 communication Methods 0.000 claims description 23
- 238000002347 injection Methods 0.000 claims description 7
- 239000007924 injection Substances 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000009434 installation Methods 0.000 description 6
- 230000004899 motility Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 2
- 239000011230 binding agent Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 229940104697 arixtra Drugs 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- KANJSNBRCNMZMV-ABRZTLGGSA-N fondaparinux Chemical compound O[C@@H]1[C@@H](NS(O)(=O)=O)[C@@H](OC)O[C@H](COS(O)(=O)=O)[C@H]1O[C@H]1[C@H](OS(O)(=O)=O)[C@@H](O)[C@H](O[C@@H]2[C@@H]([C@@H](OS(O)(=O)=O)[C@H](O[C@H]3[C@@H]([C@@H](O)[C@H](O[C@@H]4[C@@H]([C@@H](O)[C@H](O)[C@@H](COS(O)(=O)=O)O4)NS(O)(=O)=O)[C@H](O3)C(O)=O)O)[C@@H](COS(O)(=O)=O)O2)NS(O)(=O)=O)[C@H](C(O)=O)O1 KANJSNBRCNMZMV-ABRZTLGGSA-N 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序权限动态控制方法和系统,所述方法包括:服务管理(SM)进程接收到应用程序的服务请求时调用被注入的共享库中的新ioctl函数;新ioctl函数获取请求服务的进程id号和服务组件名称向应用程序权限动态控制系统发送;所述系统若确定接收的服务组件名称存在于对应该进程id号的权限申请信息列表中,则向新ioctl函数返回匹配成功信息;否则提示用户进行配置;所述系统若接收到用户的启用指令,则将接收的服务组件名称添加到对应该进程id号的权限申请信息列表中,向新ioctl函数返回匹配成功信息,SM进程响应服务请求;否则返回匹配失败信息,SM进程拒绝服务请求;从而具有更高的灵活性和通用性。
Description
技术领域
本发明涉及移动终端技术,尤其涉及一种应用程序权限动态控制方法和系统。
背景技术
Android是基于Linux平台的开源操作系统,可使用于如智能手机、平板电脑、电视、数码相机、游戏机等的移动终端中,受到移动终端设备厂商和用户的广泛关注。
目前,基于Android操作系统的应用程序层出不穷。然而,由于Android操作系统的开放性特点,开发人员可以全面了解操作系统内部的机制与实现,使得操作系统的安全漏洞易被发现和利用。例如,一些应用程序的APK(Android Package,Android安装包)中被嵌入了恶意行为,如窃取个人隐私数据、消耗用户资费、占用网络流量、远程控制终端信息等;这些应用程序在安装的过程中可以获得额外的系统访问权限,对系统资源进行越权使用。而且,这些应用程序的恶意行为往往在后台运行,用户难以发现。
为了管理应用程序对系统资源的使用行为,实现应用程序权限的控制,Android操作系统提供了一套基本的授权模式:在应用程序的安装过程中,安装器会弹出询问窗体询问用户是否同意应用程序所有的权限申请;用户选择同意,便会授权应用程序所有的权限申请,用户选择拒绝,便会中止应用程序的安装。这样,安装的应用程序在运行过程中,Andriod操作系统可以根据应用程序安装时所授予的权限,控制应用程序对系统服务、数据等各项资源的访问和使用行为。但是,应用程序安装完成后,授予的各项权限不可更改;之后用户无法再根据自己的需求授予应用程序所申请的权限,使得该方法不够灵活。
为实现对应用程序的访问权限进行控制,现有的另一种方法是:在Android操作系统源码中查找到定位系统关键部件、关键资源的API(Application ProgrammingInterface,应用程序编程接口),通过API来管理应用程序对系统资源的访问行为,从而实现对应用程序权限的主动控制和管理。然而,该方法存在需要对Android操作系统进行重新编译和定制,以“刷机”方式重置移动终端的软件系统,且对Android应用程序配置文件中的系统权限申请列表和Android操作系统的API版本依赖性较明显等弊端,使得该方法的适用性和易用性较差,从而导致该方法在控制应用程序权限时也不够灵活。
因此,有必要提供一种灵活性、通用性更高的应用程序权限控制方法。
发明内容
本发明实施例提供了一种应用程序权限动态控制方法和系统,用以提高应用程序权限控制的灵活性、通用性。
根据本发明的一个方面,提供了一种应用程序权限动态控制方法,包括:
服务管理ServiceManager进程接收到应用程序发送的服务请求时,调用新共享库中的接口控制ioctl函数;所述ioctl函数对所述服务请求进行解析,获取其中的进程id号和服务组件名称后通过所述ServiceManager进程与应用程序权限动态控制系统之间的通信链路向所述应用程序权限动态控制系统发送;
所述应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向所述ioctl函数返回匹配成功信息;若否,则显示提示框提示用户是否运行本次服务请求;
所述应用程序权限动态控制系统若通过所述提示框接收到用户输入的许可指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息中后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息;
所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
其中,所述新共享库是预先加载的,以及所述通信链路是预先建立的:
应用程序权限动态控制系统运行后将所述ServiceManager进程挂起,并备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间后,执行所述新共享库中的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;
之后,所述应用程序权限动态控制系统根据备份的寄存器值和进程上下文恢复所述ServiceManager进程的执行现场。
较佳地,所述权限列表数据库中的权限申请信息是预先提取并保存的:
所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息并保存到所述权限列表数据库中。
较佳地,所述应用程序权限动态控制系统安装于具有Android操作系统的移动终端中。
较佳地,所述Manifest文件具体为XML格式的AndroidManifest.xml文件。
根据本发明的另一个方面,还提供了一种应用程序权限动态控制系统,包括:
权限匹配模块,用于在接收到ioctl函数通过所述应用程序权限动态控制系统与ServiceManager进程之间的通信链路发送的进程id号和服务组件名称后,根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向所述ioctl函数返回匹配成功信息;若否,则发送权限配置通知;其中,所述ioctl函数是所述ServiceManager进程接收到应用程序发送的服务请求时从新共享库中调用的;
权限配置模块,用于接收到所述权限配置通知后,显示提示框提示用户是否启用本次服务请求;若通过所述提示框接收到用户输入的启用指令,则将接收的服务组件名称添加到所述权限列表数据库中对应所述进程id号的权限申请信息后,向所述ioctl函数返回匹配成功信息;否则向所述ioctl函数返回匹配失败信息;所述ioctl函数若接收到匹配成功信息,则响应所述服务请求;若接收到匹配失败信息,则拒绝所述服务请求。
进一步,所述应用程序权限动态控制系统,还包括:
注入模块,用于在所述应用程序权限动态控制系统运行后,将所述ServiceManager进程挂起并处于受控状态,同时备份所述ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到所述ServiceManager进程的地址空间中,执行所述新共享库的入口函数,建立所述ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;之后,根据备份的寄存器值和进程上下文恢复所述ServiceManager进程。
进一步,所述应用程序权限动态控制系统,还包括:
权限信息保存模块,用于在所述应用程序权限动态控制系统运行后对于每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后保存到所述权限列表数据库中。
较佳地,所述应用程序权限动态控制系统安装于具有Android操作系统的移动终端中。
较佳地,所述Manifest文件具体为XML格式的AndroidManifest.xml文件。
本发明实施例的技术方案中,服务管理ServiceManager进程接收到应用程序的服务请求时,调用新共享库中的ioctl函数,新共享库中ioctl函数获取应用程序的服务请求,并解析出获取的服务器请求中的进程id和应用程序所请求的服务组件名称后,通过预先建立的通信链路,发送到应用程序权限动态控制系统。应用程序权限动态控制系统根据权限列表数据库中、该应用程序的权限申请信息中的服务组件名称,以及用户输入的指令来确定出向新共享库中ioctl函数返回的信息,即匹配成功信息、或匹配失败信息;ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)根据应用程序权限动态控制系统返回的信息确定是否响应应用程序的服务请求。由于本发明实现应用程序权限的动态控制,并不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
而且,本发明的技术方案中,从Andriod操纵系统底层实现对应用程序权限的控制,可靠性更高;不需要定位Andriod系统服务组件的API,可以避免因定位API不全而导致应用程序越权使用系统资源,更好地避免了恶意行为对Andriod操作系统的影响;进一步,实现应用程序权限动态控制的方法和系统可以Andriod应用程序安装包APK的形成呈现,具有较好地复用性,易于推广。
附图说明
图1为本发明实施例的加载新共享库以及建立通讯链路的方法的流程图;
图2为本发明实施例的应用程序权限控制方法的流程图;
图3为本发明实施例的应用程序权限控制系统的内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
本发明的发明人考虑到,可以选取Andriod操作系统所使用的守护进程,即SM(服务管理,ServiceManager)进程,作为目标进程,通过进程注入的方式在ServiceManger进程中注入一个编译后的新共享库,使ServiceManager进程在接收到应用程序的服务请求时,先执行注入的新共享库中的代码逻辑;同时,对新共享库中的接口控制ioctl函数(新ioctl函数)进行改进,使得在ServiceManager进程调用新共享库中的ioctl函数时,相比于原共享库中的ioctl函数(原ioctl函数),新共享库中的ioctl函数还可以获取应用程序的服务请求,并将获取的服务请求中的数据发送到应用程序权限动态控制系统。
之后,应用程序权限动态控制系统根据权限列表数据库中该应用程序的权限申请信息,以及用户根据自己的需求输入的指令,确定出是否授予应用程序所请求的服务的权限后,向新ioctl函数返回信息;ServiceManager进程所调用的新共享库中的ioctl函数(即新ioctl函数)根据返回的信息响应或拒绝应用程序的服务请求。由于实现应用程序权限的动态控制不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
下面结合附图详细说明本发明的技术方案。在本发明实施例中,应用程序权限动态控制系统可以安装于具有Andriod操作系统的移动终端中,在其运行后,可以预先将编译后的新共享库加载到Andriod操作系统的ServiceManager进程的相应地址空间中,并建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路,具体方法的流程如图1所示,包括如下步骤:
S101:应用程序权限动态控制系统运行后,将ServiceManager进程挂起,备份ServiceManager进程的寄存器值和进程上下文。
具体地,应用程序权限动态控制系统每次运行后,其上层Java代码可以通过调用shell命令,调用其使用底层C语言编写的可执行文件,并通过Linux的系统函数ptrace_attach将ServiceManager进程挂起,并备份ServiceManager进程的寄存器值和进程上下文,以备后续ServiceManager进程的恢复。
S102:应用程序权限动态控制系统将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间后,执行新共享库的入口函数,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路。
在本步骤中,应用程序权限动态控制系统将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间;之后,应用程序权限动态控制系统执行新共享库的入口函数,即so_entry,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路,即socket通信链路。该通信链路可用于将ServiceManager进程打包的应用程序的服务请求的数据发送给应用程序权限动态控制系统。
S103:应用程序权限动态控制系统根据备份的寄存器值和进程上下文恢复ServiceManager进程。
具体地,应用程序权限动态控制系统将步骤S101中备份的寄存器值和进程上下文写回到ServiceManager进程中,使ServiceManager进程恢复挂起时的状态继续执行。
基于预先加载的新共享库、预先建立的通信链路,本发明实施例提供的应用程序权限动态控制方法的流程如图2所示,具体包括如下步骤:
S201:ServiceManager进程接收到应用程序发送的服务请求时,调用新共享库中的接口控制ioctl函数。
具体地,Binder是Andriod操作系统中的进程间通信机制,ioctl函数是用来处理Binder进程间通讯请求的关键函数。应用程序向Andriod操作系统请求服务时,向Andriod操作系统的ServiceManager进程发送服务请求,ServiceManager进程接收到服务请求后,调用新共享库中的接口控制ioctl函数。
S202:新共享库中的ioctl函数对ServiceManager进程接收到的服务请求进行解析,将解析出的进程id号和服务组件名称向应用程序权限动态控制系统发送。
事实上,原共享库中的ioctl函数(即原ioctl函数)不具有对应用程序的服务请求进行解析的功能,不能获取到应用程序的服务请求中的进程id号和服务组件名称;而本发明的技术方案中,通过加载新共享库,从而将原共享库中的ioctl函数替换为新共享库中的ioctl函数(新ioctl函数),新共享库中的ioctl函数(新ioctl函数)可以对ServiceManager进程接收到的服务请求进行解析,获取其中的进程id号和服务组件名称,并通过预先建立的、ServiceManager进程与应用程序权限动态控制系统之间的通信链路向应用程序权限动态控制系统发送。
S203:应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找对应该进程id号的权限申请信息。
具体地,权限列表数据库中的权限申请信息是预先保存的,具体为:应用程序权限动态控制系统运行后,对于Andriod操作系统下每个安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后,将解析出的权限申请信息对应该应用程序的进程id号保存到权限列表数据库中。在本步骤中,应用程序权限动态控制系统根据接收的进程id号,在权限列表数据库中查找出对应该进程id号的权限申请信息,进而确定出查找出的权限申请信息中的服务组件名称。其中,Manifest文件具体可以为XML格式的AndroidManifest文件,如AndriodManifest.xml。
S204:应用程序权限动态控制系统确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则跳转到步骤S208;否则,执行步骤S205。
在本步骤中,应用程序权限动态控制系统将接收的服务组件名称与查找到的权限申请信息中的服务组件名称进行匹配,确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则表明应用程序所请求的服务没有涉及越权访问操作;否则,表明应用程序所请求的服务涉及越权访问操作。
S205:应用程序权限动态控制系统显示提示框提示用户是否启用本次服务请求。
具体地,若应用程序权限动态控制系统确定接收的服务组件名称存在于查找到的权限申请信息中,则在本步骤中可以通过移动终端的图形用户界面(GUI,Graphical UserInterface),在GUI内显示提示框提示用户是否启用本次服务请求。
S206:应用程序权限动态控制系统确定是否通过提示框接收到用户输入的启用指令;若是,则执行步骤S207;否则,执行步骤S210。
具体地,用户可以在GUI的显示框内输入启用指令或拒绝指令;若用户输入启用指令,则表明用户授予应用程序本次服务请求的访问权限;若用户输入拒绝指令,则表明用户拒绝应用程序本次服务请求的访问权限。因此,用户可以根据自己的需求自主配置应用程序的访问权限,使得应用程序权限的控制更加灵活。
S207:应用程序权限动态控制系统将接收的服务组件名称添加到权限列表数据库中对应接收的进程id号的权限申请信息中。
具体地,若应用程序权限动态控制系统通过提示框接收到用户输入的启用指令,则更新权限列表数据库中应用程序的权限申请信息,将接收的服务组件名称添加到权限列表数据库中对应接收的进程id号的权限申请信息中;并执行下述步骤S208。
S208:应用程序权限动态控制系统向新共享库中的ioctl函数返回匹配成功信息。
S209:新共享库中的ioctl函数响应应用程序的服务请求。
具体地,ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)若接收到匹配成功信息,则响应应用程序的服务请求;应用程序将可以成功从ServiceManager进程获取所请求的服务的实例对象,并得到该服务的使用权。
S210:应用程序权限动态控制系统向新共享库中的ioctl函数返回匹配失败信息。
具体地,若应用程序权限动态控制系统没有通过提示框接收到用户输入的启用指令,也就是,接收到用户输入的拒绝指令,则向新共享库中的ioctl函数(新ioctl函数)返回匹配失败信息,并执行步骤S211。
S211:新共享库中的ioctl函数拒绝应用程序的服务请求。
具体地,ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)若接收到匹配失败信息,则拒绝应用程序的服务请求。
因此,ServiceManager进程可以通过调用新共享库中的ioctl函数(新ioctl函数)获取应用程序的服务请求,并通过应用程序权限动态控制系统对应用程序的访问权限进行控制,使得应用程序权限的控制更为灵活。
基于上述的应用程序权限动态控制方法,本发明实施例提供的应用程序权限动态控制系统可安装于具有安卓Android操作系统的移动终端(如智能手机)中,其内部结构框图如图3所示,具体包括:权限匹配模块301和权限配置模块302。
权限匹配模块301用于在接收到ioctl函数通过应用程序权限动态控制系统与ServiceManager进程之间的通信链路发送的进程id号和服务组件名称后,根据接收的进程id号,在权限列表数据库305中查找对应该进程id号的权限申请信息,并确定接收的服务组件名称是否存在于查找到的权限申请信息中;若是,则向新共享库中的ioctl函数(新ioctl函数)返回匹配成功信息;若否,则向权限配置模块302发送权限配置通知;其中,ioctl函数是ServiceManager进程接收到应用程序发送的服务请求时从新共享库中调用的。
权限配置模块302用于接收到权限匹配模块301发送的权限配置通知后,显示提示框提示用户是否启用本次服务请求;若通过提示框接收到用户输入的启用指令,则将接收的服务组件名称添加到权限列表数据库305中对应接收的进程id号的权限申请信息后,向新共享库中的ioctl函数(新ioctl函数)返回匹配成功信息;否则,向新共享库中的ioctl函数(新ioctl函数)返回匹配失败信息。新共享库中的ioctl函数(新ioctl函数)用于若接收到匹配成功信息,则响应ServiceManager进程接收到的服务请求;若接收到匹配失败信息,则拒绝ServiceManager进程接收到的服务请求。
进一步,上述的应用程序权限控制系统,还可包括:注入模块303。
注入模块303用于在应用程序权限动态控制系统运行后,将ServiceManager进程挂起,备份ServiceManager进程的寄存器值和进程上下文;并将编译后的新共享库加载到ServiceManager进程的原共享库的地址空间后,执行新共享库的入口函数,建立ServiceManager进程与本应用程序权限动态控制系统之间的通信链路;之后,根据备份的寄存器值和进程上下文恢复ServiceManager进程。其中,注入模块303是使用底层C语言编写并以可执行文件的形式保存在本地的。
进一步,上述的应用程序权限控制系统,还包括:权限信息保存模块304。
权限信息保存模块304用于在应用程序权限动态控制系统运行后,对于所有安装的应用程序,从该应用程序的清单Manifest文件中解析出权限申请信息后保存到权限列表数据库305中。其中,Manifest文件具体为XML格式的AndroidManifest文件。
本发明的技术方案中,服务管理ServiceManager进程接收到应用程序的服务请求时,调用新共享库中的ioctl函数(新ioctl函数),新共享库中ioctl函数获取应用程序的服务请求,并解析出获取的服务器请求中的进程id和应用程序所请求的服务组件名称后,通过预先建立的通信链路,发送到应用程序权限动态控制系统。应用程序权限动态控制系统根据权限列表数据库中、该应用程序的权限申请信息中的服务组件名称,以及用户输入的指令来确定出向新共享库中ioctl函数返回的信息,即匹配成功信息、或匹配失败信息;ServiceManager进程所调用的新共享库中的ioctl函数(新ioctl函数)根据应用程序权限动态控制系统返回的信息确定是否响应应用程序的服务请求。由于本发明实现应用程序权限的动态控制,并不依赖Andriod定制操作系统或Andriod操作系统版本,且用户可根据需求选择是否授予应用程序新的权限,从而具有更高的通用性、灵活性。
而且,本发明的技术方案中,从Andriod操纵系统底层实现对应用程序权限的控制,可靠性更高;不需要定位Andriod系统服务组件的API,可以避免因定位API不全而导致应用程序越权使用系统资源,更好地避免了恶意行为对Andriod操作系统的影响;进一步,实现应用程序权限动态控制的方法和系统可以Andriod应用程序安装包APK的形成呈现,具有较好地复用性,易于推广。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
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.如权利要求8所述的系统,其特征在于,其安装于具有Android操作系统的移动终端中。
10.如权利要求9所述的系统,其特征在于,所述Manifest文件具体为XML格式的AndroidManifest.xml文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632042.2A CN103617380B (zh) | 2013-11-28 | 2013-11-28 | 应用程序权限动态控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632042.2A CN103617380B (zh) | 2013-11-28 | 2013-11-28 | 应用程序权限动态控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103617380A CN103617380A (zh) | 2014-03-05 |
CN103617380B true CN103617380B (zh) | 2017-04-19 |
Family
ID=50168083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310632042.2A Active CN103617380B (zh) | 2013-11-28 | 2013-11-28 | 应用程序权限动态控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617380B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10050993B2 (en) * | 2014-09-24 | 2018-08-14 | Mcafee, Llc | Non-invasive whitelisting |
CN105809040A (zh) * | 2014-12-29 | 2016-07-27 | 北京奇虎科技有限公司 | 应用隐私安全信息的检测方法及装置 |
CN105095746B (zh) * | 2015-07-02 | 2018-06-19 | 北京奇虎科技有限公司 | 应用程序启动鉴权方法及装置 |
CN106557669A (zh) * | 2015-09-30 | 2017-04-05 | 北京奇虎科技有限公司 | 一种应用程序安装过程的权限控制方法及装置 |
CN106557687A (zh) * | 2015-09-30 | 2017-04-05 | 北京奇虎科技有限公司 | 一种应用程序安装过程的权限控制方法及装置 |
CN105787355B (zh) * | 2016-03-18 | 2020-05-19 | 山东华软金盾软件股份有限公司 | 一种安全软件进程权限管理方法和装置 |
CN106022091A (zh) * | 2016-05-11 | 2016-10-12 | 青岛海信移动通信技术股份有限公司 | 应用程序的授权方法及装置 |
CN107786527B (zh) * | 2016-08-31 | 2021-11-05 | 阿里巴巴集团控股有限公司 | 实现服务发现的方法及设备 |
CN107967423B (zh) * | 2016-10-20 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 一种权限获取的方法以及终端设备 |
CN107068150A (zh) * | 2017-05-03 | 2017-08-18 | 安利军 | 一种Android智能语音控制方法及系统 |
CN108416207B (zh) * | 2018-03-07 | 2022-09-16 | 北京元心科技有限公司 | 蓝牙使用权限鉴别方法、装置及移动终端 |
CN110297658B (zh) * | 2018-03-21 | 2022-09-20 | 腾讯科技(深圳)有限公司 | 功能组件共享方法、装置和计算机设备 |
CN110275835A (zh) * | 2019-06-25 | 2019-09-24 | 努比亚技术有限公司 | 权限提示界面添加方法、装置及计算机可读存储介质 |
CN110941812B (zh) * | 2019-10-23 | 2022-07-12 | 天津智融创新科技发展有限公司 | 一种特权功能调用方法和系统 |
CN111859328A (zh) * | 2020-07-30 | 2020-10-30 | 中国民航信息网络股份有限公司 | 一种权限控制方法及系统 |
CN113553576A (zh) * | 2021-07-16 | 2021-10-26 | 杭州迈冲科技有限公司 | 基于Android系统应用程序授权的方法、装置和计算机可读存储介质 |
CN113987505A (zh) * | 2021-10-14 | 2022-01-28 | 北京鲸鲮信息系统技术有限公司 | 操作系统中权限控制方法及装置、电子设备、存储介质 |
CN114285845B (zh) * | 2021-12-08 | 2023-09-22 | 北京安天网络安全技术有限公司 | 云环境下的联网认证方法、系统、计算机设备及存储介质 |
CN117131515B (zh) * | 2023-10-25 | 2024-02-20 | 深圳市慧为智能科技股份有限公司 | 一种应用请求执行方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289633A (zh) * | 2011-09-02 | 2011-12-21 | 广东欧珀移动通信有限公司 | Android平台下的应用程序动态权限管理方法 |
CN103268451A (zh) * | 2013-06-08 | 2013-08-28 | 上海斐讯数据通信技术有限公司 | 一种基于移动终端的动态权限管理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301715B2 (en) * | 2010-05-20 | 2012-10-30 | Sandisk Il Ltd. | Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device |
-
2013
- 2013-11-28 CN CN201310632042.2A patent/CN103617380B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289633A (zh) * | 2011-09-02 | 2011-12-21 | 广东欧珀移动通信有限公司 | Android平台下的应用程序动态权限管理方法 |
CN103268451A (zh) * | 2013-06-08 | 2013-08-28 | 上海斐讯数据通信技术有限公司 | 一种基于移动终端的动态权限管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103617380A (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103617380B (zh) | 应用程序权限动态控制方法和系统 | |
CN109086100B (zh) | 一种高安全可信移动终端安全体系架构及安全服务方法 | |
TWI587674B (zh) | 用以支援嵌入式通用積體電路卡上全球平台使用之方法與裝置 | |
CN102314373B (zh) | 一种基于虚拟化技术实现安全工作环境的方法 | |
CN103379481B (zh) | 一种实现安全防护的方法 | |
CN103403669A (zh) | 使设备上的app变得安全和管理设备上的app | |
CN1965281A (zh) | 具有多进程结构的用于运行插件程序代码模块的计算装置 | |
CN102236764B (zh) | 用于Android系统的抵御桌面信息攻击的方法和监控系统 | |
CN104102882A (zh) | 一种应用程序隐私数据的保护方法及装置 | |
CN102024121A (zh) | 平台安全设备及其方法 | |
CN102622311A (zh) | Usb移动存储设备访问控制方法、装置及系统 | |
Bing | Analysis and research of system security based on android | |
US20140047553A1 (en) | Method and apparatus for data security reading | |
CN103559437B (zh) | 用于Android操作系统的访问控制方法及系统 | |
CN101853184A (zh) | 应用程序的管理方法和装置、以及终端 | |
CN105550595A (zh) | 用于智能通信设备的隐私数据访问方法及系统 | |
CN104199657A (zh) | 开放平台的调用方法及装置 | |
Misra et al. | Android security: attacks and defenses | |
CN108287647B (zh) | 一种应用运行方法及装置 | |
CN107908957B (zh) | 一种智能终端的安全运行管理方法及系统 | |
US20140053276A1 (en) | Safe data storage method and device | |
US9734307B2 (en) | User terminal interworking with peripheral device and method for preventing leakage of information using the same | |
GB2475787A (en) | Accessing remote data or programs via a shell application from a portable memory device running in a virtual machine on a PC | |
CN113296891A (zh) | 基于平台的多场景知识图谱处理方法及装置 | |
KR101345959B1 (ko) | 단일 사용자용 모바일 단말기 플랫폼을 위한 다중 사용자 권한 관리 방법 및 이를 이용한 모바일 단말기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |