一種安卓應用的權限控制方法和裝置與流程
2023-06-03 01:34:41 1

本發明涉及網際網路技術領域,具體涉及一種安卓應用的權限控制方法和裝置。
背景技術:
現有技術中,安卓系統中無法實現對多個相同的安卓應用的並行運行,其原因是:每個安卓應用在安裝在安卓系統中時,該安卓應用的安裝包中的配置文件中的配置信息將被註冊到安卓系統中,安卓系統通過這些註冊信息來獲知安卓應用的存在以及運行相關信息,在一個安卓應用已安裝到安卓系統的基礎上,如果還想將該安卓應用的分身應用再次安裝到安卓系統中,安卓系統因已接收過相同的註冊信息而不能接納此分身應用的註冊,因此分身應用對於安卓系統來說是未知的,進而分身系統無法正常與安卓系統進行交互,導致分身系統無法正常運行。
然而,對多個相同的安卓應用的並行運行的需求在用戶群體中是存在的,常見的,用戶希望在自己的智能終端上通過不同的帳號登錄兩個QQ應用,讓這兩個QQ應用並行運行,用戶可以根據自己的需求分別使用不同的QQ應用來與不同社交圈的好友進行聊天會話,符合很多應用場景。
技術實現要素:
鑑於上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的安卓應用的權限控制方法和裝置。
依據本發明的一個方面,提供了一種安卓應用的權限控制方法,其中,包括:
構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行。
監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限;
是則,放行所述事件;否則,結束所述事件。
可選地,所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件包括:
將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;
判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;
是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
可選地,在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,該方法進一步包括:獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;
所述驗證該指定安卓應用的分身應用是否具有相應權限包括:根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
可選地,所述根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限包括:
對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;
根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;
根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
可選地,該方法進一步包括:從該調用請求中提取出發送方所在的進程的信息;
所述放行所述事件包括:將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
可選地,所述獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中包括:
獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;
解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
可選地,當結束所述事件時,該方法進一步包括:
向所述指定安卓應用的分身應用拋出安全異常。
可選地,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。
可選地,所述系統傳感器包括如下一種或多種:
加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
可選地,所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的步驟是通過虛擬機中的常駐服務執行的。
依據本發明的另一個方面,提供了一種安卓應用的權限控制裝置,其中,包括:
環境構造單元,適於構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行;
常駐服務單元,適於監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限;是則,放行所述事件;否則,結束所述事件。
可選地,所述常駐服務單元,適於將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
可選地,所述常駐服務單元,還適於在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;
所述常駐服務單元,適於根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
可選地,所述常駐服務單元,適於對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
可選地,所述常駐服務單元,還適於從該調用請求中提取出發送方所在的進程的信息;以及,適於將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
可選地,所述常駐服務單元,適於獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
可選地,所述常駐服務單元,還適於當結束所述事件時,向所述指定安卓應用的分身應用拋出安全異常。
可選地,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。
可選地,所述系統傳感器包括如下一種或多種:
加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
可選地,所述常駐服務單元,適於通過虛擬機中的常駐服務執行所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的操作。
有上述可知,根據本發明的技術方案,為了實現安卓系統中多個相同安卓應用的並行運行,在安卓系統中構造了虛擬機環境,將指定安卓應用的分身應用放入到該虛擬機中運行,且為了防止分身應用利用本方案中的虛擬機對安卓系統進行惡意攻擊,本方案在虛擬機中的指定安卓應用的分身應用在調用指定系統設備時對其進行權限驗證,讓權限沒有問題的分身應用可以成功地進行調用,而權限有問題的分身應用不可以成功進行調用,在保證安卓系統安全的基礎上可以完美地實現安卓系統中指定安卓應用與其相應的分身應用的並行運行。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據本發明一個實施例的一種安卓應用的權限控制方法的流程圖;
圖2示出了根據本發明一個實施例的一種安卓應用的權限控制裝置的示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。
圖1示出了根據本發明一個實施例的一種安卓應用的權限控制方法的流程圖。如圖1所示,該方法包括:
步驟S110,構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行。
其中,指定安卓應用指的是能夠在安卓系統中正常運行的,類似於QQ聊天、UC瀏覽器等的應用軟體。而指定安卓應用的分身應用作為指定安卓應用的複製體,可以看做是指定安卓應用的分身。現有技術中,每個指定安卓應用的分身應用可以與相應的指定安卓應用是不可以並行運行的,其原因是安卓系統無法認可兩個相同的應用所聲明的相同的註冊信息,因此,在指定安卓應用已安裝的情況下,指定安卓應用的分身應用是無法成功註冊到安卓系統中的,對於安卓系統來說,指定安卓應用的分身應用是未知的,安卓系統無法與其進行正常交互。
步驟S120,監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限。
對於一個分身應用來說,當該分身應用要用到安卓系統中的指定系統設備時,這個指定系統設備對應於安卓系統中的多種權限,該分身應用需要在Manifest文件中聲明要使用相應的權限,如果一個分身應用在其配置文件中做出過聲明,說明該分身應用確實需要使用這個指定系統設備,如果其配置文件中沒有做出聲明,說明該分身應用在運行中不需要使用這個指定系統設備,則此時對於指定系統設備的調用可能是非法的。
步驟S130,是則,放行所述事件;否則,結束所述事件。
可見,圖1所示的方法為了實現安卓系統中多個相同安卓應用的並行運行,在安卓系統中構造了虛擬機環境,將指定安卓應用的分身應用放入到該虛擬機中運行,且為了防止分身應用利用本方案中的虛擬機對安卓系統進行惡意攻擊,本方案在虛擬機中的指定安卓應用的分身應用在調用指定系統設備時對其進行權限驗證,讓權限沒有問題的分身應用可以成功地進行調用,而權限有問題的分身應用不可以成功進行調用,在保證安卓系統安全的基礎上可以完美地實現安卓系統中指定安卓應用與其相應的分身應用的並行運行。
在本發明的一個實施例中,上述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件包括:將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
其中,在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,該方法進一步包括:獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;所述驗證該指定安卓應用的分身應用是否具有相應權限包括:根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
具體地,所述根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限包括:對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
進一步地,在本發明的一個實施例中,圖1所示的方法進一步包括:從該調用請求中提取出發送方所在的進程的信息;所述放行所述事件包括:將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
其中,所述獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中包括:獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
相應地,當結束所述事件時,該方法進一步包括:向所述指定安卓應用的分身應用拋出安全異常。
在具體的例子中,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。所述系統傳感器包括如下一種或多種:加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
在本發明的一個實施例中,所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的步驟是通過虛擬機中的常駐服務執行的。
例如,Android系統中聲明有好多權限,如傳感器、GPS、WiFi等各種類型的系統設備對應的權限,當一個安卓應用要用到每種系統設備時,該安卓應用需要在Manifest中聲明要使用這個相應的權限,當安卓應用在代碼中去調一個系統設備的時候,Android系統中有個包管理服務PM來檢測安卓應用中與偶沒有聲明相應的權限,有的話系統放行運行安卓應用訪問相應系統設備,沒有的話直接拋出安全異常。但是對於分身應用來說,由於Android系統不認識這些分身應用,Android系統中的PM就不會對分身應用進行驗證,但為了保證Android系統的安全,不驗證肯定是不行的,為此,本方案通過常駐服務模擬了Android系統中的PM服務,當一個分身應用要調用系統設備時,將這個分身應用的訪問對應的該分身應用的包名傳到常駐服務中,常駐服務會檢測這個包名對應的Manifest中有沒有聲明這個相應的權限,有的話就放行,沒有的話就拋出安全異常。對於常駐服務來說,這些權限是都具備的,我們在確定分身應用具有相應權限之後,也可以代替分身應用調用系統設備最終使得系統設備在分身應用所希望的進程中運行,實現分省應用對系統設備的調用。
圖2示出了根據本發明一個實施例的一種安卓應用的權限控制裝置的示意圖。如圖2所示,該安卓應用的權限控制裝置200包括:
環境構造單元210,適於構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行。
常駐服務單元220,適於監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限;是則,放行所述事件;否則,結束所述事件。
可見,圖2所示的裝置為了實現安卓系統中多個相同安卓應用的並行運行,在安卓系統中構造了虛擬機環境,將指定安卓應用的分身應用放入到該虛擬機中運行,且為了防止分身應用利用本方案中的虛擬機對安卓系統進行惡意攻擊,本方案在虛擬機中的指定安卓應用的分身應用在調用指定系統設備時對其進行權限驗證,讓權限沒有問題的分身應用可以成功地進行調用,而權限有問題的分身應用不可以成功進行調用,在保證安卓系統安全的基礎上可以完美地實現安卓系統中指定安卓應用與其相應的分身應用的並行運行。
在本發明的一個實施例中,常駐服務單元220,適於將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
其中,常駐服務單元220,還適於在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;常駐服務單元220,適於根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
在本發明的一個實施例中,常駐服務單元220,適於對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
進一步地,所述常駐服務單元220,還適於從該調用請求中提取出發送方所在的進程的信息;以及,適於將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
在本發明的一個實施例中,常駐服務單元220,適於獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
進一步地,在本發明的一個實施例中,所述常駐服務單元220,還適於當結束所述事件時,向所述指定安卓應用的分身應用拋出安全異常。
在具體的例子中,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。其中,所述系統傳感器包括如下一種或多種:加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
在本發明的一個實施例中,所述常駐服務單元220,適於通過虛擬機中的常駐服務執行所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的操作。
需要說明的是,圖2所示裝置的各實施例與圖1所示方法的各實施例對應相同,上文已有詳細說明,在此不再贅述。
綜上所述,在本發明的技術方案中,為了實現安卓系統中多個相同安卓應用的並行運行,在安卓系統中構造了虛擬機環境,將指定安卓應用的分身應用放入到該虛擬機中運行,且為了防止分身應用利用本方案中的虛擬機對安卓系統進行惡意攻擊,本方案在虛擬機中的指定安卓應用的分身應用在調用指定系統設備時對其進行權限驗證,讓權限沒有問題的分身應用可以成功地進行調用,而權限有問題的分身應用不可以成功進行調用,在保證安卓系統安全的基礎上可以完美地實現安卓系統中指定安卓應用與其相應的分身應用的並行運行。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關。各種通用裝置也可以與基於在此的示教一起使用。根據上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發明也不針對任何特定程式語言。應當明白,可以利用各種程式語言實現在此描述的本發明的內容,並且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,並未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開並幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特徵有時被一起分組到單個實施例、圖、或者對其的描述中。然而,並不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特徵更多的特徵。更確切地說,如下面的權利要求書所反映的那樣,發明方面在於少於前面公開的單個實施例的所有特徵。因此,遵循具體實施方式的權利要求書由此明確地併入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變並且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特徵和/或過程或者單元中的至少一些是相互排斥之外,可以採用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特徵以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特徵可以由提供相同、等同或相似目的的替代特徵來代替。
此外,本領域的技術人員能夠理解,儘管在此所述的一些實施例包括其它實施例中所包括的某些特徵而不是其它特徵,但是不同實施例的特徵的組合意味著處於本發明的範圍之內並且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發明的各個部件實施例可以以硬體實現,或者以在一個或者多個處理器上運行的軟體模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數位訊號處理器(DSP)來實現根據本發明實施例的安卓應用的權限控制裝置中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用於執行這裡所描述的方法的一部分或者全部的設備或者裝置程序(例如,電腦程式和電腦程式產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從網際網路網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,並且本領域技術人員在不脫離所附權利要求的範圍的情況下可設計出替換實施例。在權利要求中,不應將位於括號之間的任何參考符號構造成對權利要求的限制。單詞「包含」不排除存在未列在權利要求中的元件或步驟。位於元件之前的單詞「一」或「一個」不排除存在多個這樣的元件。本發明可以藉助於包括有若干不同元件的硬體以及藉助於適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬體項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
本發明公開了A1、一種安卓應用的權限控制方法,其中,包括:
構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行;
監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限;
是則,放行所述事件;否則,結束所述事件。
A2、如A1所述的方法,其中,所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件包括:
將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;
判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;
是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
A3、如A1或A2所述的方法,其中,在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,該方法進一步包括:獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;
所述驗證該指定安卓應用的分身應用是否具有相應權限包括:根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
A4、如A3所述的方法,其中,所述根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限包括:
對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;
根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;
根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
A5、如A4所述的方法,其中,該方法進一步包括:從該調用請求中提取出發送方所在的進程的信息;
所述放行所述事件包括:將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
A6、如A3所述的方法,其中,所述獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中包括:
獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;
解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
A7、如A1所述的方法,其中,當結束所述事件時,該方法進一步包括:
向所述指定安卓應用的分身應用拋出安全異常。
A8、如A1所述的方法,其中,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。
A9、如A8所述的方法,其中,所述系統傳感器包括如下一種或多種:
加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
A10、如A1-A9中任一項所述的方法,其中,
所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的步驟是通過虛擬機中的常駐服務執行的。
本發明還公開了B11、一種安卓應用的權限控制裝置,其中,包括:
環境構造單元,適於構造虛擬機環境,將安卓系統中的一個或多個指定安卓應用的分身應用放入虛擬機中運行;
常駐服務單元,適於監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限;是則,放行所述事件;否則,結束所述事件。
B12、如B11所述的裝置,其中,
所述常駐服務單元,適於將鉤子函數掛載在指定系統設備的調用接口上,利用所述鉤子函數攔截發送至所述調用接口的調用請求;判斷所述調用請求的發送方是否為虛擬機中的指定安卓應用的分身應用;是則確定監聽到虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;否則放行所述調用請求。
B13、如B11或B12所述的裝置,其中,
所述常駐服務單元,還適於在所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件之前,獲取各指定安卓應用的分身應用所聲明的權限信息並保存至配置管理表中;
所述常駐服務單元,適於根據所述配置管理表中記錄的該指定安卓應用的分身應用所聲明的權限信息,判斷該指定安卓應用的分身應用是否聲明關於所要調用的指定系統設備的權限;是則,確定該指定安卓應用的分身應用具有相應權限;否則,確定該指定安卓應用的分身應用不具有相應權限。
B14、如B13所述的裝置,其中,
所述常駐服務單元,適於對於所述鉤子函數攔截到的調用請求,從該調用請求中提取出:發送方的信息,調用的指定安卓設備的信息;根據所述發送方的信息確定相應的指定安卓應用的分身應用,從配置管理表查找該指定安卓應用的分身應用所聲明的權限信息;根據所述調用的指定安卓設備的信息,判斷該指定安卓應用的分身應用所聲明的權限信息中是否包含關於所述調用的指定安卓設備的權限信息。
B15、如B14所述的裝置,其中,所述常駐服務單元,還適於從該調用請求中提取出發送方所在的進程的信息;以及,適於將所述調用請求發送至指定系統設備的調用接口,接收安卓系統返回的執行消息,根據所述發送方所在的進程的信息,將指定系統設備分配至相應的進程中啟動並運行。
B16、如B13所述的裝置,其中,
所述常駐服務單元,適於獲取各指定安卓應用的安裝包復件並保存至指定目錄,作為各指定安卓應用的分身應用的安裝包;解析各指定安卓應用的分身應用的安裝包中的配置文件,獲取各指定安卓應用的分身應用在相應配置文件中所聲明的權限信息並保存至所述配置管理表中。
B17、如B11所述的裝置,其中,
所述常駐服務單元,還適於當結束所述事件時,向所述指定安卓應用的分身應用拋出安全異常。
B18、如B11所述的裝置,其中,所述指定系統設備包括如下一種或多種:系統傳感器,系統相機模塊,系統GPS模塊,系統WiFi模塊。
B19、如B18所述的裝置,其中,所述系統傳感器包括如下一種或多種:
加速度傳感器、磁力傳感器、方向傳感器、陀螺儀傳感器、光線感應傳感器、壓力傳感器、溫度傳感器、接近傳感器、重力傳感器、線性加速度傳感器、旋轉矢量傳感器。
B20、如B11-B19中任一項所述的裝置,其中,
所述常駐服務單元,適於通過虛擬機中的常駐服務執行所述監聽虛擬機中的指定安卓應用的分身應用調用指定系統設備的事件;當監聽到所述事件時進行攔截,驗證該指定安卓應用的分身應用是否具有相應權限的操作。