欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種獲取Root權(quán)限的方法及裝置制造方法

文檔序號:6621458閱讀:487來源:國知局
一種獲取Root權(quán)限的方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例公開了一種獲取Root權(quán)限的方法,包括:終端以SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動JNI模塊;所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除;所述終端通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Jar包;所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。本發(fā)明實(shí)施例還公開了一種獲取Root權(quán)限的裝置。采用本發(fā)明,具體可降低獲取Root權(quán)限的資源消耗,提高獲取Root權(quán)限的成功率,適用性高,增強(qiáng)獲取Root權(quán)限的用戶體驗(yàn)的優(yōu)點(diǎn)。
【專利說明】 —種獲取Root權(quán)限的方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子【技術(shù)領(lǐng)域】,尤其涉及一種獲取Root權(quán)限的方法及裝置。

【背景技術(shù)】
[0002]隨著手機(jī)等使用Android系統(tǒng)的設(shè)備的研發(fā)技術(shù)的日益發(fā)展成熟和手機(jī)的日益,手機(jī)應(yīng)用程序的種類也日益多樣。為了使得手機(jī)用戶獲得更好的用戶體驗(yàn),很多手機(jī)應(yīng)用程序需要向系統(tǒng)申請Root權(quán)限,在Root權(quán)限下實(shí)現(xiàn)更多的功能。當(dāng)前,部分手機(jī)等Android設(shè)備系統(tǒng)會提供Root權(quán)限,手機(jī)需要從系統(tǒng)中獲取Root權(quán)限,才能在Root權(quán)限下實(shí)現(xiàn)相應(yīng)的功能。
[0003]現(xiàn)有技術(shù)中,應(yīng)用程序獲取Root權(quán)限時,主要是先通過Java的應(yīng)用程序編程接P (Applicat1n Programming Interface, API)以切換用戶(Switch User, SU)用戶身份啟動自己常駐的進(jìn)程(也稱用戶進(jìn)程)服務(wù),并且每次都用服務(wù)進(jìn)程來執(zhí)行上述動作。具體的,應(yīng)用程序每次申請Root權(quán)限時,服務(wù)進(jìn)程將根據(jù)Android系統(tǒng)中的/system/bin/app_process指令通過Java API以SU用戶的身份啟動用戶進(jìn)程服務(wù)。現(xiàn)有技術(shù)中通過服務(wù)進(jìn)程來執(zhí)行獲取Root權(quán)限的操作,雖然可以獲取到Root權(quán)限,但是當(dāng)系統(tǒng)版本高于Android4.0,系統(tǒng)的安全監(jiān)測性更高之后,現(xiàn)有技術(shù)中所描述的方法則無法避開系統(tǒng)的安全監(jiān)測,應(yīng)用程序無法使用Java API通過app_process來啟動用戶進(jìn)程,進(jìn)而無法獲取Root權(quán)限。即現(xiàn)有技術(shù)中僅使用Java API通過app_process來啟動用戶進(jìn)程的方式適用性低、失敗率高;此外,現(xiàn)有技術(shù)中應(yīng)用程序每次申請Root權(quán)限都需要服務(wù)程序來執(zhí)行獲取Root權(quán)限的操作,增加了獲取Root權(quán)限的資源開銷。


【發(fā)明內(nèi)容】

