建立root權(quán)限的方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種建立root權(quán)限的方法和裝置,涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】。方法包括:接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取操作系統(tǒng)的root權(quán)限;當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,后臺(tái)服務(wù)進(jìn)程用于完成指定程序欲執(zhí)行的root權(quán)限下的操作。通過(guò)本發(fā)明,在獲取root權(quán)限時(shí),可以在保證操作系統(tǒng)不被破壞的情況下,對(duì)操作系統(tǒng)進(jìn)行臨時(shí)root,既保證了操作系統(tǒng)的穩(wěn)定性,又能完成root下的操作。
【專利說(shuō)明】建立root權(quán)限的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種建立root權(quán)限的方法和裝置。
【背景技術(shù)】
[0002]目前,隨著移動(dòng)終端的快速發(fā)展和普及,android(安卓)系統(tǒng)應(yīng)用越來(lái)越廣泛。root (根)為安卓操作系統(tǒng)中的最高操作權(quán)限,在root權(quán)限下,用戶幾乎可以訪問(wèn)和修改操作系統(tǒng)中的任何文件。但是,出于安全或?yàn)樽陨韮r(jià)值考慮,大部分手機(jī)操作系統(tǒng)廠商并不開放ROOT(根用戶)權(quán)限給其他手機(jī)應(yīng)用廠商。因此,導(dǎo)致一些應(yīng)用軟件不能最大限度的發(fā)揮自己的功能。
[0003]例如:優(yōu)化軟件在完成靜默安裝、卸載操作系統(tǒng)中的垃圾軟件等均需要在root權(quán)限下才能正常工作,而由于手機(jī)操作系統(tǒng)廠商將root權(quán)限禁止,會(huì)導(dǎo)致上述優(yōu)化操作無(wú)法完成。
[0004]目前,很多軟件都通過(guò)修改操作系統(tǒng)的文件獲取root權(quán)限,但是這種修改操作系統(tǒng)文件方式,會(huì)破壞原始操作系統(tǒng),有可能造成操作系統(tǒng)的不穩(wěn)定性。
【發(fā)明內(nèi)容】
[0005]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的適于在終端設(shè)備上建立root權(quán)限的方法和相應(yīng)地裝置。
[0006]依據(jù)本發(fā)明的一個(gè)方面,提供一種建立root權(quán)限的方法,包括:
[0007]接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;
[0008]獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限;
[0009]當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
[0010]可選地,所述獲取至少一個(gè)破解方案的代碼,包括:
[0011]檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼;
[0012]當(dāng)存在時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0013]可選地,所述獲取至少一個(gè)破解方案的代碼,包括:
[0014]獲取本機(jī)信息;
[0015]向服務(wù)器發(fā)送攜帶有所述本機(jī)信息的獲取解決方案的請(qǐng)求;
[0016]接收所述服務(wù)器發(fā)送的與所述本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼;
[0017]其中,所述本機(jī)信息包括所述本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
[0018]可選地,所述至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且所述至少一個(gè)解決方案按照對(duì)所述本機(jī)相同的機(jī)型的獲取root成功率由高到低進(jìn)行排列。
[0019]可選地,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括:
[0020]按照所述解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
[0021]可選地,在成功獲取root權(quán)限之后,所述方法還包括:
[0022]在本地緩存所述成功獲取root權(quán)限的解決方案的代碼,并為所述解決方案增加已成功獲取root權(quán)限的標(biāo)記。
[0023]可選地,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括:
[0024]通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行所述SO文件。
[0025]可選地,所述當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,包括:
[0026]當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件,通過(guò)所述su文件為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0027]依據(jù)本發(fā)明的一個(gè)方面,還提供了一種建立root權(quán)限的裝置,用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),包括:
[0028]請(qǐng)求接收模塊,配置為接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;
[0029]Root模塊,配置為獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限;
[0030]服務(wù)建立模塊,配置為當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
[0031 ] 可選地,所述root模塊包括:
[0032]檢測(cè)單元,配置為檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼;
[0033]本地root單元,配置為當(dāng)存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0034]可選地,所述root模塊,包括:
[0035]信息獲取單元,配置為獲取本機(jī)信息;
[0036]發(fā)送單元,配置為向服務(wù)器發(fā)送攜帶有所述本機(jī)信息的獲取解決方案的請(qǐng)求;
[0037]接收單元,配置為接收所述服務(wù)器發(fā)送的與所述本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼;
[0038]其中,所述本機(jī)信息包括所述本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
[0039]可選地,所述至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且所述至少一個(gè)解決方案按照對(duì)所述本機(jī)相同的機(jī)型的獲取root成功率由高到低進(jìn)行排列。
[0040]可選地,所述root模塊還配置為按照所述解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
[0041]可選地,所述裝置還包括標(biāo)記模塊,所述標(biāo)記模塊配置為在成功獲取root權(quán)限之后,在本地緩存所述成功獲取root權(quán)限的解決方案的代碼,并為所述解決方案增加已成功獲取root權(quán)限的標(biāo)記。
[0042]可選地,所述root模塊還被配置為通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行所述SO文件。
[0043]可選地,所述服務(wù)建立模塊,包括:
[0044]su文件運(yùn)行單元,配置為當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件;
[0045]服務(wù)建立單元,配置為通過(guò)所述su文件為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0046]本發(fā)明提供了一種建立root權(quán)限的方法和裝置,本發(fā)明通過(guò)接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求,獲取并運(yùn)行至少一個(gè)破解方案中的代碼,且當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為該指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,從而完成該指定程序欲執(zhí)行的root權(quán)限下的操作??梢?,本發(fā)明在獲取root權(quán)限時(shí),不修改操作系統(tǒng)中的文件,而且僅在當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí)才會(huì)觸發(fā),因此,可以在保證操作系統(tǒng)不被破壞的情況下,對(duì)操作系統(tǒng)進(jìn)行臨時(shí)root,既保證了操作系統(tǒng)的穩(wěn)定性,又能完成root下的操作。
[0047]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0048]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說(shuō)明】
[0049]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0050]圖1是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的方法流程圖;
[0051]圖2是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的具體方法流程圖;
[0052]圖3是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的裝置結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0053]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)該被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0054]實(shí)施例一
[0055]本發(fā)明實(shí)施例提供了一種建立root權(quán)限的方法。該方法可以通過(guò)對(duì)獲取root權(quán)限的裝置進(jìn)行改進(jìn)來(lái)實(shí)現(xiàn)。例如,本實(shí)施例中的裝置可以為PC (Personal Computer,個(gè)人計(jì)算機(jī)),手機(jī),手持電腦等用戶移動(dòng)終端設(shè)備。
[0056]圖1是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的方法流程圖,該方法包括步驟 S102 至 S106。
[0057]S102,接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求。
[0058]S104,獲取并運(yùn)行至少一個(gè)破解方案中的代碼。
[0059]其中,破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取操作系統(tǒng)的root權(quán)限。
[0060]S106,當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0061]其中,后臺(tái)服務(wù)進(jìn)程用于完成指定程序欲執(zhí)行的root權(quán)限下的操作。
[0062]本發(fā)明實(shí)施例提供了一種建立root權(quán)限的方法,該方法通過(guò)接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求,獲取并運(yùn)行至少一個(gè)破解方案中的代碼,且當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為該指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,從而完成該指定程序欲執(zhí)行的root權(quán)限下的操作??梢?,本實(shí)施例所提供的方法在獲取root權(quán)限時(shí),不修改操作系統(tǒng)中的文件,而且僅在當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí)才會(huì)觸發(fā),因此,可以在保證操作系統(tǒng)不被破壞的情況下,對(duì)操作系統(tǒng)進(jìn)行臨時(shí)root,既保證了操作系統(tǒng)的穩(wěn)定性,又能完成root下的操作。
[0063]實(shí)施例二
[0064]本實(shí)施例為上述實(shí)施例一的一種具體應(yīng)用場(chǎng)景,通過(guò)本實(shí)施例,能夠更加清楚、具體地闡述本發(fā)明所提供的方法。在實(shí)現(xiàn)本實(shí)施例提供的方法時(shí),可以通過(guò)在終端的操作系統(tǒng)中,建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,通過(guò)該后臺(tái)服務(wù)進(jìn)程為終端中的應(yīng)用程序提供root服務(wù),以使其能夠執(zhí)行root權(quán)限下的操作。
[0065]下面,以用于在終端設(shè)備為root軟件在終端中獲取root權(quán)限為例來(lái)對(duì)本實(shí)施例提供的方法進(jìn)行具體說(shuō)明。需要說(shuō)明的是,本實(shí)施例只是示例性的,并不限制本發(fā)明實(shí)施例所保護(hù)的范圍。
[0066]圖2是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的具體方法流程圖,該方法具體包括步驟S201至S210。
[0067]需要說(shuō)明的是,在執(zhí)行本實(shí)施例所提供的方法之前,需要在終端上安裝root軟件,而獲取root權(quán)限的操作由root軟件觸發(fā)。下面對(duì)本實(shí)施所提供的方法進(jìn)行具體介紹。
[0068]首先,執(zhí)行步驟S201。在步驟S201中,接收root軟件發(fā)出的獲取root權(quán)限的請(qǐng)求。
[0069]需要說(shuō)明的是,本實(shí)施例提供的獲取root權(quán)限的方法,為一種臨時(shí)獲取root權(quán)限的方法。在現(xiàn)有技術(shù)中,通常是通過(guò)修改系統(tǒng)文件的方式,永久的獲取操作系統(tǒng)的root權(quán)限,而這種方式,會(huì)破壞操作系統(tǒng)的原始文件,有可能造成操作系統(tǒng)的不穩(wěn)定。
[0070]而在實(shí)際應(yīng)用中,應(yīng)用程序并不經(jīng)常需要用到root權(quán)限執(zhí)行操作。因此,本發(fā)明提供了一種臨時(shí)獲取root權(quán)限的方法,只在應(yīng)用程序需要用到root權(quán)限時(shí),才執(zhí)行獲取root權(quán)限的操作,不破壞操作系統(tǒng)的原始文件。
[0071]例如,當(dāng)root軟件執(zhí)行靜默安裝或刪除垃圾軟件時(shí),這些操作需要在root權(quán)限下才能執(zhí)行,因此,這時(shí)可觸發(fā)獲取root權(quán)限的操作,發(fā)出獲取root權(quán)限的請(qǐng)求;
[0072]具體地,本實(shí)施例所提供的方法可通過(guò)在終端中內(nèi)置SDK(SoftwareDevelopmentKit,軟件開發(fā)工具包)進(jìn)行實(shí)現(xiàn),并將用于獲取root權(quán)限的解決方案的代碼寫入到SDK中,當(dāng)root軟件等軟件需要獲取root權(quán)限時(shí),則可以向SDK發(fā)出調(diào)用請(qǐng)求。
[0073]在接收到獲取root權(quán)限的請(qǐng)求之后,繼續(xù)執(zhí)行步驟S202。在步驟S202中,終端檢測(cè)本地是否緩存有已成功獲取root權(quán)限的解決方案的代碼,若本地未保存有已成功獲取root權(quán)限的解決方案的代碼,則執(zhí)行步驟S203,若本地保存有已成功獲取root權(quán)限的解決方案的代碼,則執(zhí)行步驟S208。
[0074]在本實(shí)施例中,由于提供的方法為臨時(shí)root的方法,因此在每次需要執(zhí)行root權(quán)限下操作時(shí),才進(jìn)行root權(quán)限的獲取。而獲取root權(quán)限的方式,即為通過(guò)攻擊代碼攻擊操作系統(tǒng)的漏洞,獲取root權(quán)限。為了使得每次可以正常獲取root權(quán)限,優(yōu)選的方式為,在終端中保存可以成功root自身的代碼,以供隨時(shí)使用。
[0075]而在終端被第一次root之前,由于之前未進(jìn)行過(guò)root,則本地不會(huì)保存有可以將其root的代碼,此時(shí),可通過(guò)步驟S203到步驟S207獲取root方案。
[0076]當(dāng)終端本地不存在可以成功root的代碼時(shí),執(zhí)行步驟S203,即獲取本機(jī)信息,之后再通過(guò)執(zhí)行步驟S204來(lái)向服務(wù)器發(fā)送攜帶有終端的本機(jī)信息的獲取解決方案的請(qǐng)求。
[0077]需要說(shuō)明的是,獲取root權(quán)限,主要方式為通過(guò)執(zhí)行代碼攻擊操作系統(tǒng)的漏洞進(jìn)行獲取。而對(duì)于不同的操作系統(tǒng),其漏洞不同,因此,獲取root權(quán)限的方式也不同。
[0078]而目前市面上存在多種品牌的手機(jī),操作系統(tǒng)也很繁多。為了能夠快速的將一個(gè)終端進(jìn)行root,因此,可選擇針對(duì)每種操作系統(tǒng)進(jìn)行漏洞統(tǒng)計(jì),并針對(duì)這些漏洞進(jìn)行root的解決方案設(shè)計(jì),并開發(fā)相應(yīng)的代碼,以對(duì)每種操作系統(tǒng)均能夠進(jìn)行root,并將這些解決方案的代碼保存在服務(wù)器??梢曰诓煌慕鉀Q方案代碼進(jìn)行不同的版本標(biāo)識(shí),以便查詢。
[0079]在本實(shí)施例中,本機(jī)信息包括:終端的操作系統(tǒng)以及該操作系統(tǒng)的內(nèi)核版本號(hào)。
[0080]例如,當(dāng)前終端的本機(jī)信息可以為:安卓操作系統(tǒng),內(nèi)核版本號(hào)2.3。
[0081]在服務(wù)器接收到終端發(fā)送的獲取解決方案的請(qǐng)求后,執(zhí)行步驟S205,即服務(wù)器查找與上述本機(jī)信息對(duì)應(yīng)的解決方案。
[0082]在服務(wù)器中,保存有多種進(jìn)行root權(quán)限獲取的解決方案,并將這些解決方案與每一種操作系統(tǒng)進(jìn)行對(duì)應(yīng)。
[0083]例如,當(dāng)前終端的本機(jī)信息為安卓操作系統(tǒng),內(nèi)核版本為2.3,則服務(wù)器查找可以攻擊內(nèi)核版本為2.3的安卓操作系統(tǒng)的漏洞的解決方案。
[0084]在服務(wù)器查找得到與上述本機(jī)信息對(duì)應(yīng)的解決方案的代碼后,執(zhí)行步驟S206,將上述解決方案的代碼發(fā)送給終端。
[0085]需要說(shuō)明的是,針對(duì)同一操作系統(tǒng),由于其可能存在多個(gè)漏洞,因此,將其進(jìn)行root的解決方案也會(huì)包括多個(gè)。服務(wù)器查找到與本機(jī)信息對(duì)應(yīng)的多個(gè)解決方案的代碼后,可以全部放到同一文件中,發(fā)送給終端。
[0086]本發(fā)明實(shí)施例中,
[0087]以安卓平臺(tái)為例,由于安卓的內(nèi)核為通過(guò)C語(yǔ)言開發(fā)得到,因此優(yōu)選的實(shí)施方式是,解決方案的代碼通過(guò)C語(yǔ)言進(jìn)行開發(fā),并保存在SO文件中。
[0088]其中,SO文件為安卓系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù),操作系統(tǒng)中的應(yīng)用程序可以通過(guò)JNI (Java Native Interface, JAVA 本地調(diào)用)進(jìn)行調(diào)用。
[0089]在終端接收到進(jìn)行root的解決方案的代碼后,執(zhí)行步驟S207,依次運(yùn)行服務(wù)器發(fā)送的每一個(gè)解決方案的代碼,直至成功獲取root權(quán)限。在成功獲取了 root權(quán)限之后繼續(xù)執(zhí)行如下步驟S210的操作。
[0090]需要說(shuō)明的是,在SO文件中會(huì)包括多個(gè)解決方案,服務(wù)器會(huì)為每個(gè)解決方案分配一個(gè)優(yōu)先級(jí),終端在依次使用每個(gè)解決方案進(jìn)行root時(shí),由優(yōu)先級(jí)從高到低的順序進(jìn)行。
[0091]其中,解決方案的優(yōu)先級(jí)由同一內(nèi)核版本號(hào)的操作系統(tǒng)的破解成功率決定,成功率越高,則優(yōu)先級(jí)越高。通過(guò)該排列優(yōu)先級(jí)的方式,可以增加獲取root權(quán)限的效率。
[0092]進(jìn)一步地,在成功獲取root權(quán)限后,本實(shí)施例所提供的方法還包括:
[0093]保存用于獲取root權(quán)限的解決方案的代碼,并為成功獲取root權(quán)限的解決方案增加預(yù)設(shè)標(biāo)記。其中,該標(biāo)記可以用于在以后進(jìn)行root時(shí),終端可以快速的找到可以成功root自身的解決方案。
[0094]上述還提及了在步驟S202中,若本地保存有已成功獲取root權(quán)限的解決方案的代碼,則執(zhí)行步驟S208。在步驟S208中,獲取本地緩存的具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0095]其中,如果當(dāng)前終端已經(jīng)有過(guò)成功獲取root權(quán)限的歷史,則可以直接獲取已被標(biāo)記為成功獲取root權(quán)限的解決方案的代碼,而避免了再次去服務(wù)器獲取的步驟,可以大大節(jié)省root操作所花費(fèi)的時(shí)間。
[0096]接著執(zhí)行步驟S209,運(yùn)行在步驟S208中獲取到的解決方案的代碼,并判斷是否能夠獲取到root權(quán)限。若成功獲取root權(quán)限,執(zhí)行步驟S210,若不能成功獲取root權(quán)限,則返回執(zhí)行步驟S203到步驟S207,重新由服務(wù)器獲取解決方案。
[0097]需要說(shuō)明的是,由于用戶的終端進(jìn)行升級(jí)操作等,可能會(huì)將原操作系統(tǒng)的漏洞封堵,因此,有可能發(fā)生以前的解決方案不能使用的情況。在這種情況下,則需要由服務(wù)器重新獲取解決方案。
[0098]在步驟S210中,為root軟件建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0099]其中,為root軟件建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,包括兩種方法:
[0100]方法一,通過(guò)中轉(zhuǎn)的方式建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0101]上述第一種方法具體包括:通過(guò)SDK中的SO文件運(yùn)行具有終端中的su文件,通過(guò)SU文件為10t軟件建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0102]其中,su文件為安卓操作系統(tǒng)中的可執(zhí)行文件,對(duì)應(yīng)于adb shell命令中的su命令,在安卓操作系統(tǒng)中,通過(guò)SU文件可以進(jìn)行提權(quán)。例如,當(dāng)一個(gè)具有root權(quán)限的用戶,通過(guò)su命令去建立一個(gè)進(jìn)程時(shí),則該進(jìn)程可以擁有root權(quán)限,進(jìn)而該進(jìn)程也可以執(zhí)行root權(quán)限下的操作。
[0103]而由于在步驟S207或S209中,終端已經(jīng)成功進(jìn)行root,因此,即可以以root用戶的身份去運(yùn)行SU命令(即運(yùn)行SU文件),并建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0104]該方式選用root軟件通過(guò)調(diào)用SDK中的SO文件,再觸發(fā)su文件建立后臺(tái)服務(wù)進(jìn)程的中轉(zhuǎn)方式,可以減少軟件的代碼之間的耦合度。例如,當(dāng)root軟件的代碼更改后,而不需要對(duì)SDK進(jìn)行調(diào)整,root方法仍然適用。并且,此種設(shè)計(jì)可以使得,除root軟件外,只要能得到SDK接口的應(yīng)用程序,均能適用本發(fā)明所示的root方案。
[0105]需要說(shuō)明的是,對(duì)于每一個(gè)應(yīng)用程序的root請(qǐng)求,SDK均會(huì)為其對(duì)應(yīng)的建立后臺(tái)服務(wù)進(jìn)程,以保證每一個(gè)具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程只服務(wù)于對(duì)應(yīng)的應(yīng)用程序。
[0106]方法二,通過(guò)直接方式建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0107]上述第一種方法具體包括:在成功獲取root權(quán)限后,直接建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0108]在該方法二下,觸發(fā)建立root權(quán)限的后臺(tái)服務(wù)進(jìn)程的代碼需集成在root軟件中。
[0109]通過(guò)上述步驟S201至步驟S210所描述的方法,即完成了完整的臨時(shí)root操作。后臺(tái)服務(wù)進(jìn)行建立后,即可執(zhí)行root權(quán)限下的操作,獲取到root的權(quán)限,當(dāng)獲取到系統(tǒng)的Root權(quán)限后,為了便于后續(xù)其他調(diào)用進(jìn)程執(zhí)行相關(guān)操作的Root權(quán)限獲取,啟動(dòng)具有Root權(quán)限的服務(wù)進(jìn)程,并通過(guò)該具有Root權(quán)限的服務(wù)進(jìn)程在系統(tǒng)中插入新服務(wù)進(jìn)程,例如可通過(guò)系統(tǒng)調(diào)用函數(shù)ServiceManager.addService來(lái)插入操作;雖然現(xiàn)有系統(tǒng)中并不允許隨意插入服務(wù)進(jìn)程,但由于前述已獲取到系統(tǒng)的Root權(quán)限,因此利用現(xiàn)有函數(shù)即可在系統(tǒng)中插入所述通信服務(wù)進(jìn)程。
[0110]臨時(shí)Root權(quán)限的操作至少包括以下任意一種:備份系統(tǒng)、修改系統(tǒng)的內(nèi)部程序、將應(yīng)用程序安裝到SD卡上、獲取文件目錄、靜默安裝應(yīng)用程序、卸載應(yīng)用程序、以及卸載系統(tǒng)預(yù)裝應(yīng)用程序等。
[0111]當(dāng)root軟件中欲執(zhí)行靜默安裝、刪除軟件等操作時(shí),即可以與該后臺(tái)服務(wù)進(jìn)程進(jìn)行通信,要求其執(zhí)行靜默安裝、刪除軟件等root權(quán)限下的操作。
[0112]本發(fā)明實(shí)施例提供了一種建立root權(quán)限的方法,該方法通過(guò)接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求,獲取并運(yùn)行至少一個(gè)破解方案中的代碼,且當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為該指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,從而完成該指定程序欲執(zhí)行的root權(quán)限下的操作??梢姡緦?shí)施例所提供的方法在獲取root權(quán)限時(shí),不修改操作系統(tǒng)中的文件,而且僅在當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí)才會(huì)觸發(fā),因此,可以在保證操作系統(tǒng)不被破壞的情況下,對(duì)操作系統(tǒng)進(jìn)行臨時(shí)root,既保證了操作系統(tǒng)的穩(wěn)定性,又能完成root下的操作。
[0113]實(shí)施例三
[0114]圖3是本發(fā)明一個(gè)實(shí)施例提供的一種建立root權(quán)限的裝置結(jié)構(gòu)框圖,該裝置300用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),該裝置300包括:
[0115]請(qǐng)求接收模塊310,配置為接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;
[0116]Root模塊320,配置為獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取操作系統(tǒng)的root權(quán)限;
[0117]服務(wù)建立模塊330,配置為當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,后臺(tái)服務(wù)進(jìn)程用于完成指定程序欲執(zhí)行的root權(quán)限下的操作。
[0118]可選地,root模塊包括320:
[0119]檢測(cè)單元321,配置為檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼;
[0120]本地root單元322,配置為當(dāng)存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼時(shí),獲取具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0121]可選地,root模塊320,包括:
[0122]信息獲取單元323,配置為獲取本機(jī)信息;
[0123]發(fā)送單元324,配置為向服務(wù)器發(fā)送攜帶有本機(jī)信息的獲取解決方案的請(qǐng)求;
[0124]接收單元325,配置為接收服務(wù)器發(fā)送的與本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼;
[0125]其中,本機(jī)信息包括本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
[0126]可選地,至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且至少一個(gè)解決方案按照對(duì)本機(jī)相同的機(jī)型的獲取root成功率由高到低進(jìn)行排列。
[0127]可選地,root模塊320還配置為按照解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
[0128]可選地,該裝置300還包括標(biāo)記模塊340,標(biāo)記模塊340配置為在成功獲取root權(quán)限之后,在本地緩存成功獲取root權(quán)限的解決方案的代碼,并為解決方案增加已成功獲取root權(quán)限的標(biāo)記。
[0129]可選地,root模塊320還被配置為通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行SO文件。
[0130]可選地,服務(wù)建立模塊330,包括:
[0131]su文件運(yùn)行單元331,配置為當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件;
[0132]服務(wù)建立單元332,配置為通過(guò)su文件為指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0133]本發(fā)明實(shí)施例提供了一種建立root權(quán)限的裝置,該裝置通過(guò)接收指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求,獲取并運(yùn)行至少一個(gè)破解方案中的代碼,且當(dāng)通過(guò)運(yùn)行破解方案的代碼成功獲取root權(quán)限時(shí),為該指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,從而完成該指定程序欲執(zhí)行的root權(quán)限下的操作。可見,本實(shí)施例所提供的方法在獲取root權(quán)限時(shí),不修改操作系統(tǒng)中的文件,而且僅在當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí)才會(huì)觸發(fā),因此,可以在保證操作系統(tǒng)不被破壞的情況下,對(duì)操作系統(tǒng)進(jìn)行臨時(shí)root,既保證了操作系統(tǒng)的穩(wěn)定性,又能完成root下的操作。
[0134]本發(fā)明上述的實(shí)施例可以應(yīng)用于各種需要授予root權(quán)限的軟件或產(chǎn)品中,
[0135]如卸載系統(tǒng)預(yù)裝的軟件、安裝或卸載應(yīng)用程序、備份或還原應(yīng)用數(shù)據(jù)、啟用或禁用應(yīng)用程序。以及檢測(cè)并關(guān)閉吸費(fèi)的軟件,或者是清理自啟動(dòng)的軟件等,或者是應(yīng)用在byod等公私隔離的設(shè)備中的各種需要調(diào)用root權(quán)限的場(chǎng)景,以及可用于清理系統(tǒng)文件,或者是用于檢測(cè)不安全的手機(jī)端的釣魚網(wǎng)站等。
[0136]在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
[0137]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0138]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0139]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0140]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的用于在獲取root權(quán)限的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0141]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0142]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
[0143]本發(fā)明實(shí)施例還公開了 Al.—種建立root權(quán)限的方法,用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),包括:
[0144]接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;
[0145]獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限;
[0146]當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
[0147]A2.根據(jù)Al所述的方法,其中,所述獲取至少一個(gè)破解方案的代碼,包括:
[0148]檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼;
[0149]當(dāng)存在時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0150]A3.根據(jù)Al或A2所述的方法,其中,所述獲取至少一個(gè)破解方案的代碼,包括:
[0151]獲取本機(jī)信息;
[0152]向服務(wù)器發(fā)送攜帶有所述本機(jī)信息的獲取解決方案的請(qǐng)求;
[0153]接收所述服務(wù)器發(fā)送的與所述本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼;
[0154]其中,所述本機(jī)信息包括所述本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
[0155]A4.根據(jù)A3所述的方法,其中,所述至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且所述至少一個(gè)解決方案按照對(duì)所述本機(jī)相同的機(jī)型的獲取root成功率由高到低進(jìn)行排列。
[0156]A5.根據(jù)A4所述的方法,其中,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括:
[0157]按照所述解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
[0158]A6.根據(jù)A5所述的方法,其中,在成功獲取root權(quán)限之后,所述方法還包括:
[0159]在本地緩存所述成功獲取root權(quán)限的解決方案的代碼,并為所述解決方案增加已成功獲取root權(quán)限的標(biāo)記。
[0160]A7.根據(jù)A4至A6中任一項(xiàng)所述的方法,其中,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括:
[0161]通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行所述SO文件。
[0162]AS.根據(jù)Al至A7中任一項(xiàng)所述的方法,其中,所述當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,包括:
[0163]當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件,通過(guò)所述su文件為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
[0164]本發(fā)明實(shí)施例還公開了 B9.—種建立root權(quán)限的裝置,用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),包括:
[0165]請(qǐng)求接收模塊,配置為接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求;
[0166]Root模塊,配置為獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限;
[0167]服務(wù)建立模塊,配置為當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
[0168]B10.根據(jù)B9所述的裝置,其中,所述root模塊包括:
[0169]檢測(cè)單元,配置為檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼;
[0170]本地root單元,配置為當(dāng)存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
[0171]Bll.根據(jù)B9或BlO所述的裝置,其中,所述root模塊,包括:
[0172]信息獲取單元,配置為獲取本機(jī)信息;
[0173]發(fā)送單元,配置為向服務(wù)器發(fā)送攜帶有所述本機(jī)信息的獲取解決方案的請(qǐng)求;
[0174]接收單元,配置為接收所述服務(wù)器發(fā)送的與所述本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼;
[0175]其中,所述本機(jī)信息包括所述本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
[0176]B12.根據(jù)Bll所述的裝置,其中,所述至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且所述至少一個(gè)解決方案按照對(duì)所述本機(jī)相同的機(jī)型的獲取root成功率由聞到低進(jìn)行排列。
[0177]B13.根據(jù)B12所述的裝置,其中,所述root模塊還配置為按照所述解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
[0178]B14.根據(jù)B13所述的裝置,其中,所述裝置還包括標(biāo)記模塊,所述標(biāo)記模塊配置為在成功獲取root權(quán)限之后,在本地緩存所述成功獲取root權(quán)限的解決方案的代碼,并為所述解決方案增加已成功獲取root權(quán)限的標(biāo)記。
[0179]B15.根據(jù)B12至B14中任一項(xiàng)所述的裝置,其中,所述root模塊還被配置為通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行所述SO文件。
[0180]B16.根據(jù)B9至B15中任一項(xiàng)所述的裝置,其中,所述服務(wù)建立模塊,包括:
[0181]su文件運(yùn)行單元,配置為當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件;
[0182]服務(wù)建立單元,配置為通過(guò)所述su文件為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
【權(quán)利要求】
1.一種建立root權(quán)限的方法,用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),包括: 接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求; 獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限; 當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述獲取至少一個(gè)破解方案的代碼,包括: 檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼; 當(dāng)存在時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述獲取至少一個(gè)破解方案的代碼,包括: 獲取本機(jī)信息; 向服務(wù)器發(fā)送攜帶有所述本機(jī)信息的獲取解決方案的請(qǐng)求; 接收所述服務(wù)器發(fā)送的與所述本機(jī)信息對(duì)應(yīng)的至少一個(gè)解決方案的代碼; 其中,所述本機(jī)信息包括所述本機(jī)的型號(hào)和/或操作系統(tǒng)的內(nèi)核版本號(hào)。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述至少一個(gè)解決方案的代碼存儲(chǔ)于動(dòng)態(tài)鏈接庫(kù)SO文件中,且所述至少一個(gè)解決方案按照對(duì)所述本機(jī)相同的機(jī)型的獲取root成功率由聞到低進(jìn)行排列。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括: 按照所述解決方案的排列順序,依次運(yùn)行每一個(gè)解決方案中的代碼,直至成功獲取root權(quán)限。
6.根據(jù)權(quán)利要求5所述的方法,其中,在成功獲取root權(quán)限之后,所述方法還包括: 在本地緩存所述成功獲取root權(quán)限的解決方案的代碼,并為所述解決方案增加已成功獲取root權(quán)限的標(biāo)記。
7.根據(jù)權(quán)利要求4至6中任一項(xiàng)所述的方法,其中,所述運(yùn)行至少一個(gè)破解方案中的代碼,包括: 通過(guò)JAVA本地調(diào)用接口 JNI運(yùn)行所述SO文件。
8.根據(jù)權(quán)利要求1至7中任一項(xiàng)所述的方法,其中,所述當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,包括: 當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),運(yùn)行具有root權(quán)限的su文件,通過(guò)所述su文件為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程。
9.一種建立root權(quán)限的裝置,用于當(dāng)不具有root權(quán)限的指定程序欲執(zhí)行root權(quán)限下的操作時(shí),包括: 請(qǐng)求接收模塊,配置為接收所述指定程序發(fā)出的獲取root權(quán)限的請(qǐng)求; Root模塊,配置為獲取并運(yùn)行至少一個(gè)破解方案中的代碼,其中,所述破解方案用于通過(guò)操作系統(tǒng)的漏洞獲取所述操作系統(tǒng)的root權(quán)限; 服務(wù)建立模塊,配置為當(dāng)通過(guò)運(yùn)行所述破解方案的代碼成功獲取root權(quán)限時(shí),為所述指定程序建立具有root權(quán)限的后臺(tái)服務(wù)進(jìn)程,所述后臺(tái)服務(wù)進(jìn)程用于完成所述指定程序欲執(zhí)行的root權(quán)限下的操作。
10.根據(jù)權(quán)利要求9所述的裝置,其中,所述root模塊包括: 檢測(cè)單元,配置為檢測(cè)本地緩存中是否存在具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼; 本地10t單元,配置為當(dāng)存在具有已成功獲取10t權(quán)限的標(biāo)記的解決方案的代碼時(shí),獲取所述具有已成功獲取root權(quán)限的標(biāo)記的解決方案的代碼。
【文檔編號(hào)】G06F9/445GK104199711SQ201410514642
【公開日】2014年12月10日 申請(qǐng)日期:2014年9月29日 優(yōu)先權(quán)日:2014年9月29日
【發(fā)明者】劉云鵬, 王彥峰, 宋振濤, 呂品 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司