一种获取Root权限的方法及装置制造方法

文档序号:6621458阅读:471来源:国知局
一种获取Root权限的方法及装置制造方法
【专利摘要】本发明实施例公开了一种获取Root权限的方法,包括:终端以SU用户的身份开启本地进程,在所述本地进程中启动JNI模块;所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除;所述终端通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Jar包;所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。本发明实施例还公开了一种获取Root权限的装置。采用本发明,具体可降低获取Root权限的资源消耗,提高获取Root权限的成功率,适用性高,增强获取Root权限的用户体验的优点。
【专利说明】 —种获取Root权限的方法及装置

【技术领域】
[0001]本发明涉及电子【技术领域】,尤其涉及一种获取Root权限的方法及装置。

【背景技术】
[0002]随着手机等使用Android系统的设备的研发技术的日益发展成熟和手机的日益,手机应用程序的种类也日益多样。为了使得手机用户获得更好的用户体验,很多手机应用程序需要向系统申请Root权限,在Root权限下实现更多的功能。当前,部分手机等Android设备系统会提供Root权限,手机需要从系统中获取Root权限,才能在Root权限下实现相应的功能。
[0003]现有技术中,应用程序获取Root权限时,主要是先通过Java的应用程序编程接P (Applicat1n Programming Interface, API)以切换用户(Switch User, SU)用户身份启动自己常驻的进程(也称用户进程)服务,并且每次都用服务进程来执行上述动作。具体的,应用程序每次申请Root权限时,服务进程将根据Android系统中的/system/bin/app_process指令通过Java API以SU用户的身份启动用户进程服务。现有技术中通过服务进程来执行获取Root权限的操作,虽然可以获取到Root权限,但是当系统版本高于Android4.0,系统的安全监测性更高之后,现有技术中所描述的方法则无法避开系统的安全监测,应用程序无法使用Java API通过app_process来启动用户进程,进而无法获取Root权限。即现有技术中仅使用Java API通过app_process来启动用户进程的方式适用性低、失败率高;此外,现有技术中应用程序每次申请Root权限都需要服务程序来执行获取Root权限的操作,增加了获取Root权限的资源开销。


【发明内容】

