1.一种建立root权限的方法,用于当不具有root权限的指定程序欲执行root权限下的操作时,包括:
接收所述指定程序发出的获取root权限的请求;
检测本地缓存中是否存在具有已成功获取root权限的标记的解决方案的代码;
如存在,获取所述具有已成功获取root权限的标记的解决方案的代码;
如不存在,获取本机信息并向服务器发送携带有所述本机信息的获取解决方案的请求,接收所述服务器发送的与所述本机信息对应的至少一个解决方案的代码;
运行所述至少一个破解方案中的代码,其中,所述破解方案用于通过操作系统的漏洞获取所述操作系统的root权限;
当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,所述后台服务进程用于完成所述指定程序欲执行的root权限下的操作;
其中,在成功获取root权限之后,所述方法还包括:在本地缓存所述成功获取root权限的解决方案的代码,并为所述解决方案增加已成功获取root权限的标记;并且在建立所述具有root权限的后台服务进程后,启动所述具有root权限的后台服务进程,并通过所述具有root权限的后台服务进程在系统中插入新服务进程。
2.根据权利要求1所述的方法,其中,所述本机信息包括所述本机的型号和/或操作系统的内核版本号。
3.根据权利要求2所述的方法,其中,所述至少一个解决方案的代码存储于动态链接库SO文件中,且所述至少一个解决方案按照对所述本机相同的机型的获取root成功率由高到低进行排列。
4.根据权利要求3所述的方法,其中,所述运行至少一个破解方案中的代码,包括:
按照所述解决方案的排列顺序,依次运行每一个解决方案中的代码,直至成功获取root权限。
5.根据权利要求3或4所述的方法,其中,所述运行至少一个破解方案中的代码,包括:
通过JAVA本地调用接口JNI运行所述SO文件。
6.根据权利要求1至4中任一项所述的方法,其中,所述当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,包括:
当通过运行所述破解方案的代码成功获取root权限时,运行具有root权限的su文件,通过所述su文件为所述指定程序建立具有root权限的后台服务进程。
7.一种建立root权限的装置,用于当不具有root权限的指定程序欲执行root权限下的操作时,包括:
请求接收模块,配置为接收所述指定程序发出的获取root权限的请求;
Root模块,配置为获取并运行至少一个破解方案中的代码,其中,所述破解方案用于通过操作系统的漏洞获取所述操作系统的root权限;
服务建立模块,配置为当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,所述后台服务进程用于完成所述指定程序欲执行的root权限下的操作;
其中,所述Root模块包括:
检测单元,配置为检测本地缓存中是否存在具有已成功获取root权限的标记的解决方案的代码;
本地root单元,配置为如本地缓存中存在具有已成功获取root权限的标记的解决方案的代码,获取所述具有已成功获取root权限的标记的解决方案的代码;
信息获取单元,配置为如本地缓存中不存在具有已成功获取root权限的标记的解决方案的代码,获取本机信息;
发送单元,配置为向服务器发送携带有所述本机信息的获取解决方案的请求;
接收单元,配置为接收所述服务器发送的与所述本机信息对应的至少一个解决方案的代码;
其中,所述装置还包括标记模块,所述标记模块配置为在成功获取root权限之后,在本地缓存所述成功获取root权限的解决方案的代码,并为所述解决方案增加已成功获取root权限的标记;以及
服务插入模块,配置为在建立所述具有root权限的后台服务进程后,启动所述具有root权限的后台服务进程,并通过所述具有root权限的后台服务进程在系统中插入新服务进程。
8.根据权利要求7所述的装置,其中,所述本机信息包括所述本机的型号和/或操作系统的内核版本号。
9.根据权利要求8所述的装置,其中,所述至少一个解决方案的代码存储于动态链接库SO文件中,且所述至少一个解决方案按照对所述本机相同的机型的获取root成功率由高到低进行排列。
10.根据权利要求9所述的装置,其中,所述root模块还配置为按照所述解决方案的排列顺序,依次运行每一个解决方案中的代码,直至成功获取root权限。
11.根据权利要求9或10所述的装置,其中,所述root模块还被配置为通过JAVA本地调用接口JNI运行所述SO文件。
12.根据权利要求7至10中任一项所述的装置,其中,所述服务建立模块,包括:
su文件运行单元,配置为当通过运行所述破解方案的代码成功获取root权限时,运行具有root权限的su文件;
服务建立单元,配置为通过所述su文件为所述指定程序建立具有root权限的后台服务进程。
建立root权限的方法和装置\n技术领域\n[0001] 本发明涉及本发明涉及计算机领域,具体涉及一种建立root权限的方法和装置。\n背景技术\n[0002] 目前,随着移动终端的快速发展和普及,android(安卓)系统应用越来越广泛。\nroot(根)为安卓操作系统中的最高操作权限,在root权限下,用户几乎可以访问和修改操作系统中的任何文件。但是,出于安全或为自身价值考虑,大部分手机操作系统厂商并不开放ROOT(根用户)权限给其他手机应用厂商。因此,导致一些应用软件不能最大限度的发挥自己的功能。\n[0003] 例如:优化软件在完成静默安装、卸载操作系统中的垃圾软件等均需要在root权限下才能正常工作,而由于手机操作系统厂商将root权限禁止,会导致上述优化操作无法完成。\n[0004] 目前,很多软件都通过修改操作系统的文件获取root权限,但是这种修改操作系统文件方式,会破坏原始操作系统,有可能造成操作系统的不稳定性。\n发明内容\n[0005] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的适于在终端设备上建立root权限的方法和相应地装置。\n[0006] 依据本发明的一个方面,提供一种建立root权限的方法,包括:\n[0007] 接收所述指定程序发出的获取root权限的请求;\n[0008] 获取并运行至少一个破解方案中的代码,其中,所述破解方案用于通过操作系统的漏洞获取所述操作系统的root权限;\n[0009] 当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,所述后台服务进程用于完成所述指定程序欲执行的root权限下的操作。\n[0010] 可选地,所述获取至少一个破解方案的代码,包括:\n[0011] 检测本地缓存中是否存在具有已成功获取root权限的标记的解决方案的代码;\n[0012] 当存在时,获取所述具有已成功获取root权限的标记的解决方案的代码。\n[0013] 可选地,所述获取至少一个破解方案的代码,包括:\n[0014] 获取本机信息;\n[0015] 向服务器发送携带有所述本机信息的获取解决方案的请求;\n[0016] 接收所述服务器发送的与所述本机信息对应的至少一个解决方案的代码;\n[0017] 其中,所述本机信息包括所述本机的型号和/或操作系统的内核版本号。\n[0018] 可选地,所述至少一个解决方案的代码存储于动态链接库SO文件中,且所述至少一个解决方案按照对所述本机相同的机型的获取root成功率由高到低进行排列。\n[0019] 可选地,所述运行至少一个破解方案中的代码,包括:\n[0020] 按照所述解决方案的排列顺序,依次运行每一个解决方案中的代码,直至成功获取root权限。\n[0021] 可选地,在成功获取root权限之后,所述方法还包括:\n[0022] 在本地缓存所述成功获取root权限的解决方案的代码,并为所述解决方案增加已成功获取root权限的标记。\n[0023] 可选地,所述运行至少一个破解方案中的代码,包括:\n[0024] 通过JAVA本地调用接口JNI运行所述SO文件。\n[0025] 可选地,所述当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,包括:\n[0026] 当通过运行所述破解方案的代码成功获取root权限时,运行具有root权限的su文件,通过所述su文件为所述指定程序建立具有root权限的后台服务进程。\n[0027] 依据本发明的一个方面,还提供了一种建立root权限的装置,用于当不具有root权限的指定程序欲执行root权限下的操作时,包括:\n[0028] 请求接收模块,配置为接收所述指定程序发出的获取root权限的请求;\n[0029] Root模块,配置为获取并运行至少一个破解方案中的代码,其中,所述破解方案用于通过操作系统的漏洞获取所述操作系统的root权限;\n[0030] 服务建立模块,配置为当通过运行所述破解方案的代码成功获取root权限时,为所述指定程序建立具有root权限的后台服务进程,所述后台服务进程用于完成所述指定程序欲执行的root权限下的操作。\n[0031] 可选地,所述root模块包括:\n[0032] 检测单元,配置为检测本地缓存中是否存在具有已成功获取root权限的标记的解决方案的代码;\n[0033] 本地root单元,配置为当存在具有已成功获取root权限的标记的解决方案的代码时,获取所述具有已成功获取root权限的标记的解决方案的代码。\n[0034] 可选地,所述root模块,包括:\n[0035] 信息获取单元,配置为获取本机信息;\n[0036] 发送单元,配置为向服务器发送携带有所述本机信息的获取解决方案的请求;\n[0037] 接收单元,配置为接收所述服务器发送的与所述本机信息对应的至少一个解决方案的代码;\n[0038] 其中,所述本机信息包括所述本机的型号和/或操作系统的内核版本号。\n[0039] 可选地,所述至少一个解决方案的代码存储于动态链接库SO文件中,且所述至少一个解决方案按照对所述本机相同的机型的获取root成功率由高到低进行排列。\n[0040] 可选地,所述root模块还配置为按照所述解决方案的排列顺序,依次运行每一个解决方案中的代码,直至成功获取root权限。\n[0041] 可选地,所述装置还包括标记模块,所述标记模块配置为在成功获取root权限之后,在本地缓存所述成功获取root权限的解决方案的代码,并为所述解决方案增加已成功获取root权限的标记。\n[0042] 可选地,所述root模块还被配置为通过JAVA本地调用接口JNI运行所述SO文件。\n[0043] 可选地,所述服务建立模块,包括:\n[0044] su文件运行单元,配置为当通过运行所述破解方案的代码成功获取root权限时,运行具有root权限的su文件;\n[0045] 服务建立单元,配置为通过所述su文件为所述指定程序建立具有root权限的后台服务进程。\n[0046] 本发明提供了一种建立root权限的方法和装置,本发明通过接收指定程序发出的获取root权限的请求,获取并运行至少一个破解方案中的代码,且当通过运行破解方案的代码成功获取root权限时,为该指定程序建立具有root权限的后台服务进程,从而完成该指定程序欲执行的root权限下的操作。可见,本发明在获取root权限时,不修改操作系统中的文件,而且仅在当不具有root权限的指定程序欲执行root权限下的操作时才会触发,因此,可以在保证操作系统不被破坏的情况下,对操作系统进行临时root,既保证了操作系统的稳定性,又能完成root下的操作。\n[0047] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。\n[0048] 根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。\n附图说明\n[0049] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:\n[0050] 图1是本发明一个实施例提供的一种建立root权限的方法流程图;\n[0051] 图2是本发明一个实施例提供的一种建立root权限的具体方法流程图;\n[0052] 图3是本发明一个实施例提供的一种建立root权限的装置结构框图。\n具体实施方式\n[0053] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。\n[0054] 实施例一\n[0055] 本发明实施例提供了一种建立root权限的方法。该方法可以通过对获取root权限的装置进行改进来实现。例如,本实施例中的装置可以为PC(Personal Computer,个人计算机),手机,手持电脑等用户移动终端设备。\n[0056] 图1是本发明一个实施例提供的一种建立root权限的方法流程图,该方法包括步骤S102至S106。\n[0057] S102,接收指定程序发出的获取root权限的请求。\n[0058] S104,获取并运行至少一个破解方案中的代码。\n[0059] 其中,破解方案用于通过操作系统的漏洞获取操作系统的root权限。\n[0060] S106,当通过运行破解方案的代码成功获取root权限时,为指定程序建立具有root权限的后台服务进程。\n[0061] 其中,后台服务进程用于完成指定程序欲执行的root权限下的操作。\n[0062] 本发明实施例提供了一种建立root权限的方法,该方法通过接收指定程序发出的获取root权限的请求,获取并运行至少一个破解方案中的代码,且当通过运行破解方案的代码成功获取root权限时,为该指定程序建立具有root权限的后台服务进程,从而完成该指定程序欲执行的root权限下的操作。可见,本实施例所提供的方法在获取root权限时,不修改操作系统中的文件,而且仅在当不具有root权限的指定程序欲执行root权限下的操作时才会触发,因此,可以在保证操作系统不被破坏的情况下,对操作系统进行临时root,既保证了操作系统的稳定性,又能完成root下的操作。\n[0063] 实施例二\n[0064] 本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。在实现本实施例提供的方法时,可以通过在终端的操作系统中,建立具有root权限的后台服务进程,通过该后台服务进程为终端中的应用程序提供root服务,以使其能够执行root权限下的操作。\n[0065] 下面,以用于在终端设备为root软件在终端中获取root权限为例来对本实施例提供的方法进行具体说明。需要说明的是,本实施例只是示例性的,并不限制本发明实施例所保护的范围。\n[0066] 图2是本发明一个实施例提供的一种建立root权限的具体方法流程图,该方法具体包括步骤S201至S210。\n[0067] 需要说明的是,在执行本实施例所提供的方法之前,需要在终端上安装root软件,而获取root权限的操作由root软件触发。下面对本实施所提供的方法进行具体介绍。\n[0068] 首先,执行步骤S201。在步骤S201中,接收root软件发出的获取root权限的请求。\n[0069] 需要说明的是,本实施例提供的获取root权限的方法,为一种临时获取root权限的方法。在现有技术中,通常是通过修改系统文件的方式,永久的获取操作系统的root权限,而这种方式,会破坏操作系统的原始文件,有可能造成操作系统的不稳定。\n[0070] 而在实际应用中,应用程序并不经常需要用到root权限执行操作。因此,本发明提供了一种临时获取root权限的方法,只在应用程序需要用到root权限时,才执行获取root权限的操作,不破坏操作系统的原始文件。\n[0071] 例如,当root软件执行静默安装或删除垃圾软件时,这些操作需要在root权限下才能执行,因此,这时可触发获取root权限的操作,发出获取root权限的请求;\n[0072] 具 体 地 ,本 实 施 例所 提 供 的 方 法 可 通 过 在 终 端 中 内 置 S D K(SoftwareDevelopmentKit,软件开发工具包)进行实现,并将用于获取root权限的解决方案的代码写入到SDK中,当root软件等软件需要获取root权限时,则可以向SDK发出调用请求。\n[0073] 在接收到获取root权限的请求之后,继续执行步骤S202。在步骤S202中,终端检测本地是否缓存有已成功获取root权限的解决方案的代码,若本地未保存有已成功获取root权限的解决方案的代码,则执行步骤S203,若本地保存有已成功获取root权限的解决方案的代码,则执行步骤S208。\n[0074] 在本实施例中,由于提供的方法为临时root的方法,因此在每次需要执行root权限下操作时,才进行root权限的获取。而获取root权限的方式,即为通过攻击代码攻击操作系统的漏洞,获取root权限。为了使得每次可以正常获取root权限,优选的方式为,在终端中保存可以成功root自身的代码,以供随时使用。\n[0075] 而在终端被第一次root之前,由于之前未进行过root,则本地不会保存有可以将其root的代码,此时,可通过步骤S203到步骤S207获取root方案。\n[0076] 当终端本地不存在可以成功root的代码时,执行步骤S203,即获取本机信息,之后再通过执行步骤S204来向服务器发送携带有终端的本机信息的获取解决方案的请求。\n[0077] 需要说明的是,获取root权限,主要方式为通过执行代码攻击操作系统的漏洞进行获取。而对于不同的操作系统,其漏洞不同,因此,获取root权限的方式也不同。\n[0078] 而目前市面上存在多种品牌的手机,操作系统也很繁多。为了能够快速的将一个终端进行root,因此,可选择针对每种操作系统进行漏洞统计,并针对这些漏洞进行root的解决方案设计,并开发相应的代码,以对每种操作系统均能够进行root,并将这些解决方案的代码保存在服务器。可以基于不同的解决方案代码进行不同的版本标识,以便查询。\n[0079] 在本实施例中,本机信息包括:终端的操作系统以及该操作系统的内核版本号。\n[0080] 例如,当前终端的本机信息可以为:安卓操作系统,内核版本号2.3。\n[0081] 在服务器接收到终端发送的获取解决方案的请求后,执行步骤S205,即服务器查找与上述本机信息对应的解决方案。\n[0082] 在服务器中,保存有多种进行root权限获取的解决方案,并将这些解决方案与每一种操作系统进行对应。\n[0083] 例如,当前终端的本机信息为安卓操作系统,内核版本为2.3,则服务器查找可以攻击内核版本为2.3的安卓操作系统的漏洞的解决方案。\n[0084] 在服务器查找得到与上述本机信息对应的解决方案的代码后,执行步骤S206,将上述解决方案的代码发送给终端。\n[0085] 需要说明的是,针对同一操作系统,由于其可能存在多个漏洞,因此,将其进行root的解决方案也会包括多个。服务器查找到与本机信息对应的多个解决方案的代码后,可以全部放到同一文件中,发送给终端。\n[0086] 本发明实施例中,\n[0087] 以安卓平台为例,由于安卓的内核为通过C语言开发得到,因此优选的实施方式是,解决方案的代码通过C语言进行开发,并保存在SO文件中。\n[0088] 其中,SO文件为安卓系统中的动态链接库,操作系统中的应用程序可以通过JNI(Java Native Interface,JAVA本地调用)进行调用。\n[0089] 在终端接收到进行root的解决方案的代码后,执行步骤S207,依次运行服务器发送的每一个解决方案的代码,直至成功获取root权限。在成功获取了root权限之后继续执行如下步骤S210的操作。\n[0090] 需要说明的是,在SO文件中会包括多个解决方案,服务器会为每个解决方案分配一个优先级,终端在依次使用每个解决方案进行root时,由优先级从高到低的顺序进行。\n[0091] 其中,解决方案的优先级由同一内核版本号的操作系统的破解成功率决定,成功率越高,则优先级越高。通过该排列优先级的方式,可以增加获取root权限的效率。\n[0092] 进一步地,在成功获取root权限后,本实施例所提供的方法还包括:\n[0093] 保存用于获取root权限的解决方案的代码,并为成功获取root权限的解决方案增加预设标记。其中,该标记可以用于在以后进行root时,终端可以快速的找到可以成功root自身的解决方案。\n[0094] 上述还提及了在步骤S202中,若本地保存有已成功获取root权限的解决方案的代码,则执行步骤S208。在步骤S208中,获取本地缓存的具有已成功获取root权限的标记的解决方案的代码。\n[0095] 其中,如果当前终端已经有过成功获取root权限的历史,则可以直接获取已被标记为成功获取root权限的解决方案的代码,而避免了再次去服务器获取的步骤,可以大大节省root操作所花费的时间。\n[0096] 接着执行步骤S209,运行在步骤S208中获取到的解决方案的代码,并判断是否能够获取到root权限。若成功获取root权限,执行步骤S210,若不能成功获取root权限,则返回执行步骤S203到步骤S207,重新由服务器获取解决方案。\n[0097] 需要说明的是,由于用户的终端进行升级操作等,可能会将原操作系统的漏洞封堵,因此,有可能发生以前的解决方案不能使用的情况。在这种情况下,则需要由服务器重新获取解决方案。\n[0098] 在步骤S210中,为root软件建立具有root权限的后台服务进程。\n[0099] 其中,为root软件建立具有root权限的后台服务进程,包括两种方法:\n[0100] 方法一,通过中转的方式建立具有root权限的后台服务进程。\n[0101] 上述第一种方法具体包括:通过SDK中的SO文件运行具有终端中的su文件,通过su文件为root软件建立具有root权限的后台服务进程。\n[0102] 其中,su文件为安卓操作系统中的可执行文件,对应于adb shell命令中的su命令,在安卓操作系统中,通过su文件可以进行提权。例如,当一个具有root权限的用户,通过su命令去建立一个进程时,则该进程可以拥有root权限,进而该进程也可以执行root权限下的操作。\n[0103] 而由于在步骤S207或S209中,终端已经成功进行root,因此,即可以以root用户的身份去运行su命令(即运行su文件),并建立具有root权限的后台服务进程。\n[0104] 该方式选用root软件通过调用SDK中的SO文件,再触发su文件建立后台服务进程的中转方式,可以减少软件的代码之间的耦合度。例如,当root软件的代码更改后,而不需要对SDK进行调整,root方法仍然适用。并且,此种设计可以使得,除root软件外,只要能得到SDK接口的应用程序,均能适用本发明所示的root方案。\n[0105] 需要说明的是,对于每一个应用程序的root请求,SDK均会为其对应的建立后台服务进程,以保证每一个具有root权限的后台服务进程只服务于对应的应用程序。\n[0106] 方法二,通过直接方式建立具有root权限的后台服务进程。\n[0107] 上述第一种方法具体包括:在成功获取root权限后,直接建立具有root权限的后台服务进程。\n[0108] 在该方法二下,触发建立root权限的后台服务进程的代码需集成在root软件中。\n[0109] 通过上述步骤S201至步骤S210所描述的方法,即完成了完整的临时root操作。后台服务进行建立后,即可执行root权限下的操作,获取到root的权限,当获取到系统的Root权限后,为了便于后续其他调用进程执行相关操作的Root权限获取,启动具有Root权限的服务进程,并通过该具有Root权限的服务进程在系统中插入新服务进程,例如可通过系统调用函数ServiceManager.addService来插入操作;虽然现有系统中并不允许随意插入服务进程,但由于前述已获取到系统的Root权限,因此利用现有函数即可在系统中插入所述通信服务进程。\n[0110] 临时Root权限的操作至少包括以下任意一种:备份系统、修改系统的内部程序、将应用程序安装到SD卡上、获取文件目录、静默安装应用程序、卸载应用程序、以及卸载系统预装应用程序等。\n[0111] 当root软件中欲执行静默安装、删除软件等操作时,即可以与该后台服务进程进行通信,要求其执行静默安装、删除软件等root权限下的操作。\n[0112] 本发明实施例提供了一种建立root权限的方法,该方法通过接收指定程序发出的获取root权限的请求,获取并运行至少一个破解方案中的代码,且当通过运行破解方案的代码成功获取root权限时,为该指定程序建立具有root权限的后台服务进程,从而完成该指定程序欲执行的root权限下的操作。可见,本实施例所提供的方法在获取root权限时,不修改操作系统中的文件,而且仅在当不具有root权限的指定程序欲执行root权限下的操作时才会触发,因此,可以在保证操作系统不被破坏的情况下,对操作系统进行临时root,既保证了操作系统的稳定性,又能完成root下的操作。\n[0113] 实施例三\n[0114] 图3是本发明一个实施例提供的一种建立root权限的装置结构框图,该装置300用于当不具有root权限的指定程序欲执行root权限下的操作时,该装置300包括:\n[0115] 请求接收模块310,配置为接收指定程序发出的获取root权限的请求;\n[0116] Root模块320,配置为获取并运行至少一个破解方案中的代码,其中,破解方案用于通过操作系统的漏洞获取操作系统的root权限;\n[0117] 服务建立模块330,配置为当通过运行破解方案的代码成功获取root权限时,为指定程序建立具有root权限的后台服务进程,后台服务进程用于完成指定程序欲执行的root权限下的操作。\n[0118] 可选地,root模块包括320:\n[0119] 检测单元321,配置为检测本地缓存中是否存在具有已成功获取root权限的标记的解决方案的代码;\n[0120] 本地root单元322,配置为当存在具有已成功获取root权限的标记的解决方案的代码时,获取具有已成功获取root权限的标记的解决方案的代码。\n[0121] 可选地,root模块320,包括:\n[0122] 信息获取单元323,配置为获取本机信息;\n[0123] 发送单元324,配置为向服务器发送携带有本机信息的获取解决方案的请求;\n[0124] 接收单元325,配置为接收服务器发送的与本机信息对应的至少一个解决方案的代码;\n[0125] 其中,本机信息包括本机的型号和/或操作系统的内核版本号。\n[0126] 可选地,至少一个解决方案的代码存储于动态链接库SO文件中,且至少一个解决方案按照对本机相同的机型的获取root成功率由高到低进行排列。\n[0127] 可选地,root模块320还配置为按照解决方案的排列顺序,依次运行每一个解决方案中的代码,直至成功获取root权限。\n[0128] 可选地,该装置300还包括标记模块340,标记模块340配置为在成功获取root权限之后,在本地缓存成功获取root权限的解决方案的代码,并为解决方案增加已成功获取root权限的标记。\n[0129] 可选地,root模块320还被配置为通过JAVA本地调用接口JNI运行SO文件。\n[0130] 可选地,服务建立模块330,包括:\n[0131] su文件运行单元331,配置为当通过运行破解方案的代码成功获取root权限时,运行具有root权限的su文件;\n[0132] 服务建立单元332,配置为通过su文件为指定程序建立具有root权限的后台服务进程。\n[0133] 本发明实施例提供了一种建立root权限的装置,该装置通过接收指定程序发出的获取root权限的请求,获取并运行至少一个破解方案中的代码,且当通过运行破解方案的代码成功获取root权限时,为该指定程序建立具有root权限的后台服务进程,从而完成该指定程序欲执行的root权限下的操作。可见,本实施例所提供的方法在获取root权限时,不修改操作系统中的文件,而且仅在当不具有root权限的指定程序欲执行root权限下的操作时才会触发,因此,可以在保证操作系统不被破坏的情况下,对操作系统进行临时root,既保证了操作系统的稳定性,又能完成root下的操作。\n[0134] 本发明上述的实施例可以应用于各种需要授予root权限的软件或产品中,[0135] 如卸载系统预装的软件、安装或卸载应用程序、备份或还原应用数据、启用或禁用应用程序。以及检测并关闭吸费的软件,或者是清理自启动的软件等,或者是应用在byod等公私隔离的设备中的各种需要调用root权限的场景,以及可用于清理系统文件,或者是用于检测不安全的手机端的钓鱼网站等。\n[0136] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。\n[0137] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。\n[0138] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。\n[0139] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。\n[0140] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于在获取root权限的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。\n[0141] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。\n[0142] 至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
法律信息
- 2022-07-22
专利权的转移
登记生效日: 2022.07.08
专利权人由北京奇虎科技有限公司变更为北京奇虎科技有限公司
地址由100088 北京市西城区新街口外大街28号D座112室(德胜园区)变更为100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801
专利权人由奇智软件(北京)有限公司 变更为空
- 2018-02-13
- 2015-01-07
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201410514642.3
申请日: 2014.09.29
- 2014-12-10
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-05-21
|
2012-11-07
| | |
2
| |
2014-04-09
|
2013-12-25
| | |
3
| |
2013-03-20
|
2012-11-02
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |