应用程序提权方法、装置、设备及计算机可读存储介质与流程

文档序号:24165206发布日期:2021-03-05 17:06阅读:76来源:国知局
1.本发明涉及系统安全
技术领域
:,尤其涉及一种应用程序提权方法、装置、设备及计算机可读存储介质。
背景技术
::2.现有的提权方法是通过一个名叫su(switchuser,切换用户)的可执行文件来实现。整个实现分为两个部分,分别为服务端和客户端。服务端为root(超级用户)进程,在开机时通过init.rc(开机脚本)启动su;客户端为普通用户(应用程序),也是启动su通过socket(套接字)通讯连接服务端,让服务端的root用户为客户端的普通用户提供服务。现有root提权方法的缺点:由于提权必须有su文件存在,使得第三方应用程序通过执行或者检测su文件,可以轻易判断出系统是否提供了root提权,若检测到su文件,则第三方应用程序可能会出于安全隐患,拒绝提供某些核心服务。技术实现要素:3.本发明的主要目的在于提供一种应用程序提权方法、装置、设备及计算机可读存储介质,旨在解决现有的提权方法必须有su文件存在,从而导致第三方应用程序在检测到su文件时,可出于安全隐患拒绝提供某些核心服务的技术问题。4.为实现上述目的,本发明提供一种应用程序提权方法,所述方法包括以下步骤:5.系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配;6.若未匹配成功则对所述目标应用程序进行降权处理;7.若匹配成功则对所述目标应用程序维持root用户权限。8.可选地,所述系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤包括:9.系统中目标应用程序启动后,调用配置表插件服务将所述目标应用程序的包名与所述预设提权配置表中的各包名进行匹配;10.获取所述配置插件服务返回的匹配结果。11.可选地,所述系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤之前,还包括:12.在所述目标应用程序启动之前,将所述目标应用程序的包名通过预设私有路径写入所述预设提权配置表。13.可选地,所述若未匹配成功则对所述目标应用程序进行降权处理的步骤包括:14.若未匹配成功,则调用设置用户标识符setuid函数将所述目标应用程序从root用户权限降低为普通用户权限。15.可选地,所述方法还包括:16.检测系统中是否存在切换用户su文件;17.若存在,则删除所述su文件。18.可选地,所述目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤之前,还包括:19.系统中活动管理服务asm接收到启动所述目标应用程序的请求消息后,向孵化器zygote进程发起进程创建请求,由所述zygote进程派生出所述目标应用程序进程以启动所述目标应用程序。20.可选地,所述方法还包括:21.当检测到删除指令时,获取所述删除指令中携带的应用程序包名;22.将所述应用程序包名从所述预设提权配置表中删除。23.为实现上述目的,本发明还提供一种应用程序提权装置,所述装置包括:24.匹配模块,用于系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配;25.降权模块,用于若未匹配成功则对所述目标应用程序进行降权处理;26.维持模块,用于若匹配成功则对所述目标应用程序维持root用户权限。27.为实现上述目的,本发明还提供一种应用程序提权设备,所述应用程序提权设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序提权程序,所述应用程序提权程序被所述处理器执行时实现如上所述的应用程序提权方法的步骤。28.此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有应用程序提权程序,所述应用程序提权程序被处理器执行时实现如上所述的应用程序提权方法的步骤。29.本发明中,通过在系统中目标应用程序启动后,将目标应用程序的包名与预设提取配置表中的包名进行匹配,若未匹配成功则将目标应用程序进行降权处理,若匹配成功则对目标应用程序维持root用户权限,从而实现对目标应用程序的提权。相比于现有系统中应用程序通过su文件来使用root用户权限,本发明中,通过增加提权配置表,当应用程序的包名在提权配置表中能够匹配成功时对应用程序进行提权,提权后目标应用程序即可应用root用户权限实现相应功能,从而无需通过su文件来应用root用户权限,使得系统中无需配置su文件即可实现系统对应用程序的root提权,从而解决了第三方应用程序通过su文件来检测系统是否提高root提权的缺陷。附图说明30.图1为本发明实施例方案涉及的硬件运行环境的结构示意图;31.图2为本发明应用程序提权方法第一实施例的流程示意图;32.图3为本发明各实施例涉及的一种应用程序提权流程示意图;33.图4为本发明应用程序提权装置较佳实施例的功能模块示意图。34.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式35.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。36.目前的系统提权方法是开机启动一个root进程作为客户端,通过socket的方式为使用者提供root服务。由于提权必须有su文件存在,使得第三方应用程序通过执行或者检测su文件,可以轻易判断出系统是否提供了root提权,若检测到su文件,则第三方应用程序可能会出于安全隐患,拒绝提供某些核心服务。37.为解决上述问题,本发明提供一种解决方案,通过在系统中目标应用程序启动后,将目标应用程序的包名与预设提取配置表中的包名进行匹配,若未匹配成功则将目标应用程序进行降权处理,若匹配成功则对目标应用程序维持root用户权限,从而实现对目标应用程序的提权。相比于现有系统中应用程序通过su文件来使用root用户权限,本发明中,通过增加提权配置表,当应用程序的包名在提权配置表中能够匹配成功时对应用程序进行提权,提权后目标应用程序即可应用root用户权限实现相应功能,从而无需通过su文件来应用root用户权限,使得系统中无需配置su文件即可实现系统对应用程序的root提权,从而解决了第三方应用程序通过su文件来检测系统是否提高root提权的缺陷。38.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。39.如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。40.需要说明的是,本发明实施例应用程序提权设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等设备。在此不做具体限制。41.如图1所示,该应用程序提权设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可用于存储软件程序以及各种数据,存储器1005可为一种计算机存储介质,该存储器1005存储有本发明应用程序提权程序。存储器1005可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1005可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。42.处理器1001是应用程序提权设备的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器1005内的软件程序和/或模块,以及调用存储在存储器1005内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。如处理器1001执行存储器1005中的应用程序提权程序,以实现本发明应用程序提权方法各实施例的步骤。43.本领域技术人员可以理解,图1中示出的设备结构并不构成对应用程序提权设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。44.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序提权程序。操作系统是管理和控制设备硬件和软件资源的程序,支持应用程序提权程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的应用程序提权程序,并执行以下操作:45.系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配;46.若未匹配成功则对所述目标应用程序进行降权处理;47.若匹配成功则对所述目标应用程序维持root用户权限。48.进一步地,所述系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤包括:49.系统中目标应用程序启动后,调用配置表插件服务将所述目标应用程序的包名与所述预设提权配置表中的各包名进行匹配;50.获取所述配置插件服务返回的匹配结果。51.进一步地,所述系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤之前,还包括:52.在所述目标应用程序启动之前,将所述目标应用程序的包名通过预设私有路径写入所述预设提权配置表。53.进一步地,所述若未匹配成功则对所述目标应用程序进行降权处理的步骤包括:54.若未匹配成功,则调用设置用户标识符setuid函数将所述目标应用程序从root用户权限降低为普通用户权限。55.进一步地,所述方法还包括:56.检测系统中是否存在切换用户su文件;57.若存在,则删除所述su文件。58.进一步地,所述目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配的步骤之前,还包括:59.系统中活动管理服务asm接收到启动所述目标应用程序的请求消息后,向孵化器zygote进程发起进程创建请求,由所述zygote进程派生出所述目标应用程序进程以启动所述目标应用程序。60.进一步地,所述方法还包括:61.当检测到删除指令时,获取所述删除指令中携带的应用程序包名;62.将所述应用程序包名从所述预设提权配置表中删除。63.基于上述的结构,提出应用程序提权方法的各个实施例。64.参照图2,图2为本发明应用程序提权方法第一实施例的流程示意图。65.本发明实施例提供了应用程序提权方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本发明应用程序提权方法各个实施例的执行主体可以是智能手机、个人计算机和服务器等设备,为便于描述,以下各实施例中以系统为执行主体进行阐述。在本实施例中,应用程序提权方法包括:66.步骤s10,系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配;67.系统中目标应用程序启动后,系统可将目标应用程序的包名与预设提权配置表中的包名进行匹配。其中,预设提权配置表是预先设置在系统中的一个数据表,用于存储系统允许授予root用户权限(也即允许提权)的应用程序的包名,那么对于需要提权的应用程序,可预先将其包名写入提权配置表中。其中,root用户权限即超级用户权限,应用程序获得root权限之后就意味着已经获得了系统的最高权限,可以对系统中的任何文件执行所有增、删、改、查的操作。预设提权配置表可放在系统的隐藏文件夹下,使得第三方应用程序无法查找到该配置表。需要说明的是,应用程序的包名具有唯一性,在其他实施方式中,也可以采用其他具有唯一性的标识来代替包名。68.步骤s20,若未匹配成功则对所述目标应用程序进行降权处理;69.若系统在提权配置表中没有查找到与目标应用程序包名相同的包名,则确定未匹配成功,也即该目标应用程序不在允许授予root用户权限的名单内,此时,系统可对目标应用程序进行降权处理。其中,需要说明的是,目标应用程序是由系统进程派生出的,系统进程本身是有root用户权限的,派生出的目标应用程序自带root用户权限,故当确定不允许授予目标应用程序root用户权限时,就对其进行降权处理,使得目标应用程序恢复为普通用户权限,或者其他权限。70.步骤s30,若匹配成功则对所述目标应用程序维持root用户权限。71.若系统在提权配置表中查找到有与目标应用程序包名相同的包名,则确定匹配成功,也即该目标应用程序在允许授予root用户权限的名单内,此时,系统可对目标应用程序维持root用户权限,具体地可不对其进行降权处理,也即,保持其root用户权限,从而达到对该目标应用程序提权的目的。72.在本实施例中,通过在系统中目标应用程序启动后,将目标应用程序的包名与预设提取配置表中的包名进行匹配,若未匹配成功则将目标应用程序进行降权处理,若匹配成功则对目标应用程序维持root用户权限,从而实现对目标应用程序的提权。相比于现有系统中应用程序通过su文件来使用root用户权限,本实施例中,通过增加提权配置表,当应用程序的包名在提权配置表中能够匹配成功时对应用程序进行提权,提权后目标应用程序即可应用root用户权限实现相应功能,从而无需通过su文件来应用root用户权限,使得系统中无需配置su文件即可实现系统对应用程序的root提权,从而解决了第三方应用程序通过su文件来检测系统是否提高root提权的缺陷。73.进一步地,基于上述第一实施例,提出本发明应用程序提权方法的第二实施例,在本实施例中,所述步骤s10包括:74.步骤s101,系统中目标应用程序启动后,调用配置表插件服务将所述目标应用程序的包名与所述预设提权配置表中的各包名进行匹配;75.步骤s102,获取所述配置插件服务返回的匹配结果。76.在本实施例中,在系统中添加一个配置表插件服务,用于查询提权配置表。系统中目标应用程序启动后,可调用配置表插件服务查询提权配置表中的包名,以确定表中是否有与目标应用程序的包名相同的包名。配置表插件服务查询提权配置表后,返回一个匹配结果,匹配结果表示匹配成功或未匹配成功。系统获取配置表插件服务返回的匹配结果,即可根据匹配结果确定是否对目标应用程序进行降权处理。77.进一步地,所述步骤s10之前,还包括:78.步骤s40,在所述目标应用程序启动之前,将所述目标应用程序的包名通过预设私有路径写入所述预设提权配置表。79.在目标应用程序启动之前,目标应用程序可将其包名通过预设私有路径写入预设提权配置表中。其中,预设私有路径可以是预先设置的不对外公开的私有路径。私有路径可以是系统中的一个隐藏文件夹,或者是系统中不对外公开的配置表写入服务,由于不对外公开,第三方应用程序无法在系统中查找到该提权配置表。需要提权的应用程序可申请该私有路径,从而实现系统提权。需要说明的是,目标应用程序在启动之前写入一次包名后,后续即不需要再写入。进一步地,目标应用程序可以在安装时将包名写入预设提权配置表,或者在启动前的其他时刻写入。80.进一步地,所述步骤s20包括:81.步骤s201,若未匹配成功,则调用设置用户标识符setuid函数将所述目标应用程序从root用户权限降低为普通用户权限。82.若系统确定未匹配成功,则可调用setuid(设置用户标识符)函数将目标应用程序从root用户权限降低为普通用户权限。其中,setuid函数可用于设置应用程序进程的用户id,例如,用户id为0表示应用程序进程是root用户权限,非0表示应用程序进程是普通用户权限或其他用户权限,则目标应用程序的用户id初始是0,系统调用setuid函数将目标应用程序的用户id修改为1,从而将目标应用程序降低为了普通用户权限。83.进一步地,所述步骤s10之前,还包括:84.步骤s50,系统中活动管理服务asm接收到启动所述目标应用程序的请求消息后,向孵化器zygote进程发起进程创建请求,由所述zygote进程派生出所述目标应用程序进程以启动所述目标应用程序。85.系统在启动后会fork(派生)出zygote(孵化器)进程,后续进程都是由zygote进程fork出的。zygote进程先fork出systemserver(系统服务)进程,systemserver进程创建activitymanagerservice(asm,活动管理服务)。目标应用程序启动时,向asm发送请求消息,asm向zygote进程发起进程创建请求,zygote进程fork出目标应用程序进程,从而实现目标应用程序的启动。86.在一实施方式中,可按照如图3所示的流程进行应用程序提权。具体地,app(应用程序)需要获取root权限时,将自己本身的包名通过私有路径写进提权配置表。应用程序是由zygote进程fork出来的,由于zygote进程本身就是root用户,所以fork出来的应用程序都是root用户,接着在启动过程中,加载插件服务,获取配置表里的包名信息,和创建好的app进行对比,如果包名匹配,则不进行降权处理,让其保持root用户的权限,如果不匹配,就降权为普通用户。87.进一步地,基于上述第一和/或第二实施例,提出本发明应用程序提权方法的第三实施例,在本实施例中,所述方法还包括:88.步骤s60,检测系统中是否存在切换用户su文件;89.步骤s70,若存在,则删除所述su文件。90.系统中提供了通过提权配置表来进行提权的方法,故不需要配置su文件来实现应用程序提权,但是有一些恶意软件可能会为了获得root权限而在系统中安装su文件,从而导致可第三方应用程序能够通过检测系统中是否存在su文件来拒绝提供核心服务。故在本实施例中,系统可定时检测系统中是否存在su文件,若存在则将su文件删除。91.在本实施例中,通过系统检测到有su文件存在时,将其删除,从而进一步地避免了第三方应用程序通过检测su文件是否存在而拒绝核心服务的情况发生。92.进一步地,在一实施方式中,所述方法还包括:93.步骤s80,当检测到删除指令时,获取所述删除指令中携带的应用程序包名;94.应用程序可能是通过不正规途径将其包名写入预设提权配置表,或者,应用程序在第一次启动时需要root用户权限,在后续启动时即不再需要root用户权限,或者,因为其他原因不能再对应用程序进行授予root用户权限,则系统可以检测到上述事件发生时,触发携带该应用程序包名的删除指令。95.步骤s90,将所述应用程序包名从所述预设提权配置表中删除。96.根据删除指令,系统将删除指令中携带的应用程序包名从预设提权配置表中删除,从而使得下一次该应用程序启动时,系统在预设提权配置表中查找不到该应用程序的包名,进而对该应用程序进行降权处理。97.此外,此外本发明实施例还提出一种应用程序提权装置,参照图4,所述装置包括:98.匹配模块10,用于系统中目标应用程序启动后,将所述目标应用程序的包名与预设提权配置表中的各包名进行匹配;99.降权模块20,用于若未匹配成功则对所述目标应用程序进行降权处理;100.维持模块30,用于若匹配成功则对所述目标应用程序维持root用户权限。101.进一步地,所述匹配模块10包括:102.调用单元,用于系统中目标应用程序启动后,调用配置表插件服务将所述目标应用程序的包名与所述预设提权配置表中的各包名进行匹配;103.获取单元,用于获取所述配置插件服务返回的匹配结果。104.进一步地,所述装置还包括:105.写入模块,用于在所述目标应用程序启动之前,将所述目标应用程序的包名通过预设私有路径写入所述预设提权配置表。106.进一步地,所述降权模块20还用于:107.若未匹配成功,则调用设置用户标识符setuid函数将所述目标应用程序从root用户权限降低为普通用户权限。108.进一步地,所述装置还包括:109.检测模块,用于检测系统中是否存在切换用户su文件;110.第一删除模块,用于若存在,则删除所述su文件。111.进一步地,所述装置还包括:112.启动模块,用于系统中活动管理服务asm接收到启动所述目标应用程序的请求消息后,向孵化器zygote进程发起进程创建请求,由所述zygote进程派生出所述目标应用程序进程以启动所述目标应用程序。113.进一步地,所述装置还包括:114.获取模块,用于当检测到删除指令时,获取所述删除指令中携带的应用程序包名;115.第二删除模块,用于将所述应用程序包名从所述预设提权配置表中删除。116.本发明应用程序提权装置的具体实施方式的拓展内容与上述应用程序提权方法各实施例基本相同,在此不做赘述。117.此外,本发明实施例还提出一种计算机可读存储介质,所述存储介质上存储有应用程序提权程序,所述应用程序提权程序被处理器执行时实现如下所述的应用程序提权方法的步骤。118.本发明应用程序提权设备和计算机可读存储介质的各实施例,均可参照本发明应用程序提权方法各个实施例,此处不再赘述。119.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。120.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。121.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。122.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1