[0004]本发明实施例提供一种获取Root权限的方法及装置。可通过JNI模块清除系统的安全环境变量,将本地进程的用户标识设置为SU用户的ID,进而通过JNI模块启动子进程,在上述子进程中以SU用户的操作权限加载Jar包中的常驻服务进程,通过Jar包中的常驻服务进程获取Root权限,降低了获取Root权限的资源消耗,提高了获取Root权限的成功率,适用性高,增强了获取Root权限的用户体验。
[0005]本发明实施例第一方面提供了一种获取Root权限的方法,其可包括:
[0006]终端以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块;
[0007]所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除;
[0008]所述终端通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包;
[0009]所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
[0010]其中,所述终端以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块,包括:
[0011]所述终端通过Java的应用程序编程接口 API以所述SU用户的身份开启一个本地进程;
[0012]所述终端在所述本地进程中向所述本地进程的标准输入流写入启动所述JNI模块可执行文件的命令,启动所述JNI模块。
[0013]其中,所述本地进程的用户标识包括:用户标识WD、有效用户标识EUID、全局唯一标识符⑶ID、有效全局唯一标识符E⑶ID。
[0014]其中,所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,包括:
[0015]所述终端通过所述JNI模块将所述本地进程中的WD、EUID,⑶ID,以及E⑶ID设置所述SU用户的ID,以获取所述SU用户的操作权限;
[0016]其中,所述SU用户为超级用户。
[0017]其中,所述安全环境变量为所述系统进行安全监测时监测的变量,若所述系统进行安全监测时监测到所述安全环境变量,将阻止所述终端获取所述Root权限;
[0018]所述将系统的安全环境变量清除,包括:
[0019]所述终端通过所述JNI模块,使用所述JNI模块中的unsetenv指令将所述安全环境变量清空,以避开所述系统的安全监测。
[0020]其中,所述在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包,包括:
[0021 ] 所述终端在所述子进程中,根据所述JNI模块中预置的启动参数以所述SU用户的操作权限加载所述Jar包。
[0022]其中,所述启动参数为所述Jar包的加载路径信息,所述Jar包的所述加载路径信息对应于所述SU用户的ID ;
[0023]当加载所述Jar包的所述终端的用户标识是所述SU用户的ID时,所述系统允许所述终端根据所述加载路径信息加载所述Jar包;
[0024]当加载所述Jar包的所述终端的用户标识不是所述SU用户的ID时,所述系统不允许所述终端加载所述Jar包。
[0025]其中,所述常驻服务进程为所述终端的用户用Java语言写的可执行程序,所述Jar包为所述常驻服务进程编译得到的文件包;
[0026]所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限,包括:
[0027]所述终端通过所述系统中的app_pix)CeSS启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取所述Root权限。
[0028]其中,所述终端为使用Android系统的手机、平板电脑中的一种。
[0029]其中,所述终端中包括需要所述Root权限实现指定功能的应用程序;
[0030]所述应用程序包括:设置、管理专家、应用宝、应用安装、数据备份中的至少一种。
[0031]本发明实施例第二方面提供了一种获取Root权限的装置,其可包括:
[0032]启动模块,用于以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块;
[0033]处理模块,用于通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除;
[0034]加载模块,用于通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包;
[0035]获取模块,用于启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
[0036]其中,所述启动模块,包括:
[0037]第一启动单元,用于通过Java的应用程序编程接口 API以所述SU用户的身份开启一个本地进程;
[0038]第二启动单元,用于在所述第一启动单元启动的所述本地进程向所述本地进程的标准输入流写入启动所述JNI模块可执行文件的命令,启动所述JNI模块。
[0039]其中,所述本地进程的用户标识包括:用户标识WD、有效用户标识EUID、全局唯一标识符⑶ID、有效全局唯一标识符E⑶ID。
[0040]其中,所述处理模块,具体用于:
[0041]通过所述JNI模块将所述本地进程中的WD、EUID,⑶ID,以及E⑶ID设置所述SU用户的ID,以获取所述SU用户的操作权限;
[0042]其中,所述SU用户为超级用户。
[0043]其中,所述安全环境变量为所述系统进行安全监测时监测的变量,若所述系统进行安全监测时监测到所述安全环境变量,将阻止终端应用程序获取所述Root权限;
[0044]所述处理模块,还具体用于:
[0045]通过所述JNI模块,使用所述JNI模块中的unsetenv指令将所述安全环境变量清空,以避开所述系统的安全监测。
[0046]其中,所述加载模块,具体用于:
[0047]通过所述JNI模块启动子进程,在所述子进程中,根据所述JNI模块中预置的启动参数以所述SU用户的操作权限加载所述Jar包。
[0048]其中,所述启动参数为所述Jar包的加载路径信息,所述Jar包的所述加载路径信息对应于所述SU用户的ID ;
[0049]当加载所述Jar包的所述终端的用户标识是所述SU用户的ID时,所述系统允许所述终端根据所述加载路径信息加载所述Jar包;
[0050]当加载所述Jar包的所述终端的用户标识不是所述SU用户的ID时,所述系统不允许所述终端加载所述Jar包。
[0051]其中,所述常驻服务进程为所述终端的用户用Java语言写的可执行程序,所述Jar包为所述常驻服务进程编译得到的文件包;
[0052]所述获取模块,具体用于:
[0053]通过所述系统中的app_pix)CeSS启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取所述Root权限。
[0054]其中,所述装置为使用Android系统的手机、平板电脑中的一种。
[0055]其中,所述装置中包括需要所述Root权限实现指定功能的应用程序;
[0056]应用程序包括:设置、管理专家、应用宝、应用安装、数据备份中的至少一种。
[0057]本发明实施例第三方面提供了一种终端,其可包括:上述本发明实施例第二方面提供的一种获取Root权限的装置中的任一项。
[0058]在实施本发明实施例中,终端可以以SU用户的身份启动本地进程,在上述本地进程中启动JNI模块,通过上述JNI模块将当前进程的用户设备设置为SU用户的ID,获取SU用户的操作权限,并将系统的安全环境变量清空,进而通过上述JNI模块启动子进程,在上述子进程中以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限。即,本发明实施例以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限,无需每次获取Root权限都开启一个本地进程去执行获取Root权限的指令,降低了获取Root权限的资源消耗,也提高了获取Root权限的成功率,适用性高,增强了获取Root权限的用户体验。

