一种APK权限管理方法、装置和系统与流程

文档序号:12132170阅读:734来源:国知局
一种APK权限管理方法、装置和系统与流程

本发明涉及一种APK权限管理方法、装置和系统,属于Android系统领域。



背景技术:

Framework层,是Android架构中非常重要的一层,起着“承上启下”的作用,同时它也负责对apk的行为进行控制,apk在AndroidManifest.xml中申请相关的控制权限,framework负责在apk执行对应操作时,检查其是否已经申请了该权限。Hal层,是主要由C/C++编写,编译成so库,主要是对设备操作的相关接口的封装,应用可以通过调用so中的接口来控制设备。

目前Android上,对应用权限进行检查和控制,都由framework完成,如果绕开了framework直接调用hal层的接口,就无法检查应用的权限,导致无法控制应用的行为,具有很大的风险。

例如某个apk,它在AndroidManifest.xml中申请了某权限例如<uses-permission android:name="android.permission.CLOUDPOS_CONTACTLESS_CARD"/>,apk先调用他们自己用C写的so库,这个so库里面使用dlopen调用系统hal层提供的so,起到操作某设备功能,这样就完全绕开了framework层,无法判断其是否申请了对应的权限,这样会对系统的安全造成潜在的威胁。



技术实现要素:

为了解决上述问题,本发明通过提供一种APK权限管理方法、装置和系统。

本发明采用的技术方案一方面为一种APK权限管理方法,为Android系统增加Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

优选地,所述Hal层管理模块获取APK注册的申请权限信息的步骤包括:S1、基于getpid函数获取APK的进程号;S2、读取cmdline文件以获取APK的包名;S3、解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

优选地,所述Hal层管理模块包括若干接口,所述接口用于基于getpid函数获取APK的进程号,用于读取cmdline文件以获取APK的包名,还用于解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

优选地,所述接口基于C语言实现。

本发明采用的技术方案另一方面为一种APK权限管理装置,该装置用于为Android系统增加Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

优选地,所述Hal层管理模块获取APK注册的申请权限信息的步骤包括:S1、基于getpid函数获取APK的进程号;S2、读取cmdline文件以获取APK的包名;S3、解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

优选地,所述Hal层管理模块包括若干接口,所述接口用于基于getpid函数获取APK的进程号,用于读取cmdline文件以获取APK的包名,还用于解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

优选地,所述接口基于C语言实现。

本发明采用的技术方案另一方面为一种Android系统,所述系统包括Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

本发明的有益效果为通过增加一个Hal层管理模块,获取APK的申请的访问权限,通过监视进程获取APK的访问操作,基于申请的访问权限判断并处理访问操作,能够在Hal层上实现对APK的监控,防止APK越过framework层进行访问,能够增加Android系统的防护能力。

附图说明

图1所示为基于本发明实施例的获取APK注册的申请权限信息的流程图;

图2所示为基于本发明实施例的一种Android系统的示意图。

具体实施方式

以下结合实施例对本发明进行说明。

基于发明的实施例,一种APK权限管理方法,为Android系统增加Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

通过在Android系统里面附加一个新的模块(Hal层管理模块),对APK的相关进程进行监控,防止其避过framework层而直接调用Hal层的接口,由于正常的APK在启动的时候会登入其申请的权限(一般存储在AndroidManifest.xml文件中),因此Hal层管理模块会通过读取记载着正式的申请的权限的文件,获取该APK的申请的权限,同时基于该申请的权限的信息控制APK对Hal层接口的访问,即正式登陆过的权限会让其执行,没有申请的权限则认为其非法并禁止其执行。

如图1所示流程图,所述Hal层管理模块获取APK注册的申请权限信息的步骤包括:S1、基于getpid函数获取APK的进程号;S2、读取cmdline文件以获取APK的包名;S3、解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

所有安装的apk申请的权限,最后会统一注册到/data/system/packages.xml;基于getpid函数获得APK的进程号(首先,Hal层管理模块实时接收到访问Hal层的进程的信息,区别出那些是APK发出的进程,通过getpid函数追溯属于APK的进程的来源,即对应的APK的进程号);有了进程号之后,通过读取 /proc/(pid)/cmdline文件以获取当前APK的包名;知道包名之后,解析/data/system/packages.xml查询到对应包名位置,就可以解析出apk申请了哪些权限,标记这些信息为申请权限信息。

所述Hal层管理模块包括若干接口,所述接口用于基于getpid函数获取APK的进程号,用于读取cmdline文件以获取APK的包名,还用于解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

Hal层管理模块主要的结构为一套接口,可以供Hal层实用,通过这一套接口,实现上述的用于基于getpid函数获取APK的进程号,用于读取cmdline文件以获取APK的包名,还用于解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息等功能。

所述接口基于C语言实现。

接口的编写语言主要为C语言。

基于本发明的实施例,一种APK权限管理装置,该装置用于为Android系统增加Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

所述Hal层管理模块获取APK注册的申请权限信息的步骤包括:S1、基于getpid函数获取APK的进程号;S2、读取cmdline文件以获取APK的包名;S3、解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

所述Hal层管理模块包括若干接口,所述接口用于基于getpid函数获取APK的进程号,用于读取cmdline文件以获取APK的包名,还用于解析packages.xml文件以获取APK申请的访问权限,标记其为申请权限信息。

所述接口基于C语言实现。

基于本发明的实施例,一种Android系统,其特征在于,所述系统包括Hal层管理模块,所述Hal层管理模块用于获取APK注册的申请权限信息并基于申请权限信息控制APK对Hal层接口的访问。

该Android系统相较一般的系统,多了用于增加系统安全性的Hal层管理模块,该Hal层管理模块的作用与上述实施例的Hal层管理模块一致,能够提高Android系统的安全性。

如图2所述的一种Android系统的示意图,首先,APK启动的时候,在AndroidManifest.xml中申请权限,同时调用APK自己写的SO库,然后这个SO库里面会使用dlopen函数调用系统Hal层提供的SO库,起到操作设备的目的(即执行相关的操作),而本系统能在这个阶段,通过对比APK的操作和其在AndroidManifest.xml中申请的权限(是否存在),判断是否进行了正式的申请,如果其操作符合其申请的权限,则允许其继续执行操作,否则不允许操作。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

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