一種面向Android系統(tǒng)資源的訪問控制方法
【專利摘要】本發(fā)明公開了一種面向Android系統(tǒng)資源的訪問控制方法,包括:1)上層應用請求使用系統(tǒng)資源時,調用ServiceManager,當運行到斷點時,監(jiān)控程序讀取寄存器信息,進而獲得請求資源的信息和發(fā)出請求的應用信息;監(jiān)控程序判斷請求資源和發(fā)出請求的應用是否需要攔截,如果是,則進入步驟2);如果否,正常調用ServiceManager分配系統(tǒng)資源;2)彈出對話框,提示用戶。
【專利說明】一種面向Android系統(tǒng)資源的訪問控制方法
【技術領域】:
[0001]本發(fā)明屬于基于Android系統(tǒng)的智能終端的安全防護領域,具體涉及一種面向Android系統(tǒng)資源的訪問控制方法。
【背景技術】:
[0002]隨著Android系統(tǒng)的日益流行,越來越多的設備廠商轉向Android系統(tǒng),基于該系統(tǒng)的應用數(shù)量也呈爆炸式增長。隨之而來的安全問題也日益嚴嚴峻,如何快速檢測應用安全性,保證用戶的應用安全是一項巨大的挑戰(zhàn)。首先,由于系統(tǒng)的差異性,傳統(tǒng)的面向Windows系統(tǒng)的安全性檢測方法不再適用;其次,Android系統(tǒng)的開源性為惡意應用開發(fā)者提供了優(yōu)越的空間;另外,Android系統(tǒng)版本各異,缺乏統(tǒng)一的管理;最后,Android應用下載中心混雜,應用安全性無法保證。這些新特性的出現(xiàn),使得基于Android系統(tǒng)的應用安全性檢測更加困難。鑒于此,學者們提出靜態(tài)檢測和動態(tài)檢測兩種方式進行應用的安全性判定,這兩種方式雖然在很大程度上保證了用戶的安全性,但仍存在不足?,F(xiàn)有的靜態(tài)檢測方式:(1)病毒特征值比對,需要依賴龐大的病毒庫,屬于后知后覺;(2)權限分析,則需要為每種權限設定適當?shù)臋嘀?,并確定合適的閾值。動態(tài)監(jiān)測:(1)改變系統(tǒng)源碼,實現(xiàn)復雜;
[2]Hook API方法需要針對不同的行為Hook不同的API。這些方法都存在缺陷,不能簡單快捷的發(fā)現(xiàn)惡意應用,全面保證用戶的安全。
【發(fā)明內容】
:
[0003]針對以上問題,本發(fā)明提出一種面向Android系統(tǒng)資源的訪問控制方法,通過監(jiān)控ServiceManager的調用,發(fā)現(xiàn)并攔截系統(tǒng)中敏感資源的調用,及時提醒用戶,讓用戶自行決定是“禁止”還是“允許”,并且根據(jù)用戶的選擇進行相應的操作。
[0004]為了實現(xiàn)上述目的,本發(fā)明采用如下技術方案:
[0005]—種面向Android系統(tǒng)資源的訪問控制方法,包括以下步驟:
[0006]I)、上層應用請求使用系統(tǒng)資源,調用ServiceManager,當運行到監(jiān)控代碼時,轉入到監(jiān)控攔截程序中運行,監(jiān)控攔截程序分析svcmgr_handlerO函數(shù)的參數(shù)txt中的內容,獲取到請求資源的信息和發(fā)出請求的應用信息;
[0007]監(jiān)控攔截程序首先判斷中斷號是否來自加入的斷點,判斷條件為:
[0008](ARM_pc>=int_addr)&&ARM_pc<=(int_addr+Oxf)
[0009]其中ARM_pc是寄存器中下一條指令的地址,int_addr為斷點注入地址,Oxf為十六進制表示的常數(shù)16 ;不同版本系統(tǒng)斷點語句數(shù)目可能不同,本發(fā)明取范圍int_addr至int_addr+Oxf ;
[0010]如果滿足判斷條件,說明攔截到的中斷來自加入的斷點,存儲相應資源信息和請求者的信息到對應寄存器中,然后進入步驟2);如果不滿足判斷條件,正常調用ServiceManager分配系統(tǒng)資源;
[0011]2)、獲取請求資源的信息,判斷是否為敏感系統(tǒng)資源;如果為敏感系統(tǒng)資源,彈出對話框,提示用戶,根據(jù)用戶的選擇,進行相應的處理;否則,繼續(xù)執(zhí)行ServiceManager執(zhí)行系統(tǒng)資源的調用;
[0012]所述敏感系統(tǒng)資源為攝像頭、麥克風、藍牙、WIF1、短信的發(fā)送或GPS。
[0013]本發(fā)明進一步的改進在于:步驟2)中如果系統(tǒng)調用敏感資源,則從對應寄存器中讀取申請者信息,通過socket發(fā)送給上層,彈出對話框,提示用戶應用名和所申請的資源,供用戶選擇是禁止還是允許此次申請;若禁止此次申請,則跳出ServiceManager阻止系統(tǒng)資源的訪問,若允許此次申請,則繼續(xù)執(zhí)行ServiceManager,允許資源的調用。
[0014]本發(fā)明進一步的改進在于:監(jiān)控攔截程序的監(jiān)控代碼注入的起始地址和偏移地址為ServiceManager處理資源請求的起始地址和偏移地址。
[0015]本發(fā)明進一步的改進在于:所述一種面向Android系統(tǒng)資源的訪問控制方法應用于安卓4.1中。
[0016]本發(fā)明進一步的改進在于:監(jiān)控攔截程序的監(jiān)控代碼注入包括以下步驟:
[0017]a)、獲取ServiceManager的代碼注入地址,包含ServiceManager處理資源請求的起始地址和偏移地址;
[0018]b)、保存狀態(tài),執(zhí)行系統(tǒng)調用getpidO注入監(jiān)控攔截程序的監(jiān)控代碼到ServiceManager 中。
[0019]相對于現(xiàn)有技術,本發(fā)明具有以下有益效果:
[0020]本發(fā)明中:監(jiān)控攔截ServiceManager不用改動系統(tǒng)內核程序。監(jiān)控攔截ServiceManager不用Hook大量的API執(zhí)行相應的監(jiān)控。監(jiān)控攔截ServiceManager能夠有效定位申請系統(tǒng)資源者的來源。
[0021]本發(fā)明中:txt參數(shù)為處理系統(tǒng)具體資源調用函數(shù)svcmgr_handler()的形式參數(shù),txt為binder_tXn結構體類型的參數(shù),其組成成員包含調用申請資源的應用id,申請資源的具體內容,從中可以確定申請者來源以及根據(jù)申請內容檢測敏感資源的調用。
[0022]由于本發(fā)明通過監(jiān)控ServiceManager進程的運行達到監(jiān)控管理系統(tǒng)敏感資源的調用,首先ServiceManager在Android系統(tǒng)架構中處于應用框架層,在監(jiān)控攔截系統(tǒng)敏感資源調用時從ServiceManager出發(fā)并未涉及到系統(tǒng)內核層,不需要修改相應的系統(tǒng)源碼;另外ServiceManager是處理系統(tǒng)資源調用的統(tǒng)一接口,通過實現(xiàn)它的監(jiān)控不需要Hook不同的系統(tǒng)資源調用API達到監(jiān)控攔截目的,并且能夠確定調用者來源。因此,本發(fā)明能夠簡單有效的發(fā)現(xiàn)并攔截系統(tǒng)敏感資源的調用。
[0023]本發(fā)明在Android4.1系統(tǒng)版本上將使用java語言實現(xiàn)的監(jiān)控攔截程序實際運行,通過編寫測試程序檢測其監(jiān)控攔截功能的可用性以及命中率。記錄了監(jiān)控攔截的實際資源種類,從實驗結果發(fā)現(xiàn),攝像頭、麥克風、WIFI等敏感系統(tǒng)資源的調用都能有效監(jiān)控并攔截到。其次通過多次運行測試程序,觀察監(jiān)控攔截程序的命中率,從實驗結果發(fā)現(xiàn),每種定義的敏感系統(tǒng)資源都能100%的監(jiān)控攔截。
[0024]本發(fā)明面向基于Android系統(tǒng)的智能終端安全防護領域,適用于發(fā)現(xiàn)攝像頭、麥克風、耳機、藍牙等系統(tǒng)資源的調用,同時有效攔截短信發(fā)送和電話簿讀取行為。本發(fā)明在已有系統(tǒng)kernel層檢查攔截API調用方法的基礎上,提出在用戶態(tài)層面監(jiān)控ServiceManager來發(fā)現(xiàn)并攔截相應資源的調用,克服了已有需要修改系統(tǒng)源碼和無法區(qū)分原始請求者的缺陷,從而具有更好的科學性和更高的實際應用價值?!緦@綀D】
【附圖說明】
[0025]圖1為本發(fā)明的工作流程示意圖。
【具體實施方式】
[0026]下面結合【專利附圖】
【附圖說明】和【具體實施方式】對本發(fā)明做進一步詳細說明。
[0027]本發(fā)明一種面向Android系統(tǒng)資源的訪問控制方法,通過該方法實現(xiàn)表1中所示的所有敏感系統(tǒng)資源的訪問控制,并且可以有效的攔截,具體包括下列步驟:
[0028]步驟一:獲取ServiceManager的代碼注入地址:包含ServiceManager處理資源請求的起始地址addrl和偏移地址addr2 ;
[0029]本發(fā)明發(fā)現(xiàn)ServiceManager為處理系統(tǒng)資源調用訪問的入口,當應用需要申請系統(tǒng)資源(例如麥克風、攝像頭等)時,會首先啟動ServiceManager,而后由ServiceManager根據(jù)請求做相應處理。通過分析ServiceManager源碼,得到svcmgr_handler O為資源調用對應的處理函數(shù),其中該函數(shù)的參數(shù)txt中包含請求資源的信息以及請求者的信息。其中參數(shù)txt是一個binder_txn類型的結構體,其中包含發(fā)出請求應用的信息以及具體請求的系統(tǒng)資源信息。
[0030]因此,本發(fā)明從svcmgr_handler()函數(shù)出發(fā),找到相應入口地址,注入自己的代碼,發(fā)現(xiàn)并攔截相應的系統(tǒng)調用,具體入口地址分為起始地址和偏移地址。通過分析,指令“2de9”的地址是ServiceManager處理資源請求的入口地址,“f043”的地址是ServiceManager處理資源請求的偏移位置。
[0031]具體實現(xiàn)首先讀入ServiceManager源文件,每次讀入兩個字節(jié),依次找到指令“2de9”和“f043”的地址將二者組合起來即為自定義代碼的注入地址。
[0032]表1所有敏感系統(tǒng)資源的訪問控制表
[0033]
【權利要求】
1.一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,包括以下步驟: 1)、上層應用請求使用系統(tǒng)資源,調用ServiceManager,當運行到監(jiān)控代碼時,轉入到監(jiān)控攔截程序中運行,監(jiān)控攔截程序分析svcmgr_handler O函數(shù)的參數(shù)中的內容,獲取到請求資源的信息和發(fā)出請求的應用信息; 監(jiān)控攔截程序首先判斷中斷號是否來自加入的斷點,判斷條件為:
(ARM_pc>=int_addr)&&ARM_pc<=(int_addr+Oxf) 其中ARM_pc是寄存器中下一條指令的地址,int_addr為斷點注入地址; 如果滿足判斷條件,說明攔截到的中斷來自加入的斷點,存儲相應資源信息和請求者的信息到對應寄存器中,然后進入步驟2);如果不滿足判斷條件,正常調用ServiceManager分配系統(tǒng)資源; 2)、獲取請求資源的信息,判斷是否為敏感資源;如果為敏感系統(tǒng)資源,彈出對話框,提示用戶,根據(jù)用戶的選擇,進行相應的處理;否則,繼續(xù)執(zhí)行ServiceManager執(zhí)行系統(tǒng)資源的調用。
2.根據(jù)權利要求1所述的一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,所述敏感系統(tǒng)資源為攝像頭、麥克風、藍牙、WIF1、短信的發(fā)送或GPS。
3.根據(jù)權利要求1所述的一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,步驟2)中如果系統(tǒng)調用敏感資源,則從對應寄存器中讀取申請者信息,通過socket發(fā)送給上層,彈出對話框 ,提示用戶應用名和所申請的資源,供用戶選擇是禁止還是允許此次申請;若禁止此次申請,貝1J跳出ServiceManager阻止系統(tǒng)資源的訪問,若允許此次申請,則繼續(xù)執(zhí)行ServiceManager,允許資源的調用。
4.根據(jù)權利要求1所述的一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,監(jiān)控攔截程序的監(jiān)控代碼注入的起始地址和偏移地址為ServiceManager處理資源請求的起始地址和偏移地址。
5.根據(jù)權利要求1所述的一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,所述一種面向Android系統(tǒng)資源的訪問控制方法應用于Android4.1中。
6.根據(jù)權利要求1所述的一種面向Android系統(tǒng)資源的訪問控制方法,其特征在于,監(jiān)控攔截程序的監(jiān)控代碼注入包括以下步驟: a)、獲取ServiceManager的代碼注入地址,包含ServiceManager處理資源請求的起始地址和偏移地址; b)、保存狀態(tài),執(zhí)行系統(tǒng)調用getpidO注入監(jiān)控攔截程序的監(jiān)控代碼到ServiceManager 中。
【文檔編號】G06F21/55GK103699835SQ201310675959
【公開日】2014年4月2日 申請日期:2013年12月11日 優(yōu)先權日:2013年12月11日
【發(fā)明者】桂小林, 代敏, 郭岳龍, 趙建強, 田豐, 林建財, 安健 申請人:西安交通大學