【专利附图】

【附图说明】
[0059]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0060]图1是本发明实施例提供的获取Root权限的方法的实施例流程示意图;
[0061]图2是本发明实施例提供的获取Root权限的装置的实施例结构示意图;
[0062]图3是本发明实施例提供的获取Root权限的装置的启动模块的结构示意图。

【具体实施方式】
[0063]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]具体实现中,本发明实施例中所描述的终端即为本发明实施例中提供的获取Root权限的装置,在本发明实施例中,上述终端可包括:手机、平板电脑等可使用Android系统的设备。上述终端仅是举例,而非穷举,包含但不限于上述终端。下面将以手机为例,对本发明实施例中所描述的获取Root权限的方法及装置进行具体描述。
[0065]参见图1,是本发明实施例提供的获取Root权限的方法的实施例流程示意图。本实施例中所描述的获取Root权限的方法,包括步骤:
[0066]S101,终端以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块。
[0067]在一些可行的实施方式中,本发明实施例中所描述的SU用户为超级用户。具体实现中,一些手机应用程序可通过该应用程序中的附加功能为手机用户提供更好的用户体验,但是上述附加功能需要在获得Root权限的环境下才能实现,因此上述手机应用程序可向系统申请获取Root权限,以实现上述附加功能。具体的,上述手机的应用程序可包括:设置、管理专家(例如手机管家)、应用宝、应用安装、数据备份等,其中,上述应用程序仅是举例,而非穷举,包含但不限于上述应用程序。例如,手机的应用安装可实现静态安装Android应用程序的功能,并且上述应用安装实现静态安装Android应用程序的功能需要在Root权限的环境下,因此上述手机应用安装可向手机系统申请获取Root权限。具体的,在本发明实施例中,本发明实施例将以手机等设备作为执行主体,对上述手机的应用安装等应用程序向系统申请获取Root权限的具体实现过程进行说明。
[0068]在一些可行的实施方式中,手机向系统申请获取Root权限时,可先以SU用户的身份开启一个本地进程(即native process),在上述本地进程中启动Java本地调用(JavaNative Interface, JNI)模块。具体的,手机可通过Java的API,以SU用户的身份开启一个本地进程。手机在上述本地进程中向本地进程的标识输入流写入启动JNI模块的可执行文件的命令,JNI模块获取到上述启动命令之后,则可开始运行,即,手机可通过在本地进程中写入启动JNI的可执行文件的命令启动JNI模块。
[0069]S102,所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除。
[0070]在一些可行的实施方式中,手机启动上述JNI模块之后,则可通过上述JNI模块中特有的一些API来实现获取Root权限的功能。具体实现中,手机启动上述JNI模块之后,则可通过上述JNI模块将当前进程(即本地进程)的用户标识设置为上述SU用户的ID,以获取更高的操作权限,即JNI模块将上述用户标识设置为SU用户的ID之后,则可获取与上述SU用户的操作权限相同的操作权限。系统接收到手机发起的获取Root权限的申请时,若判断得到上述用户标识为SU用户的ID,则可判断得到上述发起申请的用户具有SU用户的操作权限,进而将上述申请当成SU用户发起的申请。其中,上述当前进程的用户标识可包括:用户标识(User Identity, UID)、有效用户标识(Effective User Identity, EUID)、全局唯一标识符(Globally Unique Identifier, GUID)、有效全局唯一标识符(EffectiveGlobally Unique Identifier,E⑶ID)等。S卩,手机可将上述 UID、EUID、⑶ID 和 E⑶ID 等用户标识设置为上述SU用户的ID,以获取所述SU用户的操作权限。手机将上述各个用户标识设置为SU用户的ID之后,当手机检测到上述WD、EUID,⑶ID和E⑶ID等用户标识为上述SU用户的ID后,则可授予上述用户标识对应的用户与上述SU用户相同的操作权限,进而可发送给具有上述操作权限的用户的数据发送给上述用户。
[0071]在一些可行的实施方式中,手机通过上述JNI模块将用户标识设置为SU用户的ID之后,还可通过JNI模块将系统的安全环境变量清除。上述安全环境变量为系统进行安全监测时所监测的变量,例如LD_PREL0AD等,系统进行安全监测时若监测到上述安全环境变量,则将阻止手机等设备获取Root权限。本发明实施例为了避开系统的安全监测,以顺利获取到Root权限,手机可通过JNI模块,使用上述JNI模块中的unsetenv指令将系统的安全环境变量清除,进而可避免系统的安全监测。
[0072]S103,所述终端通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包。
[0073]S104,所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
[0074]在一些可行的实施方式中,手机通过JNI模块将本地进程的用户标识设置为SU用户的ID并将系统的安全环境变量清空之后,则可通过JNI模块启动一个子进程,在上述子进程中以SU用户的操作权限加载Jar包。具体的,手机可在上述子进程中,根据JNI模块中预置的启动参数以SU用户的操作权限加载Jar包,其中,启动参数为上述Jar包的加载路径信息,上述Jar包的加载路径信息对应于上述SU用户的ID,即只有上述SU用户的ID对应的用户才有权限加载上述Jar包。当系统监测到加载Jar包的手机的用户标识不是SU用户的ID时,则允许上述手机根据上述加载路径信息加载上述Jar包,否则,则不允许手机加载上述Jar包。具体的,JNI模块可在上述子进程中调用相应的函数获取上述启动参数,例如,JNI模块可通过调用realexecveO函数来调用启动参数,进而通过上述加载路径信息加载上述Jar包。
[0075]在一些可行的实施方式中,手机获取到上述Jar包之后,则可通过系统中的app_process启动上述Jar包中的常驻服务进程上述常驻服务进程启动之后,则可通过上述常驻服务进程获取Root权限,获取到上述Root权限之后,手机应用程序则可在Root权限的环境下实现更多的功能。其中,上述常驻服务进程为手机用户用Java语言写的可执行程序,上述Jar包即为上述常驻服务进程编译得到的文件包。
[0076]在本发明实施例中,手机可以以SU用户的身份启动本地进程,在上述本地进程中启动JNI模块,通过上述JNI模块将本地进程的用户设备设置为SU用户的ID,获取SU用户的操作权限,并将系统的安全环境变量清空,进而通过上述JNI模块启动子进程,在上述子进程中以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限。即,本发明实施例以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限,无需每次获取Root权限都开启一个本地进程去执行获取Root权限的指令,降低了获取Root权限的资源消耗,也提高了获取Root权限的成功率,适用性高,增强了获取Root权限的用户体验。
[0077]参见图2,是本发明实施例提供的获取Root权限的装置的实施例结构示意图。本实施例中所描述的装置,包括:
[0078]启动模块10,用于以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块。
[0079]处理模块20,用于通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除。
[0080]加载模块30,用于通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包。
[0081]获取模块40,用于启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
[0082]在一些可行的实施方式中,上述启动模块10,包括:
[0083]第一启动单元11,用于通过Java的应用程序编程接口 API以所述SU用户的身份开启一个本地进程。
[0084]第二启动单元12,用于在所述第一启动单元启动的所述本地进程向所述本地进程的标准输入流写入启动所述JNI模块可执行文件的命令,启动所述JNI模块。
[0085]在一些可行的实施方式中,上述处理模块20,具体用于:
[0086]通过所述JNI模块将所述本地进程中的WD、EUID,⑶ID,以及E⑶ID设置所述SU用户的ID,以获取所述SU用户的操作权限。
[0087]在一些可行的实施方式中,所述安全环境变量为所述系统进行安全监测时监测的变量,若所述系统进行安全监测时监测到所述安全环境变量,将阻止终端应用程序获取所述Root权限;
[0088]上述处理模块20,还具体用于:
[0089]通过所述JNI模块,使用所述JNI模块中的unsetenv指令将所述安全环境变量清空,以避开所述系统的安全监测。
[0090]在一些可行的实施方式中,上述加载模块30,具体用于:
[0091]通过所述JNI模块启动子进程,在所述子进程中,根据所述JNI模块中预置的启动参数以所述SU用户的操作权限加载所述Jar包。
[0092]在一些可行的实施方式中,上述获取模块40,具体用于:
[0093]通过所述系统中的app_pix)CeSS启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取所述Root权限。
[0094]在一些可行的实施方式中,本发明实施例中所描述的SU用户为超级用户。具体实现中,一些手机应用程序可通过该应用程序中的附加功能为手机用户提供更好的用户体验,但是上述附加功能需要在获得Root权限的环境下才能实现,因此上述手机应用程序可向系统申请获取Root权限,以实现上述附加功能。具体的,上述手机的应用程序可包括:设置、管理专家(例如手机管家)、应用宝、应用安装、数据备份等,其中,上述应用程序仅是举例,而非穷举,包含但不限于上述应用程序。例如,手机的应用安装可实现静态安装Android应用程序的功能,并且上述应用安装实现静态安装Android应用程序的功能需要在Root权限的环境下,因此上述手机应用安装可向手机系统申请获取Root权限。具体的,在本发明实施例中,本发明实施例将以手机等设备作为执行主体,对上述手机的应用安装等应用程序向系统申请获取Root权限的具体实现过程进行说明。
[0095]在一些可行的实施方式中,手机向系统申请获取Root权限时,启动模块10可先以SU用户的身份开启一个本地进程(即native process),在上述本地进程中启动Java本地调用(Java Native Interface, JNI)模块。具体的,启动模块10可通过JNI模块中的JavaAPI,以SU用户的身份开启一个本地进程。启动模块10可在上述本地进程中向本地进程的标识输入流写入启动JNI模块的可执行文件的命令,JNI模块获取到上述启动命令之后,则可开始运行,即,启动模块10可通过在本地进程中写入启动JNI的可执行文件的命令启动JNI模块。具体实现中,上述启动模块以SU用户的身份开启本地进程并在上述本地进程中启动JNI模块的具体实现过程可参见本发明实施例提供的获取Root权限的方法的实施例中的步骤S101,在此不再赘述。
[0096]在一些可行的实施方式中,手机通过启动模块10启动上述JNI模块之后,则可通过上述JNI模块中特有的一些API来实现获取Root权限的功能。具体实现中,启动模块10启动上述JNI模块之后,处理模块20则可通过上述JNI模块将当前进程(即本地进程)的用户标识设置为上述SU用户的ID,以获取更高的操作权限,即处理模块20通过JNI模块将上述用户标识设置为SU用户的ID之后,则可获取与上述SU用户的操作权限相同的操作权限。系统接收到手机发起的获取Root权限的申请时,若判断得到上述用户标识为SU用户的ID,则可判断得到上述发起申请的用户具有SU用户的操作权限,进而将上述申请当成SU用户发起的申请。其中,上述当前进程的用户标识可包括:用户标识(User Identity, UID)、有效用户标识(Effective User Identity, EUID)、全局唯一标识符(Globally UniqueIdentifier,GUID)、有效全局唯一标识符(Effective Globally Unique Identifier,EGUID)等。即,处理模块20可将上述WD、EUID,⑶ID和E⑶ID等用户标识设置为上述SU用户的ID,以获取所述SU用户的操作权限。处理模块20将上述各个用户标识设置为SU用户的ID之后,当手机检测到上述nD、EUID、⑶ID和E⑶ID等用户标识为上述SU用户的ID后,则可授予上述用户标识对应的用户与上述SU用户相同的操作权限,进而可发送给具有上述操作权限的用户的数据发送给上述用户。
[0097]在一些可行的实施方式中,处理模块20通过上述JNI模块将用户标识设置为SU用户的ID之后,还可通过JNI模块将系统的安全环境变量清除。上述安全环境变量为系统进行安全监测时所监测的变量,例如LD_PREL0AD等,系统进行安全监测时若监测到上述安全环境变量,则将阻止手机等设备获取Root权限。本发明实施例为了避开系统的安全监测,以顺利获取到Root权限,手机可通过JNI模块,使用上述JNI模块中的unsetenv指令将系统的安全环境变量清除,进而可避免系统的安全监测。具体实现中,上述处理模块将本地流程的用户标识设置为SU用户的ID并将系统的安全环境变量清除的具体实现过程可参见本发明实施例提供的获取Root权限的方法的实施例中的步骤S102,在此不再赘述。
[0098]在一些可行的实施方式中,处理模块20通过JNI模块将本地进程的用户标识设置为SU用户的ID并将系统的安全环境变量清空之后,加载模块30则可通过JNI模块启动一个子进程,在上述子进程中以SU用户的操作权限加载Jar包。具体的,加载模块30可在上述子进程中,根据JNI模块中预置的启动参数以SU用户的操作权限加载Jar包,其中,启动参数为上述Jar包的加载路径信息,上述Jar包的加载路径信息对应于上述SU用户的ID,即只有上述SU用户的ID对应的用户才有权限加载上述Jar包。当系统监测到加载Jar包的手机的用户标识不是SU用户的ID时,允许上述手机根据上述加载路径信息加载上述Jar包,否则,不允许手机加载上述Jar包。具体的,加载模块30可通过JNI模块在上述子进程中调用相应的函数获取上述启动参数,例如,JNI模块可通过调用realexecveO函数来调用启动参数,进而通过上述加载路径信息加载上述Jar包。
[0099]在一些可行的实施方式中,加载模块30获取到上述Jar包之后,获取模块40则可通过系统中的app_pix)cess启动上述Jar包中的常驻服务进程。获取模块40启动上述常驻服务进程之后,则可通过上述常驻服务进程获取Root权限。获取模块40获取到上述Root权限之后,手机应用程序则可在Root权限的环境下实现更多的功能。其中,上述常驻服务进程为手机用户用Java语言写的可执行程序,上述Jar包即为上述常驻服务进程编译得到的文件包。具体实现中,上述加载模块加载Jar包,以及获取模块根据加载模块加载的Jar获取Root权限的具体实现过程可参见本发明实施例提供的获取Root权限的方法的实施例中的步骤S103-S104,在此不再赘述。
[0100]在本发明实施例中,手机可以以SU用户的身份启动本地进程,在上述本地进程中启动JNI模块,通过上述JNI模块将本地进程的用户设备设置为SU用户的ID,获取SU用户的操作权限,并将系统的安全环境变量清空,进而通过上述JNI模块启动子进程,在上述子进程中以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限。即,本发明实施例以SU用户的操作权限加载Jar包中的常驻服务进程,通过上述常驻服务进程获取Root权限,无需每次获取Root权限都开启一个本地进程去执行获取Root权限的指令,降低了获取Root权限的资源消耗,也提高了获取Root权限的成功率,适用性高,增强了获取Root权限的用户体验。
[0101]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0102]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0103]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0104]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(R0M),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0105]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0106]本【技术领域】的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0107]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0108]上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
[0109]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0110]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种获取Root权限的方法,其特征在于,包括: 终端以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块; 所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除; 所述终端通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包; 所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
2.如权利要求1所述的方法,其特征在于,所述终端以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块,包括: 所述终端通过Java的应用程序编程接口 API以所述SU用户的身份开启一个本地进程; 所述终端在所述本地进程中向所述本地进程的标准输入流写入启动所述JNI模块可执行文件的命令,启动所述JNI模块。
3.如权利要求2所述的方法,其特征在于,所述本地进程的用户标识包括:用户标识WD、有效用户标识EHD、全局唯一标识符⑶ID、有效全局唯一标识符E⑶ID。
4.如权利要求3所述的方法,其特征在于,所述终端通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,包括: 所述终端通过所述JNI模块将所述本地进程中的WD、EUID,⑶ID,以及E⑶ID设置所述SU用户的ID,获取所述SU用户的操作权限; 其中,所述SU用户为超级用户。
5.如权利要求4所述的方法,其特征在于,所述安全环境变量为所述系统进行安全监测时监测的变量,若所述系统进行安全监测时监测到所述安全环境变量,将阻止所述终端获取所述Root权限; 所述将系统的安全环境变量清除,包括: 所述终端通过所述JNI模块,使用所述JNI模块中的unsetenv指令将所述安全环境变量清空,以避开所述系统的安全监测。
6.如权利要求5所述的方法,其特征在于,所述在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包,包括: 所述终端在所述子进程中,根据所述JNI模块中预置的启动参数以所述SU用户的操作权限加载所述Jar包。
7.如权利要求6所述的方法,其特征在于,所述启动参数为所述Jar包的加载路径信息,所述Jar包的所述加载路径信息对应于所述SU用户的ID ; 当加载所述Jar包的所述终端的用户标识是所述SU用户的ID时,所述系统允许所述终端根据所述加载路径信息加载所述Jar包; 当加载所述Jar包的所述终端的用户标识不是所述SU用户的ID时,所述系统不允许所述终端加载所述Jar包。
8.如权利要求7所述的方法,其特征在于,所述常驻服务进程为所述终端的用户用Java语言写的可执行程序,所述Jar包为所述常驻服务进程编译得到的文件包;所述终端启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限,包括: 所述终端通过所述系统中的app_pix)CeSS启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取所述Root权限。
9.如权利要求1-8任意一项所述的方法,其特征在于,所述终端为使用Android系统的手机、平板电脑中的一种。
10.如权利要求9所述的方法,其特征在于,所述终端中包括需要所述Root权限实现指定功能的应用程序; 所述应用程序包括:设置、管理专家、应用宝、应用安装、数据备份中的至少一种。
11.一种获取Root权限的装置,其特征在于,包括: 启动模块,用于以切换用户SU用户的身份开启本地进程,在所述本地进程中启动Java本地调用JNI模块; 处理模块,用于通过所述JNI模块将所述本地进程的用户标识设置为所述SU用户的ID,获取所述SU用户的操作权限,并将系统的安全环境变量清除; 加载模块,用于通过所述JNI模块启动子进程,在所述子进程中以所述SU用户的操作权限加载Java归档文件Jar包; 获取模块,用于启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取Root权限。
12.如权利要求11所述的装置,其特征在于,所述启动模块,包括: 第一启动单元,用于通过Java的应用程序编程接口 API以所述SU用户的身份开启一个本地进程; 第二启动单元,用于在所述第一启动单元启动的所述本地进程向所述本地进程的标准输入流写入启动所述JNI模块可执行文件的命令,启动所述JNI模块。
13.如权利要求12所述的装置,其特征在于,所述本地进程的用户标识包括:用户标识WD、有效用户标识EHD、全局唯一标识符⑶ID、有效全局唯一标识符E⑶ID。
14.如权利要求13所述的装置,其特征在于,所述处理模块,具体用于: 通过所述JNI模块将所述本地进程中的UID、EHD、⑶ID,以及E⑶ID设置所述SU用户的ID,以获取所述SU用户的操作权限; 其中,所述SU用户为超级用户。
15.如权利要求14所述的装置,其特征在于,所述安全环境变量为所述系统进行安全监测时监测的变量,若所述系统进行安全监测时监测到所述安全环境变量,将阻止终端应用程序获取所述Root权限; 所述处理模块,还具体用于: 通过所述JNI模块,使用所述JNI模块中的unsetenv指令将所述安全环境变量清空,以避开所述系统的安全监测。
16.如权利要求15所述的装置,其特征在于,所述加载模块,具体用于: 通过所述JNI模块启动子进程,在所述子进程中,根据所述JNI模块中预置的启动参数以所述SU用户的操作权限加载所述Jar包。
17.如权利要求16所述的装置,其特征在于,所述启动参数为所述Jar包的加载路径信息,所述Jar包的所述加载路径信息对应于所述SU用户的ID ; 当加载所述Jar包的所述终端的用户标识是所述SU用户的ID时,所述系统允许所述终端根据所述加载路径信息加载所述Jar包; 当加载所述Jar包的所述终端的用户标识不是所述SU用户的ID时,所述系统不允许所述终端加载所述Jar包。
18.如权利要求17所述的装置,其特征在于,所述常驻服务进程为所述终端的用户用Java语言写的可执行程序,所述Jar包为所述常驻服务进程编译得到的文件包; 所述获取模块,具体用于: 通过所述系统中的app_pix)CeSS启动所述Jar包的常驻服务进程,通过所述常驻服务进程获取所述Root权限。
19.如权利要求11-18任意一项所述的装置,其特征在于,所述装置为使用Android系统的手机、平板电脑中的一种。
20.如权利要求19所述的方法,其特征在于,所述装置中包括需要所述Root权限实现指定功能的应用程序; 应用程序包括:设置、管理专家、应用宝、应用安装、数据备份中的至少一种。
21.—种终端,其特征在于,所述终端包括:如权利要求11-20中任意一项所述的装置。
【文档编号】G06F21/51GK104134036SQ201410361668
【公开日】2014年11月5日 申请日期:2014年7月26日 优先权日:2014年7月26日
【发明者】黄伦华, 刘桂峰, 姚辉 申请人:珠海市君天电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1