[0004]本發(fā)明實(shí)施例提供一種獲取Root權(quán)限的方法及裝置??赏ㄟ^JNI模塊清除系統(tǒng)的安全環(huán)境變量,將本地進(jìn)程的用戶標(biāo)識設(shè)置為SU用戶的ID,進(jìn)而通過JNI模塊啟動子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過Jar包中的常駐服務(wù)進(jìn)程獲取Root權(quán)限,降低了獲取Root權(quán)限的資源消耗,提高了獲取Root權(quán)限的成功率,適用性高,增強(qiáng)了獲取Root權(quán)限的用戶體驗(yàn)。
[0005]本發(fā)明實(shí)施例第一方面提供了一種獲取Root權(quán)限的方法,其可包括:
[0006]終端以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊;
[0007]所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除;
[0008]所述終端通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包;
[0009]所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
[0010]其中,所述終端以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊,包括:
[0011]所述終端通過Java的應(yīng)用程序編程接口 API以所述SU用戶的身份開啟一個本地進(jìn)程;
[0012]所述終端在所述本地進(jìn)程中向所述本地進(jìn)程的標(biāo)準(zhǔn)輸入流寫入啟動所述JNI模塊可執(zhí)行文件的命令,啟動所述JNI模塊。
[0013]其中,所述本地進(jìn)程的用戶標(biāo)識包括:用戶標(biāo)識WD、有效用戶標(biāo)識EUID、全局唯一標(biāo)識符⑶ID、有效全局唯一標(biāo)識符E⑶ID。
[0014]其中,所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,包括:
[0015]所述終端通過所述JNI模塊將所述本地進(jìn)程中的WD、EUID,⑶ID,以及E⑶ID設(shè)置所述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限;
[0016]其中,所述SU用戶為超級用戶。
[0017]其中,所述安全環(huán)境變量為所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測的變量,若所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測到所述安全環(huán)境變量,將阻止所述終端獲取所述Root權(quán)限;
[0018]所述將系統(tǒng)的安全環(huán)境變量清除,包括:
[0019]所述終端通過所述JNI模塊,使用所述JNI模塊中的unsetenv指令將所述安全環(huán)境變量清空,以避開所述系統(tǒng)的安全監(jiān)測。
[0020]其中,所述在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包,包括:
[0021 ] 所述終端在所述子進(jìn)程中,根據(jù)所述JNI模塊中預(yù)置的啟動參數(shù)以所述SU用戶的操作權(quán)限加載所述Jar包。
[0022]其中,所述啟動參數(shù)為所述Jar包的加載路徑信息,所述Jar包的所述加載路徑信息對應(yīng)于所述SU用戶的ID ;
[0023]當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識是所述SU用戶的ID時,所述系統(tǒng)允許所述終端根據(jù)所述加載路徑信息加載所述Jar包;
[0024]當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識不是所述SU用戶的ID時,所述系統(tǒng)不允許所述終端加載所述Jar包。
[0025]其中,所述常駐服務(wù)進(jìn)程為所述終端的用戶用Java語言寫的可執(zhí)行程序,所述Jar包為所述常駐服務(wù)進(jìn)程編譯得到的文件包;
[0026]所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限,包括:
[0027]所述終端通過所述系統(tǒng)中的app_pix)CeSS啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取所述Root權(quán)限。
[0028]其中,所述終端為使用Android系統(tǒng)的手機(jī)、平板電腦中的一種。
[0029]其中,所述終端中包括需要所述Root權(quán)限實(shí)現(xiàn)指定功能的應(yīng)用程序;
[0030]所述應(yīng)用程序包括:設(shè)置、管理專家、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份中的至少一種。
[0031]本發(fā)明實(shí)施例第二方面提供了一種獲取Root權(quán)限的裝置,其可包括:
[0032]啟動模塊,用于以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊;
[0033]處理模塊,用于通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除;
[0034]加載模塊,用于通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包;
[0035]獲取模塊,用于啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
[0036]其中,所述啟動模塊,包括:
[0037]第一啟動單元,用于通過Java的應(yīng)用程序編程接口 API以所述SU用戶的身份開啟一個本地進(jìn)程;
[0038]第二啟動單元,用于在所述第一啟動單元啟動的所述本地進(jìn)程向所述本地進(jìn)程的標(biāo)準(zhǔn)輸入流寫入啟動所述JNI模塊可執(zhí)行文件的命令,啟動所述JNI模塊。
[0039]其中,所述本地進(jìn)程的用戶標(biāo)識包括:用戶標(biāo)識WD、有效用戶標(biāo)識EUID、全局唯一標(biāo)識符⑶ID、有效全局唯一標(biāo)識符E⑶ID。
[0040]其中,所述處理模塊,具體用于:
[0041]通過所述JNI模塊將所述本地進(jìn)程中的WD、EUID,⑶ID,以及E⑶ID設(shè)置所述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限;
[0042]其中,所述SU用戶為超級用戶。
[0043]其中,所述安全環(huán)境變量為所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測的變量,若所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測到所述安全環(huán)境變量,將阻止終端應(yīng)用程序獲取所述Root權(quán)限;
[0044]所述處理模塊,還具體用于:
[0045]通過所述JNI模塊,使用所述JNI模塊中的unsetenv指令將所述安全環(huán)境變量清空,以避開所述系統(tǒng)的安全監(jiān)測。
[0046]其中,所述加載模塊,具體用于:
[0047]通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中,根據(jù)所述JNI模塊中預(yù)置的啟動參數(shù)以所述SU用戶的操作權(quán)限加載所述Jar包。
[0048]其中,所述啟動參數(shù)為所述Jar包的加載路徑信息,所述Jar包的所述加載路徑信息對應(yīng)于所述SU用戶的ID ;
[0049]當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識是所述SU用戶的ID時,所述系統(tǒng)允許所述終端根據(jù)所述加載路徑信息加載所述Jar包;
[0050]當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識不是所述SU用戶的ID時,所述系統(tǒng)不允許所述終端加載所述Jar包。
[0051]其中,所述常駐服務(wù)進(jìn)程為所述終端的用戶用Java語言寫的可執(zhí)行程序,所述Jar包為所述常駐服務(wù)進(jìn)程編譯得到的文件包;
[0052]所述獲取模塊,具體用于:
[0053]通過所述系統(tǒng)中的app_pix)CeSS啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取所述Root權(quán)限。
[0054]其中,所述裝置為使用Android系統(tǒng)的手機(jī)、平板電腦中的一種。
[0055]其中,所述裝置中包括需要所述Root權(quán)限實(shí)現(xiàn)指定功能的應(yīng)用程序;
[0056]應(yīng)用程序包括:設(shè)置、管理專家、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份中的至少一種。
[0057]本發(fā)明實(shí)施例第三方面提供了一種終端,其可包括:上述本發(fā)明實(shí)施例第二方面提供的一種獲取Root權(quán)限的裝置中的任一項(xiàng)。
[0058]在實(shí)施本發(fā)明實(shí)施例中,終端可以以SU用戶的身份啟動本地進(jìn)程,在上述本地進(jìn)程中啟動JNI模塊,通過上述JNI模塊將當(dāng)前進(jìn)程的用戶設(shè)備設(shè)置為SU用戶的ID,獲取SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清空,進(jìn)而通過上述JNI模塊啟動子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限。即,本發(fā)明實(shí)施例以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限,無需每次獲取Root權(quán)限都開啟一個本地進(jìn)程去執(zhí)行獲取Root權(quán)限的指令,降低了獲取Root權(quán)限的資源消耗,也提高了獲取Root權(quán)限的成功率,適用性高,增強(qiáng)了獲取Root權(quán)限的用戶體驗(yàn)。

