1.一種Android第三方類庫權(quán)限隔離方法,其特征在于,包括以下步驟:
1)配置權(quán)限信息,包括應(yīng)用申請的危險(xiǎn)權(quán)限,應(yīng)用使用到的第三方類庫信息,以及賦予第三方類庫的權(quán)限;
2)攔截敏感系統(tǒng)調(diào)用,將其重定向到代理方法或函數(shù)上;
3)獲得當(dāng)前代理方法或函數(shù)的調(diào)用者,并判斷此次調(diào)用是否合法;
4)若合法,則回調(diào)原方法或函數(shù),否則,阻止此次調(diào)用。
2.如權(quán)利要求1所述的方法,其特征在于,步驟1)中,所述危險(xiǎn)權(quán)限是指可能泄露用戶隱私的權(quán)限,包括:讀取日歷事件、編輯日歷事件、錄制視頻或拍照、讀取聯(lián)系人、編輯聯(lián)系人、得到位置信息、錄制音頻、獲取電話狀態(tài)、訪問通話記錄、編輯通話記錄、發(fā)送短信、編輯短信、讀取短信、讀取文件、編輯文件權(quán)限;所述第三方類庫信息包括,第三方類庫的Java部分的包名,本地類庫的文件名。
3.如權(quán)利要求1所述的方法,其特征在于,步驟2)所述敏感系統(tǒng)調(diào)用是指敏感方法或函數(shù)的調(diào)用,所述敏感方法或函數(shù)是指與危險(xiǎn)權(quán)限相關(guān)的Android框架層方法或本地函數(shù);對于每個(gè)所述敏感方法或函數(shù),構(gòu)造一個(gè)相應(yīng)的代理方法或函數(shù);步驟2)采用系統(tǒng)調(diào)用攔截方式,將第三方類庫的敏感方法或函數(shù)的調(diào)用重定向到代理方法或函數(shù)上,且只攔截目標(biāo)應(yīng)用申請的危險(xiǎn)權(quán)限對應(yīng)的敏感方法或函數(shù)的調(diào)用。
4.如權(quán)利要求1所述的方法,其特征在于,步驟3)獲取敏感方法或函數(shù)的調(diào)用者的方法為:利用Android的方法或函數(shù)調(diào)用堆棧,得到敏感方法或函數(shù)的調(diào)用者;步驟3)判斷此次調(diào)用是否合法的方式是,得到此次調(diào)用的調(diào)用者,根據(jù)配置的權(quán)限信息判斷是否賦予該調(diào)用者相應(yīng)的權(quán)限,若沒有,則說明此次調(diào)用非法,否則,此次調(diào)用合法。
5.如權(quán)利要求1所述的方法,其特征在于,步驟4)阻止方法或函數(shù)調(diào)用的方式為:若該方法或函數(shù)沒有返回值,則代理方法或函數(shù)直接返回,若存在返回值,則代理方法或函數(shù)返回一個(gè)假數(shù)據(jù)。
6.一種Android第三方類庫權(quán)限隔離裝置,其特征在于,包括:
攔截模塊,用于攔截第三方類庫的敏感系統(tǒng)調(diào)用,并將調(diào)用重定向到代理方法或函數(shù);
控制模塊,用于處理重定向的方法或函數(shù)調(diào)用,其詢問檢查模塊此次調(diào)用是否合法,若合法,其會回調(diào)原方法或函數(shù),若不合法,則其會阻止此次調(diào)用;
檢查模塊,用于檢查某個(gè)第三方類庫是否有權(quán)限調(diào)用某個(gè)方法或函數(shù),其根據(jù)權(quán)限文件來判斷;
權(quán)限文件,用于列舉應(yīng)用申請的權(quán)限,使用到的第三方類庫信息和賦給每個(gè)第三方類庫的權(quán)限集合。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述控制模塊包含敏感方法或函數(shù)的代理方法或函數(shù),用來接收重定向的方法或函數(shù)調(diào)用;所述控制模塊根據(jù)Android方法或函數(shù)的調(diào)用堆棧獲得當(dāng)前方法或者函數(shù)的調(diào)用者;所述控制模塊詢問檢查模塊某類庫的某次方法或者函數(shù)調(diào)用是否合法,若合法,就直接回調(diào)原方法或函數(shù),否則阻止此次調(diào)用。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述攔截模塊在應(yīng)用程序剛啟動的時(shí)候就將目標(biāo)敏感方法或函數(shù)替換成對應(yīng)的代理方法或函數(shù);所述攔截模塊將敏感方法或函數(shù)的調(diào)用重定向到控制模塊的代理方法或函數(shù)中;所述攔截模塊根據(jù)權(quán)限文件列舉的危險(xiǎn)權(quán)限,攔截相應(yīng)的方法或函數(shù)調(diào)用。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述權(quán)限文件包含應(yīng)用申請的危險(xiǎn)權(quán)限、第三方類庫的Java部分的包名、本地類庫的文件名和賦予第三方類庫的權(quán)限信息。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述檢查模塊維護(hù)一個(gè)方法或函數(shù)和其需要權(quán)限之間的映射;所述檢查模塊通過解析權(quán)限文件,得到賦予目標(biāo)第三方類庫的權(quán)限,并根據(jù)方法或函數(shù)到權(quán)限的映射關(guān)系,判斷第三方類庫的某次方法或函數(shù)調(diào)用是否合法。