應用程序權限動態控制方法和系統的制作方法
【專利摘要】本發明公開了一種應用程序權限動態控制方法和系統,所述方法包括:服務管理(SM)進程接收到應用程序的服務請求時調用被注入的共享庫中的新ioctl函數;新ioctl函數獲取請求服務的進程id號和服務組件名稱向應用程序權限動態控制系統發送;所述系統若確定接收的服務組件名稱存在于對應該進程id號的權限申請信息列表中,則向新ioctl函數返回匹配成功信息;否則提示用戶進行配置;所述系統若接收到用戶的啟用指令,則將接收的服務組件名稱添加到對應該進程id號的權限申請信息列表中,向新ioctl函數返回匹配成功信息,SM進程響應服務請求;否則返回匹配失敗信息,SM進程拒絕服務請求;從而具有更高的靈活性和通用性。
【專利說明】應用程序權限動態控制方法和系統
【技術領域】
[0001]本發明涉及移動終端技術,尤其涉及一種應用程序權限動態控制方法和系統。
【背景技術】
[0002]Android是基于Linux平臺的開源操作系統,可使用于如智能手機、平板電腦、電視、數碼相機、游戲機等的移動終端中,受到移動終端設備廠商和用戶的廣泛關注。
[0003]目前,基于Android操作系統的應用程序層出不窮。然而,由于Android操作系統的開放性特點,開發人員可以全面了解操作系統內部的機制與實現,使得操作系統的安全漏洞易被發現和利用。例如,一些應用程序的APK (Android Package, Android安裝包)中被嵌入了惡意行為,如竊取個人隱私數據、消耗用戶資費、占用網絡流量、遠程控制終端信息等;這些應用程序在安裝的過程中可以獲得額外的系統訪問權限,對系統資源進行越權使用。而且,這些應用程序的惡意行為往往在后臺運行,用戶難以發現。
[0004]為了管理應用程序對系統資源的使用行為,實現應用程序權限的控制,Android操作系統提供了一套基本的授權模式:在應用程序的安裝過程中,安裝器會彈出詢問窗體詢問用戶是否同意應用程序所有的權限申請;用戶選擇同意,便會授權應用程序所有的權限申請,用戶選擇拒絕,便會中止應用程序的安裝。這樣,安裝的應用程序在運行過程中,Andriod操作系統可以根據應用程序安裝時所授予的權限,控制應用程序對系統服務、數據等各項資源的訪問和使用行為。但是,應用程序安裝完成后,授予的各項權限不可更改;之后用戶無法再根據自己的需求授予應用程序所申請的權限,使得該方法不夠靈活。
[0005]為實現對應用程序的訪問權限進行控制,現有的另一種方法是:在Android操作系統源碼中查找到定位系統關鍵部件、關鍵資源的API (Application ProgrammingInterface,應用程序編程接口),通過API來管理應用程序對系統資源的訪問行為,從而實現對應用程序權限的主動控制和管理。然而,該方法存在需要對Android操作系統進行重新編譯和定制,以“刷機”方式重置移動終端的軟件系統,且對Android應用程序配置文件中的系統權限申請列表和Android操作系統的API版本依賴性較明顯等弊端,使得該方法的適用性和易用性較差,從而導致該方法在控制應用程序權限時也不夠靈活。
[0006]因此,有必要提供一種靈活性、通用性更高的應用程序權限控制方法。
【發明內容】
[0007]本發明實施例提供了一種應用程序權限動態控制方法和系統,用以提高應用程序權限控制的靈活性、通用性。
[0008]根據本發明的一個方面,提供了一種應用程序權限動態控制方法,包括:
[0009]服務管理ServiceManager進程接收到應用程序發送的服務請求時,調用新共享庫中的接口控制ioctl函數;所述ioctl函數對所述服務請求進行解析,獲取其中的進程id號和服務組件名稱后通過所述ServiceManager進程與應用程序權限動態控制系統之間的通信鏈路向所述應用程序權限動態控制系統發送;[0010]所述應用程序權限動態控制系統根據接收的進程id號,在權限列表數據庫中查找對應該進程id號的權限申請信息,并確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則向所述ioctl函數返回匹配成功信息;若否,則顯示提示框提示用戶是否運行本次服務請求;
[0011]所述應用程序權限動態控制系統若通過所述提示框接收到用戶輸入的許可指令,則將接收的服務組件名稱添加到所述權限列表數據庫中對應所述進程id號的權限申請信息中后,向所述ioctl函數返回匹配成功信息;否則向所述ioctl函數返回匹配失敗信息;
[0012]所述ioctl函數若接收到匹配成功信息,則響應所述服務請求;若接收到匹配失敗信息,則拒絕所述服務請求。
[0013]其中,所述新共享庫是預先加載的,以及所述通信鏈路是預先建立的:
[0014]應用程序權限動態控制系統運行后將所述ServiceManager進程掛起,并備份所述ServiceManager進程的寄存器值和進程上下文;并將編譯后的新共享庫加載到所述ServiceManager進程的地址空間后,執行所述新共享庫中的入口函數,建立所述ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路;
[0015]之后,所述應用程序權限動態控制系統根據備份的寄存器值和進程上下文恢復所述ServiceManager進程的執行現場。
[0016]較佳地,所述權限列表數據庫中的權限申請信息是預先提取并保存的:
[0017]所述應用程序權限動態控制系統運行后對于每個安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息并保存到所述權限列表數據庫中。
[0018]較佳地,所述應用程序權限動態控制系統安裝于具有Android操作系統的移動終端中。
[0019]較佳地,所述Manifest文件具體為XML格式的AndroidManifest.xml文件。
[0020]根據本發明的另一個方面,還提供了一種應用程序權限動態控制系統,包括:
[0021]權限匹配模塊,用于在接收到ioctl函數通過所述應用程序權限動態控制系統與ServiceManager進程之間的通信鏈路發送的進程id號和服務組件名稱后,根據接收的進程id號,在權限列表數據庫中查找對應該進程id號的權限申請信息,并確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則向所述ioctl函數返回匹配成功信息;若否,則發送權限配置通知;其中,所述ioctl函數是所述ServiceManager進程接收到應用程序發送的服務請求時從新共享庫中調用的;
[0022]權限配置模塊,用于接收到所述權限配置通知后,顯示提示框提示用戶是否啟用本次服務請求;若通過所述提示框接收到用戶輸入的啟用指令,則將接收的服務組件名稱添加到所述權限列表數據庫中對應所述進程id號的權限申請信息后,向所述ioctl函數返回匹配成功信息;否則向所述ioctl函數返回匹配失敗信息;所述ioctl函數若接收到匹配成功信息,則響應所述服務請求;若接收到匹配失敗信息,則拒絕所述服務請求。
[0023]進一步,所述應用程序權限動態控制系統,還包括:
[0024]注入模塊,用于在所述應用程序權限動態控制系統運行后,將所述ServiceManager進程掛起并處于受控狀態,同時備份所述ServiceManager進程的寄存器值和進程上下文;并將編譯后的新共享庫加載到所述ServiceManager進程的地址空間中,執行所述新共享庫的入口函數,建立所述ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路;之后,根據備份的寄存器值和進程上下文恢復所述ServiceManager 進程。
[0025]進一步,所述應用程序權限動態控制系統,還包括:
[0026]權限信息保存模塊,用于在所述應用程序權限動態控制系統運行后對于每個安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息后保存到所述權限列表數據庫中。
[0027]較佳地,所述應用程序權限動態控制系統安裝于具有Android操作系統的移動終端中。
[0028]較佳地,所述Manifest文件具體為XML格式的AndroidManifest.xml文件。
[0029]本發明實施例的技術方案中,服務管理ServiceManager進程接收到應用程序的服務請求時,調用新共享庫中的ioctl函數,新共享庫中ioctl函數獲取應用程序的服務請求,并解析出獲取的服務器請求中的進程id和應用程序所請求的服務組件名稱后,通過預先建立的通信鏈路,發送到應用程序權限動態控制系統。應用程序權限動態控制系統根據權限列表數據庫中、該應用程序的權限申請信息中的服務組件名稱,以及用戶輸入的指令來確定出向新共享庫中ioctl函數返回的信息,即匹配成功信息、或匹配失敗信息;ServiceManager進程所調用的新共享庫中的ioctl函數(新ioctl函數)根據應用程序權限動態控制系統返回的信息確定是否響應應用程序的服務請求。由于本發明實現應用程序權限的動態控制,并不依賴Andriod定制操作系統或Andriod操作系統版本,且用戶可根據需求選擇是否授予應用程序新的權限,從而具有更高的通用性、靈活性。
[0030]而且,本發明的技術方案中,從Andriod操縱系統底層實現對應用程序權限的控制,可靠性更高;不需要定位Andriod系統服務組件的API,可以避免因定位API不全而導致應用程序越權使用系統資源,更好地避免了惡意行為對Andriod操作系統的影響;進一步,實現應用程序權限動態控制的方法和系統可以Andriod應用程序安裝包APK的形成呈現,具有較好地復用性,易于推廣。
【專利附圖】
【附圖說明】
[0031]圖1為本發明實施例的加載新共享庫以及建立通訊鏈路的方法的流程圖;
[0032]圖2為本發明實施例的應用程序權限控制方法的流程圖;
[0033]圖3為本發明實施例的應用程序權限控制系統的內部結構框圖。
【具體實施方式】
[0034]為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉出優選實施例,對本發明進一步詳細說明。然而,需要說明的是,說明書中列出的許多細節僅僅是為了使讀者對本發明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細節也可以實現本發明的這些方面。
[0035]本申請使用的“模塊”、“系統”等術語旨在包括與計算機相關的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執行中的軟件。例如,模塊可以是,但并不僅限于:處理器上運行的進程、處理器、對象、可執行程序、執行的線程、程序和/或計算機。舉例來說,計算設備上運行的應用程序和此計算設備都可以是模塊。一個或多個模塊可以位于執行中的一個進程和/或線程內。
[0036]本發明的發明人考慮到,可以選取Andriod操作系統所使用的守護進程,即SM(月艮務管理,ServiceManager)進程,作為目標進程,通過進程注入的方式在ServiceManger進程中注入一個編譯后的新共享庫,使ServiceManager進程在接收到應用程序的服務請求時,先執行注入的新共享庫中的代碼邏輯;同時,對新共享庫中的接口控制ioctl函數(新ioctl函數)進行改進,使得在ServiceManager進程調用新共享庫中的ioctl函數時,相比于原共享庫中的ioctl函數(原ioctl函數),新共享庫中的ioctl函數還可以獲取應用程序的服務請求,并將獲取的服務請求中的數據發送到應用程序權限動態控制系統。
[0037]之后,應用程序權限動態控制系統根據權限列表數據庫中該應用程序的權限申請信息,以及用戶根據自己的需求輸入的指令,確定出是否授予應用程序所請求的服務的權限后,向新ioctl函數返回信息;ServiceManager進程所調用的新共享庫中的ioctl函數(即新ioctl函數)根據返回的信息響應或拒絕應用程序的服務請求。由于實現應用程序權限的動態控制不依賴Andriod定制操作系統或Andriod操作系統版本,且用戶可根據需求選擇是否授予應用程序新的權限,從而具有更高的通用性、靈活性。
[0038]下面結合附圖詳細說明本發明的技術方案。在本發明實施例中,應用程序權限動態控制系統可以安裝于具有Andriod操作系統的移動終端中,在其運行后,可以預先將編譯后的新共享庫加載到Andriod操作系統的ServiceManager進程的相應地址空間中,并建立ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路,具體方法的流程如圖1所示,包括如下步驟:
[0039]SlOl:應用程序權限動態控制系統運行后,將ServiceManager進程掛起,備份ServiceManager進程的寄存器值和進程上下文。
[0040]具體地,應用程序權限動態控制系統每次運行后,其上層Java代碼可以通過調用shell命令,調用其使用底層C語言編寫的可執行文件,并通過Linux的系統函數ptraCe_attach將ServiceManager進程掛起,并備份ServiceManager進程的寄存器值和進程上下文,以備后續ServiceManager進程的恢復。
[0041]S102:應用程序權限動態控制系統將編譯后的新共享庫加載到ServiceManager進程的原共享庫的地址空間后,執行新共享庫的入口函數,建立ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路。
[0042]在本步驟中,應用程序權限動態控制系統將編譯后的新共享庫加載到ServiceManager進程的原共享庫的地址空間;之后,應用程序權限動態控制系統執行新共享庫的入口函數,即so_entry,建立ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路,即socket通信鏈路。該通信鏈路可用于將ServiceManager進程打包的應用程序的服務請求的數據發送給應用程序權限動態控制系統。
[0043]S103:應用程序權限動態控制系統根據備份的寄存器值和進程上下文恢復ServiceManager 進程。
[0044]具體地,應用程序權限動態控制系統將步驟SlOl中備份的寄存器值和進程上下文寫回到ServiceManager進程中,使ServiceManager進程恢復掛起時的狀態繼續執行。
[0045]基于預先加載的新共享庫、預先建立的通信鏈路,本發明實施例提供的應用程序權限動態控制方法的流程如圖2所示,具體包括如下步驟:[0046]S201:ServiceManager進程接收到應用程序發送的服務請求時,調用新共享庫中的接口控制ioctl函數。
[0047]具體地,Binder是Andriod操作系統中的進程間通信機制,ioctl函數是用來處理Binder進程間通訊請求的關鍵函數。應用程序向Andriod操作系統請求服務時,向Andriod操作系統的ServiceManager進程發送服務請求,ServiceManager進程接收到服務請求后,調用新共享庫中的接口控制ioctl函數。
[0048]S202:新共享庫中的ioctl函數對ServiceManager進程接收到的服務請求進行解析,將解析出的進程id號和服務組件名稱向應用程序權限動態控制系統發送。
[0049]事實上,原共享庫中的ioctl函數(即原ioctl函數)不具有對應用程序的服務請求進行解析的功能,不能獲取到應用程序的服務請求中的進程id號和服務組件名稱;而本發明的技術方案中,通過加載新共享庫,從而將原共享庫中的ioctl函數替換為新共享庫中的ioctl函數(新ioctl函數),新共享庫中的ioctl函數(新ioctl函數)可以對ServiceManager進程接收到的服務請求進行解析,獲取其中的進程id號和服務組件名稱,并通過預先建立的、ServiceManager進程與應用程序權限動態控制系統之間的通信鏈路向應用程序權限動態控制系統發送。
[0050]S203:應用程序權限動態控制系統根據接收的進程id號,在權限列表數據庫中查找對應該進程id號的權限申請信息。
[0051]具體地,權限列表數據庫中的權限申請信息是預先保存的,具體為:應用程序權限動態控制系統運行后,對于Andriod操作系統下每個安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息后,將解析出的權限申請信息對應該應用程序的進程id號保存到權限列表數據庫中。在本步驟中,應用程序權限動態控制系統根據接收的進程id號,在權限列表數據庫中查找出對應該進程id號的權限申請信息,進而確定出查找出的權限申請信息中的服務組件名稱。其中,Manifest文件具體可以為XML格式的AndroidManifest 文件,如 AndriodManifest.xml。
[0052]S204:應用程序權限動態控制系統確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則跳轉到步驟S208 ;否則,執行步驟S205。
[0053]在本步驟中,應用程序權限動態控制系統將接收的服務組件名稱與查找到的權限申請信息中的服務組件名稱進行匹配,確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則表明應用程序所請求的服務沒有涉及越權訪問操作;否則,表明應用程序所請求的服務涉及越權訪問操作。
[0054]S205:應用程序權限動態控制系統顯示提示框提示用戶是否啟用本次服務請求。
[0055]具體地,若應用程序權限動態控制系統確定接收的服務組件名稱存在于查找到的權限申請信息中,則在本步驟中可以通過移動終端的圖形用戶界面(⑶I,Graphical UserInterface),在⑶I內顯示提示框提示用戶是否啟用本次服務請求。
[0056]S206:應用程序權限動態控制系統確定是否通過提示框接收到用戶輸入的啟用指令;若是,則執行步驟S207 ;否則,執行步驟S210。
[0057]具體地,用戶可以在⑶I的顯示框內輸入啟用指令或拒絕指令;若用戶輸入啟用指令,則表明用戶授予應用程序本次服務請求的訪問權限;若用戶輸入拒絕指令,則表明用戶拒絕應用程序本次服務請求的訪問權限。因此,用戶可以根據自己的需求自主配置應用程序的訪問權限,使得應用程序權限的控制更加靈活。
[0058]S207:應用程序權限動態控制系統將接收的服務組件名稱添加到權限列表數據庫中對應接收的進程id號的權限申請信息中。
[0059]具體地,若應用程序權限動態控制系統通過提示框接收到用戶輸入的啟用指令,則更新權限列表數據庫中應用程序的權限申請信息,將接收的服務組件名稱添加到權限列表數據庫中對應接收的進程id號的權限申請信息中;并執行下述步驟S208。
[0060]S208:應用程序權限動態控制系統向新共享庫中的ioctl函數返回匹配成功信
肩、O
[0061]S209:新共享庫中的ioctl函數響應應用程序的服務請求。
[0062]具體地,ServiceManager進程所調用的新共享庫中的ioctl函數(新ioctl函數)若接收到匹配成功信息,則響應應用程序的服務請求;應用程序將可以成功從ServiceManager進程獲取所請求的服務的實例對象,并得到該服務的使用權。
[0063]S210:應用程序權限動態控制系統向新共享庫中的ioctl函數返回匹配失敗信肩、O
[0064]具體地,若應用程序權限動態控制系統沒有通過提示框接收到用戶輸入的啟用指令,也就是,接收到用戶輸入的拒絕指令,則向新共享庫中的ioctl函數(新ioctl函數)返回匹配失敗信息,并執行步驟S211。
[0065]S211:新共享庫中的ioctl函數拒絕應用程序的服務請求。
[0066]具體地,ServiceManager進程所調用的新共享庫中的ioctl函數(新ioctl函數)若接收到匹配失敗信息,則拒絕應用程序的服務請求。
[0067]因此,ServiceManager進程可以通過調用新共享庫中的ioctl函數(新ioctl函數)獲取應用程序的服務請求,并通過應用程序權限動態控制系統對應用程序的訪問權限進行控制,使得應用程序權限的控制更為靈活。
[0068]基于上述的應用程序權限動態控制方法,本發明實施例提供的應用程序權限動態控制系統可安裝于具有安卓Android操作系統的移動終端(如智能手機)中,其內部結構框圖如圖3所示,具體包括:權限匹配模塊301和權限配置模塊302。
[0069]權限匹配模塊301用于在接收到ioctl函數通過應用程序權限動態控制系統與ServiceManager進程之間的通信鏈路發送的進程id號和服務組件名稱后,根據接收的進程id號,在權限列表數據庫305中查找對應該進程id號的權限申請信息,并確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則向新共享庫中的ioctl函數(新ioctl函數)返回匹配成功信息;若否,則向權限配置模塊302發送權限配置通知;其中,ioctl函數是ServiceManager進程接收到應用程序發送的服務請求時從新共享庫中調用的。
[0070]權限配置模塊302用于接收到權限匹配模塊301發送的權限配置通知后,顯示提示框提示用戶是否啟用本次服務請求;若通過提示框接收到用戶輸入的啟用指令,則將接收的服務組件名稱添加到權限列表數據庫305中對應接收的進程id號的權限申請信息后,向新共享庫中的ioctl函數(新ioctl函數)返回匹配成功信息;否則,向新共享庫中的ioctl函數(新ioctl函數)返回匹配失敗信息。新共享庫中的ioctl函數(新ioctl函數)用于若接收到匹配成功信息,則響應ServiceManager進程接收到的服務請求;若接收到匹配失敗信息,則拒絕ServiceManager進程接收到的服務請求。
[0071]進一步,上述的應用程序權限控制系統,還可包括:注入模塊303。
[0072]注入模塊303用于在應用程序權限動態控制系統運行后,將ServiceManager進程掛起,備份ServiceManager進程的寄存器值和進程上下文;并將編譯后的新共享庫加載到ServiceManager進程的原共享庫的地址空間后,執行新共享庫的入口函數,建立ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路;之后,根據備份的寄存器值和進程上下文恢復ServiceManager進程。其中,注入模塊303是使用底層C語言編寫并以可執行文件的形式保存在本地的。
[0073]進一步,上述的應用程序權限控制系統,還包括:權限信息保存模塊304。
[0074]權限信息保存模塊304用于在應用程序權限動態控制系統運行后,對于所有安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息后保存到權限列表數據庫305中。其中,Manifest文件具體為XML格式的AndroidManifest文件。
[0075]本發明的技術方案中,服務管理ServiceManager進程接收到應用程序的服務請求時,調用新共享庫中的ioctl函數(新ioctl函數),新共享庫中ioctl函數獲取應用程序的服務請求,并解析出獲取的服務器請求中的進程id和應用程序所請求的服務組件名稱后,通過預先建立的通信鏈路,發送到應用程序權限動態控制系統。應用程序權限動態控制系統根據權限列表數據庫中、該應用程序的權限申請信息中的服務組件名稱,以及用戶輸入的指令來確定出向新共享庫中ioctl函數返回的信息,即匹配成功信息、或匹配失敗信息;ServiceManager進程所調用的新共享庫中的ioctl函數(新ioctl函數)根據應用程序權限動態控制系統返回的信息確定是否響應應用程序的服務請求。由于本發明實現應用程序權限的動態控制,并不依賴Andriod定制操作系統或Andriod操作系統版本,且用戶可根據需求選擇是否授予應用程序新的權限,從而具有更高的通用性、靈活性。
[0076]而且,本發明的技術方案中,從Andriod操縱系統底層實現對應用程序權限的控制,可靠性更高;不需要定位Andriod系統服務組件的API,可以避免因定位API不全而導致應用程序越權使用系統資源,更好地避免了惡意行為對Andriod操作系統的影響;進一步,實現應用程序權限動態控制的方法和系統可以Andriod應用程序安裝包APK的形成呈現,具有較好地復用性,易于推廣。
[0077]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀取存儲介質中,如:R0M/RAM、磁碟、光盤等。
[0078]以上所述僅是本發明的優選實施方式,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
【權利要求】
1.一種應用程序權限動態控制方法,其特征在于,包括: 服務管理ServiceManager進程接收到應用程序發送的服務請求時,調用新共享庫中的接口控制ioctl函數;所述ioctl函數對所述服務請求進行解析,獲取其中的進程id號和服務組件名稱后通過所述ServiceManager進程與應用程序權限動態控制系統之間的通信鏈路向所述應用程序權限動態控制系統發送; 所述應用程序權限動態控制系統根據接收的進程id號,在權限列表數據庫中查找對應該進程id號的權限申請信息,并確定接收的服務組件名稱是否存在于查找到的權限申請信息中;若是,則向所述ioctl函數返回匹配成功信息;若否,則顯示提示框提示用戶是否運行本次服務請求; 所述應用程序權限動態控制系統若通過所述提示框接收到用戶輸入的許可指令,則將接收的服務組件名稱添加到所述權限列表數據庫中對應所述進程id號的權限申請信息中后,向所述ioctl函數返回匹配成功信息;否則向所述ioctl函數返回匹配失敗信息; 所述ioctl函數若接收到匹配成功信息,則響應所述服務請求;若接收到匹配失敗信息,則拒絕所述服務請求。
2.如權利要求1所述的方法,其特征在于,所述新共享庫是預先加載的,以及所述通信鏈路是預先建立的: 應用程序權限動態控制系統運行后將所述ServiceManager進程掛起,并備份所述ServiceManager進程的寄存器值和進程上下文;并將編譯后的新共享庫加載到所述ServiceManager進程的地址空間后,執行所述新共享庫中的入口函數,建立所述ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路; 之后,所述應用程序權限動態控制系統根據備份的寄存器值和進程上下文恢復所述ServiceManager進程的執行現場。
3.如權利要求1或2所述的方法,其特征在于,所述權限列表數據庫中的權限申請信息是預先提取并保存的: 所述應用程序權限動態控制系統運行后對于每個安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息并保存到所述權限列表數據庫中。
4.如權利要求3所述的方法,其特征在于,所述應用程序權限動態控制系統安裝于具有Android操作系統的移動終端中。
5.如權利要求4所述的方法,其特征在于,所述Manifest文件具體為XML格式的AndroidManifest.xml 文件。
6. 一種應用程序權限動態控制系統,其特征在于,包括: 權限匹配模塊,用于在接收到ioctl函數通過所述應用程序權限動態控制系統與服務管理ServiceManager進程之間的通信鏈路發送的進程id號和服務組件名稱后,根據接收的進程id號,在權限列表數據庫中查找對應該進程id號的權限申請信息,并確定接收的服務組件名稱是否存在于查找到的權限申請信息列表中;若是,則向所述ioctl函數返回匹配成功信息;若否,則發送權限配置通知;其中,所述ioctl函數是所述ServiceManager進程接收到應用程序發送的服務請求時從新共享庫中調用的; 權限配置模塊,用于接收到所述權限配置通知后,顯示提示框提示用戶是否允許本次服務請求;若通過所述提示框接收到用戶輸入的許可指令,則將接收的服務組件名稱添加到所述權限列表數據庫中對應所述進程id號的權限申請信息后,向所述ioctl函數返回匹配成功信息;否則向所述ioctl函數返回匹配失敗信息;所述ioctl函數若接收到匹配成功信息,則響應所述服務請求;若接收到匹配失敗信息,則拒絕所述服務請求。
7.如權利要求6所述的系統,其特征在于,還包括: 注入模塊,用于在所述應用程序權限動態控制系統運行后,將所述ServiceManager進程掛起并處于受控狀態,同時備份所述ServiceManager進程的寄存器值和進程上下文;并將編譯后的新共享庫加載到所述ServiceManager進程的地址空間中,執行所述新共享庫的入口函數,建立所述ServiceManager進程與本應用程序權限動態控制系統之間的通信鏈路;之后,根據備份的寄存器值和進程上下文恢復所述ServiceManager進程。
8.如權利要求7所述的系統,其特征在于,還包括: 權限信息保存模塊,用于在所述應用程序權限動態控制系統運行后對于每個安裝的應用程序,從該應用程序的清單Manifest文件中解析出權限申請信息后保存到所述權限列表數據庫中。
9.如權利要求6-8任一所述的系統,其特征在于,其安裝于具有Android操作系統的移動終端中。
10.如權利要求9所述的系統,其特征在于,所述Manifest文件具體為XML格式的AndroidManifest.xml 文件。
【文檔編號】G06F21/12GK103617380SQ201310632042
【公開日】2014年3月5日 申請日期:2013年11月28日 優先權日:2013年11月28日
【發明者】范文浩, 吳帆, 闕斌生, 張洪光, 唐碧華, 余小秋 申請人:北京郵電大學