【專利附圖】

【附圖說明】
[0059]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1是本發(fā)明實(shí)施例提供的獲取Root權(quán)限的方法的實(shí)施例流程示意圖;
[0061]圖2是本發(fā)明實(shí)施例提供的獲取Root權(quán)限的裝置的實(shí)施例結(jié)構(gòu)示意圖;
[0062]圖3是本發(fā)明實(shí)施例提供的獲取Root權(quán)限的裝置的啟動模塊的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0063]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0064]具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例中所描述的終端即為本發(fā)明實(shí)施例中提供的獲取Root權(quán)限的裝置,在本發(fā)明實(shí)施例中,上述終端可包括:手機(jī)、平板電腦等可使用Android系統(tǒng)的設(shè)備。上述終端僅是舉例,而非窮舉,包含但不限于上述終端。下面將以手機(jī)為例,對本發(fā)明實(shí)施例中所描述的獲取Root權(quán)限的方法及裝置進(jìn)行具體描述。
[0065]參見圖1,是本發(fā)明實(shí)施例提供的獲取Root權(quán)限的方法的實(shí)施例流程示意圖。本實(shí)施例中所描述的獲取Root權(quán)限的方法,包括步驟:
[0066]S101,終端以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊。
[0067]在一些可行的實(shí)施方式中,本發(fā)明實(shí)施例中所描述的SU用戶為超級用戶。具體實(shí)現(xiàn)中,一些手機(jī)應(yīng)用程序可通過該應(yīng)用程序中的附加功能為手機(jī)用戶提供更好的用戶體驗(yàn),但是上述附加功能需要在獲得Root權(quán)限的環(huán)境下才能實(shí)現(xiàn),因此上述手機(jī)應(yīng)用程序可向系統(tǒng)申請獲取Root權(quán)限,以實(shí)現(xiàn)上述附加功能。具體的,上述手機(jī)的應(yīng)用程序可包括:設(shè)置、管理專家(例如手機(jī)管家)、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份等,其中,上述應(yīng)用程序僅是舉例,而非窮舉,包含但不限于上述應(yīng)用程序。例如,手機(jī)的應(yīng)用安裝可實(shí)現(xiàn)靜態(tài)安裝Android應(yīng)用程序的功能,并且上述應(yīng)用安裝實(shí)現(xiàn)靜態(tài)安裝Android應(yīng)用程序的功能需要在Root權(quán)限的環(huán)境下,因此上述手機(jī)應(yīng)用安裝可向手機(jī)系統(tǒng)申請獲取Root權(quán)限。具體的,在本發(fā)明實(shí)施例中,本發(fā)明實(shí)施例將以手機(jī)等設(shè)備作為執(zhí)行主體,對上述手機(jī)的應(yīng)用安裝等應(yīng)用程序向系統(tǒng)申請獲取Root權(quán)限的具體實(shí)現(xiàn)過程進(jìn)行說明。
[0068]在一些可行的實(shí)施方式中,手機(jī)向系統(tǒng)申請獲取Root權(quán)限時,可先以SU用戶的身份開啟一個本地進(jìn)程(即native process),在上述本地進(jìn)程中啟動Java本地調(diào)用(JavaNative Interface, JNI)模塊。具體的,手機(jī)可通過Java的API,以SU用戶的身份開啟一個本地進(jìn)程。手機(jī)在上述本地進(jìn)程中向本地進(jìn)程的標(biāo)識輸入流寫入啟動JNI模塊的可執(zhí)行文件的命令,JNI模塊獲取到上述啟動命令之后,則可開始運(yùn)行,即,手機(jī)可通過在本地進(jìn)程中寫入啟動JNI的可執(zhí)行文件的命令啟動JNI模塊。
[0069]S102,所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除。
[0070]在一些可行的實(shí)施方式中,手機(jī)啟動上述JNI模塊之后,則可通過上述JNI模塊中特有的一些API來實(shí)現(xiàn)獲取Root權(quán)限的功能。具體實(shí)現(xiàn)中,手機(jī)啟動上述JNI模塊之后,則可通過上述JNI模塊將當(dāng)前進(jìn)程(即本地進(jìn)程)的用戶標(biāo)識設(shè)置為上述SU用戶的ID,以獲取更高的操作權(quán)限,即JNI模塊將上述用戶標(biāo)識設(shè)置為SU用戶的ID之后,則可獲取與上述SU用戶的操作權(quán)限相同的操作權(quán)限。系統(tǒng)接收到手機(jī)發(fā)起的獲取Root權(quán)限的申請時,若判斷得到上述用戶標(biāo)識為SU用戶的ID,則可判斷得到上述發(fā)起申請的用戶具有SU用戶的操作權(quán)限,進(jìn)而將上述申請當(dāng)成SU用戶發(fā)起的申請。其中,上述當(dāng)前進(jìn)程的用戶標(biāo)識可包括:用戶標(biāo)識(User Identity, UID)、有效用戶標(biāo)識(Effective User Identity, EUID)、全局唯一標(biāo)識符(Globally Unique Identifier, GUID)、有效全局唯一標(biāo)識符(EffectiveGlobally Unique Identifier,E⑶ID)等。S卩,手機(jī)可將上述 UID、EUID、⑶ID 和 E⑶ID 等用戶標(biāo)識設(shè)置為上述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限。手機(jī)將上述各個用戶標(biāo)識設(shè)置為SU用戶的ID之后,當(dāng)手機(jī)檢測到上述WD、EUID,⑶ID和E⑶ID等用戶標(biāo)識為上述SU用戶的ID后,則可授予上述用戶標(biāo)識對應(yīng)的用戶與上述SU用戶相同的操作權(quán)限,進(jìn)而可發(fā)送給具有上述操作權(quán)限的用戶的數(shù)據(jù)發(fā)送給上述用戶。
[0071]在一些可行的實(shí)施方式中,手機(jī)通過上述JNI模塊將用戶標(biāo)識設(shè)置為SU用戶的ID之后,還可通過JNI模塊將系統(tǒng)的安全環(huán)境變量清除。上述安全環(huán)境變量為系統(tǒng)進(jìn)行安全監(jiān)測時所監(jiān)測的變量,例如LD_PREL0AD等,系統(tǒng)進(jìn)行安全監(jiān)測時若監(jiān)測到上述安全環(huán)境變量,則將阻止手機(jī)等設(shè)備獲取Root權(quán)限。本發(fā)明實(shí)施例為了避開系統(tǒng)的安全監(jiān)測,以順利獲取到Root權(quán)限,手機(jī)可通過JNI模塊,使用上述JNI模塊中的unsetenv指令將系統(tǒng)的安全環(huán)境變量清除,進(jìn)而可避免系統(tǒng)的安全監(jiān)測。
[0072]S103,所述終端通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包。
[0073]S104,所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
[0074]在一些可行的實(shí)施方式中,手機(jī)通過JNI模塊將本地進(jìn)程的用戶標(biāo)識設(shè)置為SU用戶的ID并將系統(tǒng)的安全環(huán)境變量清空之后,則可通過JNI模塊啟動一個子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包。具體的,手機(jī)可在上述子進(jìn)程中,根據(jù)JNI模塊中預(yù)置的啟動參數(shù)以SU用戶的操作權(quán)限加載Jar包,其中,啟動參數(shù)為上述Jar包的加載路徑信息,上述Jar包的加載路徑信息對應(yīng)于上述SU用戶的ID,即只有上述SU用戶的ID對應(yīng)的用戶才有權(quán)限加載上述Jar包。當(dāng)系統(tǒng)監(jiān)測到加載Jar包的手機(jī)的用戶標(biāo)識不是SU用戶的ID時,則允許上述手機(jī)根據(jù)上述加載路徑信息加載上述Jar包,否則,則不允許手機(jī)加載上述Jar包。具體的,JNI模塊可在上述子進(jìn)程中調(diào)用相應(yīng)的函數(shù)獲取上述啟動參數(shù),例如,JNI模塊可通過調(diào)用realexecveO函數(shù)來調(diào)用啟動參數(shù),進(jìn)而通過上述加載路徑信息加載上述Jar包。
[0075]在一些可行的實(shí)施方式中,手機(jī)獲取到上述Jar包之后,則可通過系統(tǒng)中的app_process啟動上述Jar包中的常駐服務(wù)進(jìn)程上述常駐服務(wù)進(jìn)程啟動之后,則可通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限,獲取到上述Root權(quán)限之后,手機(jī)應(yīng)用程序則可在Root權(quán)限的環(huán)境下實(shí)現(xiàn)更多的功能。其中,上述常駐服務(wù)進(jìn)程為手機(jī)用戶用Java語言寫的可執(zhí)行程序,上述Jar包即為上述常駐服務(wù)進(jìn)程編譯得到的文件包。
[0076]在本發(fā)明實(shí)施例中,手機(jī)可以以SU用戶的身份啟動本地進(jìn)程,在上述本地進(jìn)程中啟動JNI模塊,通過上述JNI模塊將本地進(jìn)程的用戶設(shè)備設(shè)置為SU用戶的ID,獲取SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清空,進(jìn)而通過上述JNI模塊啟動子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限。即,本發(fā)明實(shí)施例以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限,無需每次獲取Root權(quán)限都開啟一個本地進(jìn)程去執(zhí)行獲取Root權(quán)限的指令,降低了獲取Root權(quán)限的資源消耗,也提高了獲取Root權(quán)限的成功率,適用性高,增強(qiáng)了獲取Root權(quán)限的用戶體驗(yàn)。
[0077]參見圖2,是本發(fā)明實(shí)施例提供的獲取Root權(quán)限的裝置的實(shí)施例結(jié)構(gòu)示意圖。本實(shí)施例中所描述的裝置,包括:
[0078]啟動模塊10,用于以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊。
[0079]處理模塊20,用于通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除。
[0080]加載模塊30,用于通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包。
[0081]獲取模塊40,用于啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
[0082]在一些可行的實(shí)施方式中,上述啟動模塊10,包括:
[0083]第一啟動單元11,用于通過Java的應(yīng)用程序編程接口 API以所述SU用戶的身份開啟一個本地進(jìn)程。
[0084]第二啟動單元12,用于在所述第一啟動單元啟動的所述本地進(jìn)程向所述本地進(jìn)程的標(biāo)準(zhǔn)輸入流寫入啟動所述JNI模塊可執(zhí)行文件的命令,啟動所述JNI模塊。
[0085]在一些可行的實(shí)施方式中,上述處理模塊20,具體用于:
[0086]通過所述JNI模塊將所述本地進(jìn)程中的WD、EUID,⑶ID,以及E⑶ID設(shè)置所述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限。
[0087]在一些可行的實(shí)施方式中,所述安全環(huán)境變量為所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測的變量,若所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測到所述安全環(huán)境變量,將阻止終端應(yīng)用程序獲取所述Root權(quán)限;
[0088]上述處理模塊20,還具體用于:
[0089]通過所述JNI模塊,使用所述JNI模塊中的unsetenv指令將所述安全環(huán)境變量清空,以避開所述系統(tǒng)的安全監(jiān)測。
[0090]在一些可行的實(shí)施方式中,上述加載模塊30,具體用于:
[0091]通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中,根據(jù)所述JNI模塊中預(yù)置的啟動參數(shù)以所述SU用戶的操作權(quán)限加載所述Jar包。
[0092]在一些可行的實(shí)施方式中,上述獲取模塊40,具體用于:
[0093]通過所述系統(tǒng)中的app_pix)CeSS啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取所述Root權(quán)限。
[0094]在一些可行的實(shí)施方式中,本發(fā)明實(shí)施例中所描述的SU用戶為超級用戶。具體實(shí)現(xiàn)中,一些手機(jī)應(yīng)用程序可通過該應(yīng)用程序中的附加功能為手機(jī)用戶提供更好的用戶體驗(yàn),但是上述附加功能需要在獲得Root權(quán)限的環(huán)境下才能實(shí)現(xiàn),因此上述手機(jī)應(yīng)用程序可向系統(tǒng)申請獲取Root權(quán)限,以實(shí)現(xiàn)上述附加功能。具體的,上述手機(jī)的應(yīng)用程序可包括:設(shè)置、管理專家(例如手機(jī)管家)、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份等,其中,上述應(yīng)用程序僅是舉例,而非窮舉,包含但不限于上述應(yīng)用程序。例如,手機(jī)的應(yīng)用安裝可實(shí)現(xiàn)靜態(tài)安裝Android應(yīng)用程序的功能,并且上述應(yīng)用安裝實(shí)現(xiàn)靜態(tài)安裝Android應(yīng)用程序的功能需要在Root權(quán)限的環(huán)境下,因此上述手機(jī)應(yīng)用安裝可向手機(jī)系統(tǒng)申請獲取Root權(quán)限。具體的,在本發(fā)明實(shí)施例中,本發(fā)明實(shí)施例將以手機(jī)等設(shè)備作為執(zhí)行主體,對上述手機(jī)的應(yīng)用安裝等應(yīng)用程序向系統(tǒng)申請獲取Root權(quán)限的具體實(shí)現(xiàn)過程進(jìn)行說明。
[0095]在一些可行的實(shí)施方式中,手機(jī)向系統(tǒng)申請獲取Root權(quán)限時,啟動模塊10可先以SU用戶的身份開啟一個本地進(jìn)程(即native process),在上述本地進(jìn)程中啟動Java本地調(diào)用(Java Native Interface, JNI)模塊。具體的,啟動模塊10可通過JNI模塊中的JavaAPI,以SU用戶的身份開啟一個本地進(jìn)程。啟動模塊10可在上述本地進(jìn)程中向本地進(jìn)程的標(biāo)識輸入流寫入啟動JNI模塊的可執(zhí)行文件的命令,JNI模塊獲取到上述啟動命令之后,則可開始運(yùn)行,即,啟動模塊10可通過在本地進(jìn)程中寫入啟動JNI的可執(zhí)行文件的命令啟動JNI模塊。具體實(shí)現(xiàn)中,上述啟動模塊以SU用戶的身份開啟本地進(jìn)程并在上述本地進(jìn)程中啟動JNI模塊的具體實(shí)現(xiàn)過程可參見本發(fā)明實(shí)施例提供的獲取Root權(quán)限的方法的實(shí)施例中的步驟S101,在此不再贅述。
[0096]在一些可行的實(shí)施方式中,手機(jī)通過啟動模塊10啟動上述JNI模塊之后,則可通過上述JNI模塊中特有的一些API來實(shí)現(xiàn)獲取Root權(quán)限的功能。具體實(shí)現(xiàn)中,啟動模塊10啟動上述JNI模塊之后,處理模塊20則可通過上述JNI模塊將當(dāng)前進(jìn)程(即本地進(jìn)程)的用戶標(biāo)識設(shè)置為上述SU用戶的ID,以獲取更高的操作權(quán)限,即處理模塊20通過JNI模塊將上述用戶標(biāo)識設(shè)置為SU用戶的ID之后,則可獲取與上述SU用戶的操作權(quán)限相同的操作權(quán)限。系統(tǒng)接收到手機(jī)發(fā)起的獲取Root權(quán)限的申請時,若判斷得到上述用戶標(biāo)識為SU用戶的ID,則可判斷得到上述發(fā)起申請的用戶具有SU用戶的操作權(quán)限,進(jìn)而將上述申請當(dāng)成SU用戶發(fā)起的申請。其中,上述當(dāng)前進(jìn)程的用戶標(biāo)識可包括:用戶標(biāo)識(User Identity, UID)、有效用戶標(biāo)識(Effective User Identity, EUID)、全局唯一標(biāo)識符(Globally UniqueIdentifier,GUID)、有效全局唯一標(biāo)識符(Effective Globally Unique Identifier,EGUID)等。即,處理模塊20可將上述WD、EUID,⑶ID和E⑶ID等用戶標(biāo)識設(shè)置為上述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限。處理模塊20將上述各個用戶標(biāo)識設(shè)置為SU用戶的ID之后,當(dāng)手機(jī)檢測到上述nD、EUID、⑶ID和E⑶ID等用戶標(biāo)識為上述SU用戶的ID后,則可授予上述用戶標(biāo)識對應(yīng)的用戶與上述SU用戶相同的操作權(quán)限,進(jìn)而可發(fā)送給具有上述操作權(quán)限的用戶的數(shù)據(jù)發(fā)送給上述用戶。
[0097]在一些可行的實(shí)施方式中,處理模塊20通過上述JNI模塊將用戶標(biāo)識設(shè)置為SU用戶的ID之后,還可通過JNI模塊將系統(tǒng)的安全環(huán)境變量清除。上述安全環(huán)境變量為系統(tǒng)進(jìn)行安全監(jiān)測時所監(jiān)測的變量,例如LD_PREL0AD等,系統(tǒng)進(jìn)行安全監(jiān)測時若監(jiān)測到上述安全環(huán)境變量,則將阻止手機(jī)等設(shè)備獲取Root權(quán)限。本發(fā)明實(shí)施例為了避開系統(tǒng)的安全監(jiān)測,以順利獲取到Root權(quán)限,手機(jī)可通過JNI模塊,使用上述JNI模塊中的unsetenv指令將系統(tǒng)的安全環(huán)境變量清除,進(jìn)而可避免系統(tǒng)的安全監(jiān)測。具體實(shí)現(xiàn)中,上述處理模塊將本地流程的用戶標(biāo)識設(shè)置為SU用戶的ID并將系統(tǒng)的安全環(huán)境變量清除的具體實(shí)現(xiàn)過程可參見本發(fā)明實(shí)施例提供的獲取Root權(quán)限的方法的實(shí)施例中的步驟S102,在此不再贅述。
[0098]在一些可行的實(shí)施方式中,處理模塊20通過JNI模塊將本地進(jìn)程的用戶標(biāo)識設(shè)置為SU用戶的ID并將系統(tǒng)的安全環(huán)境變量清空之后,加載模塊30則可通過JNI模塊啟動一個子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包。具體的,加載模塊30可在上述子進(jìn)程中,根據(jù)JNI模塊中預(yù)置的啟動參數(shù)以SU用戶的操作權(quán)限加載Jar包,其中,啟動參數(shù)為上述Jar包的加載路徑信息,上述Jar包的加載路徑信息對應(yīng)于上述SU用戶的ID,即只有上述SU用戶的ID對應(yīng)的用戶才有權(quán)限加載上述Jar包。當(dāng)系統(tǒng)監(jiān)測到加載Jar包的手機(jī)的用戶標(biāo)識不是SU用戶的ID時,允許上述手機(jī)根據(jù)上述加載路徑信息加載上述Jar包,否則,不允許手機(jī)加載上述Jar包。具體的,加載模塊30可通過JNI模塊在上述子進(jìn)程中調(diào)用相應(yīng)的函數(shù)獲取上述啟動參數(shù),例如,JNI模塊可通過調(diào)用realexecveO函數(shù)來調(diào)用啟動參數(shù),進(jìn)而通過上述加載路徑信息加載上述Jar包。
[0099]在一些可行的實(shí)施方式中,加載模塊30獲取到上述Jar包之后,獲取模塊40則可通過系統(tǒng)中的app_pix)cess啟動上述Jar包中的常駐服務(wù)進(jìn)程。獲取模塊40啟動上述常駐服務(wù)進(jìn)程之后,則可通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限。獲取模塊40獲取到上述Root權(quán)限之后,手機(jī)應(yīng)用程序則可在Root權(quán)限的環(huán)境下實(shí)現(xiàn)更多的功能。其中,上述常駐服務(wù)進(jìn)程為手機(jī)用戶用Java語言寫的可執(zhí)行程序,上述Jar包即為上述常駐服務(wù)進(jìn)程編譯得到的文件包。具體實(shí)現(xiàn)中,上述加載模塊加載Jar包,以及獲取模塊根據(jù)加載模塊加載的Jar獲取Root權(quán)限的具體實(shí)現(xiàn)過程可參見本發(fā)明實(shí)施例提供的獲取Root權(quán)限的方法的實(shí)施例中的步驟S103-S104,在此不再贅述。
[0100]在本發(fā)明實(shí)施例中,手機(jī)可以以SU用戶的身份啟動本地進(jìn)程,在上述本地進(jìn)程中啟動JNI模塊,通過上述JNI模塊將本地進(jìn)程的用戶設(shè)備設(shè)置為SU用戶的ID,獲取SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清空,進(jìn)而通過上述JNI模塊啟動子進(jìn)程,在上述子進(jìn)程中以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限。即,本發(fā)明實(shí)施例以SU用戶的操作權(quán)限加載Jar包中的常駐服務(wù)進(jìn)程,通過上述常駐服務(wù)進(jìn)程獲取Root權(quán)限,無需每次獲取Root權(quán)限都開啟一個本地進(jìn)程去執(zhí)行獲取Root權(quán)限的指令,降低了獲取Root權(quán)限的資源消耗,也提高了獲取Root權(quán)限的成功率,適用性高,增強(qiáng)了獲取Root權(quán)限的用戶體驗(yàn)。
[0101]在本說明書的描述中,參考術(shù)語“一個實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個或多個實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
[0102]此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個該特征。在本發(fā)明的描述中,“多個”的含義是至少兩個,例如兩個,三個等,除非另有明確具體的限定。
[0103]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0104]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲器(RAM),只讀存儲器(R0M),可擦除可編輯只讀存儲器(EPR0M或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(⑶ROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲在計(jì)算機(jī)存儲器中。
[0105]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
[0106]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實(shí)施例的步驟之一或其組合。
[0107]此外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,也可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中。
[0108]上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。
[0109]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機(jī)存儲記憶體(Random AccessMemory, RAM)等。
[0110]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種獲取Root權(quán)限的方法,其特征在于,包括: 終端以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊; 所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除; 所述終端通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包; 所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
2.如權(quán)利要求1所述的方法,其特征在于,所述終端以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊,包括: 所述終端通過Java的應(yīng)用程序編程接口 API以所述SU用戶的身份開啟一個本地進(jìn)程; 所述終端在所述本地進(jìn)程中向所述本地進(jìn)程的標(biāo)準(zhǔn)輸入流寫入啟動所述JNI模塊可執(zhí)行文件的命令,啟動所述JNI模塊。
3.如權(quán)利要求2所述的方法,其特征在于,所述本地進(jìn)程的用戶標(biāo)識包括:用戶標(biāo)識WD、有效用戶標(biāo)識EHD、全局唯一標(biāo)識符⑶ID、有效全局唯一標(biāo)識符E⑶ID。
4.如權(quán)利要求3所述的方法,其特征在于,所述終端通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,包括: 所述終端通過所述JNI模塊將所述本地進(jìn)程中的WD、EUID,⑶ID,以及E⑶ID設(shè)置所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限; 其中,所述SU用戶為超級用戶。
5.如權(quán)利要求4所述的方法,其特征在于,所述安全環(huán)境變量為所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測的變量,若所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測到所述安全環(huán)境變量,將阻止所述終端獲取所述Root權(quán)限; 所述將系統(tǒng)的安全環(huán)境變量清除,包括: 所述終端通過所述JNI模塊,使用所述JNI模塊中的unsetenv指令將所述安全環(huán)境變量清空,以避開所述系統(tǒng)的安全監(jiān)測。
6.如權(quán)利要求5所述的方法,其特征在于,所述在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包,包括: 所述終端在所述子進(jìn)程中,根據(jù)所述JNI模塊中預(yù)置的啟動參數(shù)以所述SU用戶的操作權(quán)限加載所述Jar包。
7.如權(quán)利要求6所述的方法,其特征在于,所述啟動參數(shù)為所述Jar包的加載路徑信息,所述Jar包的所述加載路徑信息對應(yīng)于所述SU用戶的ID ; 當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識是所述SU用戶的ID時,所述系統(tǒng)允許所述終端根據(jù)所述加載路徑信息加載所述Jar包; 當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識不是所述SU用戶的ID時,所述系統(tǒng)不允許所述終端加載所述Jar包。
8.如權(quán)利要求7所述的方法,其特征在于,所述常駐服務(wù)進(jìn)程為所述終端的用戶用Java語言寫的可執(zhí)行程序,所述Jar包為所述常駐服務(wù)進(jìn)程編譯得到的文件包;所述終端啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限,包括: 所述終端通過所述系統(tǒng)中的app_pix)CeSS啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取所述Root權(quán)限。
9.如權(quán)利要求1-8任意一項(xiàng)所述的方法,其特征在于,所述終端為使用Android系統(tǒng)的手機(jī)、平板電腦中的一種。
10.如權(quán)利要求9所述的方法,其特征在于,所述終端中包括需要所述Root權(quán)限實(shí)現(xiàn)指定功能的應(yīng)用程序; 所述應(yīng)用程序包括:設(shè)置、管理專家、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份中的至少一種。
11.一種獲取Root權(quán)限的裝置,其特征在于,包括: 啟動模塊,用于以切換用戶SU用戶的身份開啟本地進(jìn)程,在所述本地進(jìn)程中啟動Java本地調(diào)用JNI模塊; 處理模塊,用于通過所述JNI模塊將所述本地進(jìn)程的用戶標(biāo)識設(shè)置為所述SU用戶的ID,獲取所述SU用戶的操作權(quán)限,并將系統(tǒng)的安全環(huán)境變量清除; 加載模塊,用于通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中以所述SU用戶的操作權(quán)限加載Java歸檔文件Jar包; 獲取模塊,用于啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取Root權(quán)限。
12.如權(quán)利要求11所述的裝置,其特征在于,所述啟動模塊,包括: 第一啟動單元,用于通過Java的應(yīng)用程序編程接口 API以所述SU用戶的身份開啟一個本地進(jìn)程; 第二啟動單元,用于在所述第一啟動單元啟動的所述本地進(jìn)程向所述本地進(jìn)程的標(biāo)準(zhǔn)輸入流寫入啟動所述JNI模塊可執(zhí)行文件的命令,啟動所述JNI模塊。
13.如權(quán)利要求12所述的裝置,其特征在于,所述本地進(jìn)程的用戶標(biāo)識包括:用戶標(biāo)識WD、有效用戶標(biāo)識EHD、全局唯一標(biāo)識符⑶ID、有效全局唯一標(biāo)識符E⑶ID。
14.如權(quán)利要求13所述的裝置,其特征在于,所述處理模塊,具體用于: 通過所述JNI模塊將所述本地進(jìn)程中的UID、EHD、⑶ID,以及E⑶ID設(shè)置所述SU用戶的ID,以獲取所述SU用戶的操作權(quán)限; 其中,所述SU用戶為超級用戶。
15.如權(quán)利要求14所述的裝置,其特征在于,所述安全環(huán)境變量為所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測的變量,若所述系統(tǒng)進(jìn)行安全監(jiān)測時監(jiān)測到所述安全環(huán)境變量,將阻止終端應(yīng)用程序獲取所述Root權(quán)限; 所述處理模塊,還具體用于: 通過所述JNI模塊,使用所述JNI模塊中的unsetenv指令將所述安全環(huán)境變量清空,以避開所述系統(tǒng)的安全監(jiān)測。
16.如權(quán)利要求15所述的裝置,其特征在于,所述加載模塊,具體用于: 通過所述JNI模塊啟動子進(jìn)程,在所述子進(jìn)程中,根據(jù)所述JNI模塊中預(yù)置的啟動參數(shù)以所述SU用戶的操作權(quán)限加載所述Jar包。
17.如權(quán)利要求16所述的裝置,其特征在于,所述啟動參數(shù)為所述Jar包的加載路徑信息,所述Jar包的所述加載路徑信息對應(yīng)于所述SU用戶的ID ; 當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識是所述SU用戶的ID時,所述系統(tǒng)允許所述終端根據(jù)所述加載路徑信息加載所述Jar包; 當(dāng)加載所述Jar包的所述終端的用戶標(biāo)識不是所述SU用戶的ID時,所述系統(tǒng)不允許所述終端加載所述Jar包。
18.如權(quán)利要求17所述的裝置,其特征在于,所述常駐服務(wù)進(jìn)程為所述終端的用戶用Java語言寫的可執(zhí)行程序,所述Jar包為所述常駐服務(wù)進(jìn)程編譯得到的文件包; 所述獲取模塊,具體用于: 通過所述系統(tǒng)中的app_pix)CeSS啟動所述Jar包的常駐服務(wù)進(jìn)程,通過所述常駐服務(wù)進(jìn)程獲取所述Root權(quán)限。
19.如權(quán)利要求11-18任意一項(xiàng)所述的裝置,其特征在于,所述裝置為使用Android系統(tǒng)的手機(jī)、平板電腦中的一種。
20.如權(quán)利要求19所述的方法,其特征在于,所述裝置中包括需要所述Root權(quán)限實(shí)現(xiàn)指定功能的應(yīng)用程序; 應(yīng)用程序包括:設(shè)置、管理專家、應(yīng)用寶、應(yīng)用安裝、數(shù)據(jù)備份中的至少一種。
21.—種終端,其特征在于,所述終端包括:如權(quán)利要求11-20中任意一項(xiàng)所述的裝置。
【文檔編號】G06F21/51GK104134036SQ201410361668
【公開日】2014年11月5日 申請日期:2014年7月26日 優(yōu)先權(quán)日:2014年7月26日
【發(fā)明者】黃倫華, 劉桂峰, 姚輝 申請人:珠海市君天電子科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
九江县| 潢川县| 卢氏县| 抚顺市| 聊城市| 黄陵县| 阳江市| 宁远县| 陈巴尔虎旗| 江北区| 溧阳市| 常德市| 兴义市| 浦北县| 襄垣县| 吴江市| 宁晋县| 蒲江县| 吉首市| 体育| 罗甸县| 化州市| 方山县| 尼勒克县| 石嘴山市| 聂拉木县| 五河县| 明溪县| 汨罗市| 永定县| 利津县| 吉安市| 宜都市| 启东市| 靖州| 都安| 政和县| 大冶市| 桓仁| 鸡西市| 随州市|