一種分析Android應用程序的方法和系統(tǒng)的制作方法
【技術(shù)領域】
[0001]本發(fā)明涉及信息安全,并且尤其涉及分析Android應用程序的方法和系統(tǒng)。
【背景技術(shù)】
[0002]在現(xiàn)有技術(shù)中,查明隱私泄露通常在隱私泄露事件發(fā)生后進行。例如,在運行Android平臺的設備發(fā)生了隱私泄露之后,對Android平臺上的應用程序進行分析檢測(例如分析檢測該應用程序使用過的資源,收發(fā)過的數(shù)據(jù))從而查明隱私泄露。
[0003]現(xiàn)有的技術(shù)方案根據(jù)應用程序運行的結(jié)果數(shù)據(jù)以補救的形式來處理隱私泄露,應對時間滯后而且無法預防隱私泄露。因此,需要一種能夠預防隱私泄露的技術(shù)方案。
【發(fā)明內(nèi)容】
[0004]根據(jù)本發(fā)明的一個目的,公開一種分析Android應用程序的方法,包括以下步驟: 運行前靜態(tài)分析,該步驟包括:
提取應用程序文件中的涉及邏輯流程的二進制文件,
對該二進制文件進行反編譯得到反編譯代碼,
對該反編譯代碼進行隱私泄露分析,識別可能涉及隱私泄露的指令。
[0005]優(yōu)選地,上述隱私泄露分析步驟包括:
在反編譯代碼中查找涉及隱私數(shù)據(jù)的關(guān)鍵指令,
判斷關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令是否執(zhí)行與外界進行數(shù)據(jù)交換的操作,將關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令中的執(zhí)行與外界進行數(shù)據(jù)交換的操作的指令標記為可能涉及隱私泄露的指令。
[0006]優(yōu)選地,該方法還包括以下步驟:
運行中動態(tài)分析,該步驟包括:
記錄應用程序在運行時的動態(tài)數(shù)據(jù),
分析動態(tài)數(shù)據(jù)的行為,識別涉及隱私泄露的行為。
[0007]優(yōu)選地,分析動態(tài)數(shù)據(jù)的行為的步驟包括:
分析動態(tài)數(shù)據(jù)中的與通過靜態(tài)分析識別的可能涉及隱私泄露的指令相關(guān)的部分, 根據(jù)預定的分析算法識別涉及隱私泄露的行為。
[0008]優(yōu)選地,上述隱私泄露分析步驟還包括:
生成靜態(tài)分析報告。
[0009]優(yōu)選地,運行中動態(tài)分析的步驟還包括:
生成隱私泄露安全分析報告。
[0010]根據(jù)本發(fā)明的一個目的,公開一種分析Android應用程序的系統(tǒng),包括:
運行前靜態(tài)分析裝置,該裝置包括:
提取單元,用于提取應用程序文件中的涉及邏輯流程的二進制文件,
反編譯單元,用于對該二進制文件進行反編譯得到反編譯代碼, 第一分析單元,用于對該反編譯代碼進行隱私泄露分析,識別可能涉及隱私泄露的指令。
[0011]優(yōu)選地,所述第一分析單元被配置成:
在反編譯代碼中查找涉及隱私數(shù)據(jù)的關(guān)鍵指令,
判斷關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令是否執(zhí)行與外界進行數(shù)據(jù)交換的操作,將關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令中的執(zhí)行與外界進行數(shù)據(jù)交換的操作的指令標記為可能涉及隱私泄露的指令。
[0012]優(yōu)選地,該系統(tǒng)還包括:
運行中動態(tài)分析裝置,該裝置包括:
監(jiān)控單元,用于記錄應用程序在運行時的動態(tài)數(shù)據(jù),
第二分析單元,用于分析動態(tài)數(shù)據(jù)的行為,識別涉及隱私泄露的行為。
[0013]優(yōu)選地,所述第二分析單元被配置成:
分析動態(tài)數(shù)據(jù)中的與通過靜態(tài)分析識別的可能涉及隱私泄露的指令相關(guān)的部分, 根據(jù)預定的分析算法識別涉及隱私泄露的行為。
[0014]優(yōu)選地,所述第一分析單元還被配置成:
生成靜態(tài)分析報告。
[0015]優(yōu)選地,所述第二分析單元還被配置成:
生成隱私泄露安全分析報告。
[0016]本發(fā)明的一個優(yōu)勢在于,能夠進行運行前靜態(tài)分析與運行時動態(tài)分析來檢測隱私泄露。本發(fā)明的一個優(yōu)勢在于,能夠綜合使用運行前靜態(tài)分析和運行過程中觸發(fā)應用程序的行為的動態(tài)分析,根據(jù)預定的算法分析統(tǒng)計應用中涉及到隱私泄露的相關(guān)指令及其操作從而判定是否存隱私泄露。本發(fā)明的一個優(yōu)勢在于,生成隱私泄露分析報告。本發(fā)明的一個優(yōu)勢在于,能夠在應用程序的層面對隱私數(shù)據(jù)的泄漏進行檢測,無需對Android系統(tǒng)底層進行修改,也不會對Android系統(tǒng)造成額外的負擔。
【附圖說明】
[0017]在參照附圖閱讀了本發(fā)明的【具體實施方式】以后,本領域技術(shù)人員將會更清楚地了解本發(fā)明的各個方面。本領域技術(shù)人員應當理解的是,這些附圖僅僅用于配合【具體實施方式】說明本發(fā)明的技術(shù)方案,而并非意在對本發(fā)明的保護范圍構(gòu)成限制。
[0018]圖1是根據(jù)本發(fā)明一個實施例的分析Android應用程序的方法的步驟示意圖。
[0019]圖2是根據(jù)本發(fā)明一個實施例的分析Android應用程序的方法的步驟示意圖。
[0020]圖3是根據(jù)本發(fā)明一個實施例的分析Android應用程序的方法的步驟示意圖。
[0021]圖4是根據(jù)本發(fā)明一個實施例的分析Android應用程序的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0022]下面參照附圖,對本發(fā)明的【具體實施方式】作進一步的詳細描述。在下面的描述中,為了解釋的目的,陳述許多具體細節(jié)以便提供對實施例的一個或多個方面的透徹理解。然而,對于本領域技術(shù)人員可以顯而易見的是,可以這些具體細節(jié)的較少程度來實踐各實施例的一個或多個方面。因此下面的描述不被視為局限性的,而是通過所附權(quán)利要求來限定保護范圍。
[0023]圖1是根據(jù)本發(fā)明一個實施例的分析Android應用程序的方法的步驟示意圖。如圖所示,該方法包括以下步驟:
步驟101:提取應用程序文件中的涉及邏輯流程的二進制文件,
步驟102:對該二進制文件進行反編譯得到反編譯代碼,
步驟103:對該反編譯代碼進行隱私泄露分析,識別可能涉及隱私泄露的指令。
[0024]上述3個步驟是應用程序的運行前靜態(tài)分析。這里,隱私泄露是指將關(guān)于Android設備和用戶的敏感信息泄露給第三方的情況。
[0025]圖2是根據(jù)本發(fā)明另一個實施例的分析Android應用程序的方法的步驟示意圖。圖2進一步描述關(guān)于圖1中步驟103的情況。如圖所示,隱私泄露分析步驟包括:
步驟1031:在反編譯代碼中查找涉及隱私數(shù)據(jù)的關(guān)鍵指令,
步驟1032:判斷關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令是否執(zhí)行與外界進行數(shù)據(jù)交換的操作,
步驟1033:將關(guān)鍵指令和與該關(guān)鍵指令相關(guān)的其它指令中的執(zhí)行與外界進行數(shù)據(jù)交換的操作的指令標記為可能涉及隱私泄露的指令。
[0026]這里,與外界進行數(shù)據(jù)交換是指與第三方進行隱私數(shù)據(jù)的交換。在一個示例中,可以生成靜態(tài)分析報告。
[0027]圖3是根據(jù)本發(fā)明另一個實施例的分析Android應用程序的方