一種Android應(yīng)用軟件相似性的檢測(cè)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)安全技術(shù)領(lǐng)域,具體涉及一種針對(duì)移動(dòng)平臺(tái)Android系統(tǒng)下應(yīng) 用軟件相似性的檢測(cè)方法及裝置。
【背景技術(shù)】
[0002] 隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,Android平臺(tái)的新應(yīng)用也層出不窮。智能移動(dòng)設(shè)備的便 利性使其成為了很多人生活、工作和學(xué)習(xí)不可獲取的一部分,例如:購(gòu)物、導(dǎo)航等。但是近幾 年針對(duì)Android應(yīng)用軟件使用重打包技術(shù)來(lái)對(duì)其注入惡意代碼或廣告代碼的行為使我們 不得不更多地考慮Android應(yīng)用軟件的安全問(wèn)題。根據(jù)《騰訊移動(dòng)安全實(shí)驗(yàn)室2014年上半 年手機(jī)安全報(bào)告》,2014年上半年,全國(guó)Android病毒感染用戶(hù)數(shù)達(dá)到8923. 52萬(wàn),是2012 年全年Android手機(jī)染毒用戶(hù)的3. 68倍;2014年上半年Android手機(jī)染毒用戶(hù)數(shù)是2013 年上半年的2. 28倍,同比增長(zhǎng)128%。而這些Android惡意軟件絕大多數(shù)是通過(guò)重打包技 術(shù)注入到正常應(yīng)用軟件中的。
[0003] Android的安裝時(shí)權(quán)限模型決定了程序一旦發(fā)布其權(quán)限就必然固定,可以在任何 時(shí)刻進(jìn)行審查,固定的權(quán)限也決定了程序的功能已經(jīng)固定。在Android操作系統(tǒng)中,并沒(méi)有 傳統(tǒng)意義上的進(jìn)程,而是系統(tǒng)預(yù)定義的各種組件,這些組件實(shí)際上都是Android系統(tǒng)的回 調(diào)模塊。為了讓系統(tǒng)回調(diào)這些模塊,Android應(yīng)用軟件需要首先注冊(cè)這些組件,而絕大部分 都要求是顯示的靜態(tài)注冊(cè)。Android應(yīng)用軟件的資源包括了字符串、圖片、布局等。Android 應(yīng)用軟件的代碼布局可以使用圖來(lái)表示,節(jié)點(diǎn)為方法與域,節(jié)點(diǎn)包含的屬性為方法與域所 屬的類(lèi),邊為方法與方法、方法與域的引用關(guān)系。
[0004] Android平臺(tái)的應(yīng)用軟件使用Java語(yǔ)言編寫(xiě),但Java語(yǔ)言的特性導(dǎo)致Android應(yīng) 用軟件容易被逆向和破解,通過(guò)ApkTool等工具可以很容易獲得Android應(yīng)用軟件的代碼 與資源文件。同時(shí),Android平臺(tái)允許應(yīng)用程序的開(kāi)發(fā)者使用自己的證書(shū)對(duì)安裝包進(jìn)行簽 名,也允許系統(tǒng)從第三方應(yīng)用市場(chǎng)中安裝應(yīng)用。因此,當(dāng)Android應(yīng)用軟件被逆向后,可以 修改其代碼與資源等文件,重新簽名生成新的安裝包,發(fā)布到第三方應(yīng)用市場(chǎng)供用戶(hù)安裝 使用。很多惡意軟件與廣告軟件開(kāi)發(fā)者利用該方法,將正常軟件中植入惡意代碼或廣告代 碼,達(dá)到更加廣泛的傳播并欺騙用戶(hù)安裝使用的目的,以獲取更多利益。
[0005] 由于惡意代碼與廣告代碼都是一個(gè)相對(duì)獨(dú)立的模塊,為保證原應(yīng)用軟件的正常使 用,重打包過(guò)程通常不會(huì)對(duì)原應(yīng)用軟件做大量修改,這使得對(duì)重打包植入惡意代碼或廣告 代碼的軟件進(jìn)行檢測(cè)成為了可能。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的技術(shù)問(wèn)題在于克服現(xiàn)有技術(shù)針對(duì)傳統(tǒng)的以API作為關(guān)鍵詞或?qū)?代碼進(jìn)行模糊哈希的方法來(lái)進(jìn)行相似性檢測(cè)的不足,提供一種基于權(quán)限相似性、組件相似 性、資源相似性以及代碼圖相似性結(jié)合的Android應(yīng)用軟件相似性檢測(cè)方法及裝置,有效 地檢測(cè)通過(guò)重打包技術(shù)植入惡意代碼或廣告代碼的Android應(yīng)用軟件,保護(hù)Android應(yīng)用 軟件開(kāi)發(fā)者與用戶(hù)的利益。
[0007] 本發(fā)明具體采用如下技術(shù)方案:
[0008] -種Android應(yīng)用軟件相似性檢測(cè)方法,用于判斷待檢測(cè)應(yīng)用軟件是否由目標(biāo)軟 件重打包而得,其流程如圖1所示,包括以下步驟:
[0009] 步驟1.將待檢測(cè)的應(yīng)用軟件安裝包進(jìn)行解包反編譯,獲得代碼、布局與資源文 件;
[0010] 步驟2.從解包反編譯后的布局文件中提取應(yīng)用程序的權(quán)限信息,并將該待檢測(cè) 應(yīng)用軟件的權(quán)限與目標(biāo)軟件的權(quán)限進(jìn)行相似性檢測(cè);
[0011] 步驟3.從解包反編譯后的布局文件中提取應(yīng)用程序的組件信息,并將該待檢測(cè) 應(yīng)用軟件的組件與目標(biāo)軟件的組件進(jìn)行相似性檢測(cè);
[0012] 步驟4.從解包反編譯后的資源文件中提取應(yīng)用程序的資源信息,并將該待檢測(cè) 應(yīng)用軟件的資源與目標(biāo)軟件的資源進(jìn)行相似性檢測(cè);
[0013] 步驟5.從解包反編譯后的代碼文件中提取代碼圖信息,并將該待檢測(cè)應(yīng)用軟件 的代碼圖與目標(biāo)軟件的代碼圖進(jìn)行相似性檢測(cè);
[0014] 步驟6.若所述待檢測(cè)應(yīng)用軟件的權(quán)限、組件、資源及代碼圖均與目標(biāo)軟件相應(yīng)的 權(quán)限、組件、資源及代碼圖相似,則判定該待檢測(cè)應(yīng)用軟件由所述的目標(biāo)軟件重打包而得。
[0015] 步驟1中所述的對(duì)安裝包進(jìn)行解包反編譯,具體包括解包過(guò)程與反編譯過(guò)程; Android應(yīng)用程序安裝包即APK格式文件,是一種ZIP格式的壓縮文件;所述解包過(guò)程 指從應(yīng)用程序安裝包文件中得到編譯后的代碼文件classes, dex、編譯后的資源文件 resources, arse、編譯后的布局文件AndroidManifest. xml ;所述反編譯過(guò)程指從上述 已編譯的文件獲得相應(yīng)的未編譯的文件,即獲得smali代碼文件、各xml資源文件以及 AndroidManifest. xml 布局文件。
[0016] 步驟2中所述的提取權(quán)限信息是指從AndroidManifest. xml文件中提取出 〈uses-permission〉節(jié)點(diǎn)的字符串,該字符串描述了應(yīng)用軟件所申請(qǐng)的權(quán)限,將提取的字符 串構(gòu)建成該待檢測(cè)應(yīng)用軟件的權(quán)限集合;所述的權(quán)限相似性檢測(cè)如圖4所示,記目標(biāo)應(yīng)用 軟件的權(quán)限集合集合為P1,檢測(cè)應(yīng)用軟件的權(quán)限集合為P2,若滿(mǎn)足關(guān)系Pl G P2,則判定待 檢測(cè)應(yīng)用軟件的權(quán)限與目標(biāo)應(yīng)用軟件的權(quán)限相似。
[0017] 步驟3所述的提取組件信息是指從AndroidManifest. xml文件中提取 〈activity〉、〈service〉、〈receiver〉節(jié)點(diǎn)的字符串,上述三個(gè)字符串分別描述了應(yīng)用軟件 中的Activity組件、Service組件與BroadcastReceiver組件,將提取的字符串構(gòu)建該待 檢測(cè)應(yīng)用軟件的組件集合;所述的組件相似性檢測(cè)如圖5所示,記目標(biāo)應(yīng)用軟件的權(quán)限集 合為P1,待檢測(cè)應(yīng)用軟件的權(quán)限集合為P2,若滿(mǎn)足關(guān)系Pl E P2·則判定待檢測(cè)應(yīng)用軟件的 權(quán)限與目標(biāo)應(yīng)用軟件的權(quán)限相似。
[0018] 步驟4所述的提取資源信息是指從各xml文件中提取出字符串、布局、圖片信息, 字符串信息位于strings, xml文件,布局信息位于layout目錄下的各xml文件,圖片信息 位于drawable目錄,將提取的資源信息構(gòu)建該待檢測(cè)應(yīng)用軟件的資源集合;所述的資源相 似性檢測(cè)如圖6所示,記目標(biāo)應(yīng)用軟件的資源集合為Rl,待檢測(cè)應(yīng)用軟件的資源集合為R2, 若滿(mǎn)足關(guān)系Rl ^ R2,則判定待檢測(cè)應(yīng)用軟件的資源與目標(biāo)應(yīng)用軟件的資源相似。
[0019] 步驟5所述的提取代碼圖信息是指從smali代碼文件中提取類(lèi)、方法、域以及方法 與類(lèi)的包含關(guān)系、域與類(lèi)的包含關(guān)系、方法與方法的引用關(guān)系、域與方法的引用關(guān)系,以方 法與域作為圖的兩種節(jié)點(diǎn),方法與域所屬的類(lèi)作為該節(jié)點(diǎn)的屬性,方法與方法、方法與域的 引用關(guān)系作為節(jié)點(diǎn)之間的邊,形成一個(gè)描述了代碼布局與關(guān)系有向圖作為代碼圖;所述的 代碼圖相似性檢測(cè)如圖7所示,記目標(biāo)應(yīng)用軟件的代碼圖為G1,待檢測(cè)應(yīng)用軟件的代碼圖 為G2,若Gl為G2的子圖,則判定待檢測(cè)應(yīng)用軟件的代碼圖與目標(biāo)應(yīng)用軟件的代碼圖相似。
[0020] 本發(fā)明還提供了一種實(shí)現(xiàn)上述Android應(yīng)用軟件相似性檢測(cè)方法的裝置,其結(jié)構(gòu) 如圖2所示,包括標(biāo)準(zhǔn)軟件庫(kù)模塊、爬蟲(chóng)模塊、信息提取模塊、相似性判斷模塊。
[0021] 所述標(biāo)準(zhǔn)軟件庫(kù)模塊用于存儲(chǔ)Android平臺(tái)各應(yīng)用軟件的官方版本,作為相似性 檢測(cè)的基準(zhǔn);
[0022] 所述爬蟲(chóng)模塊用于通過(guò)網(wǎng)絡(luò)從各應(yīng)用軟件的官方網(wǎng)站下載軟件的最新版本至標(biāo) 準(zhǔn)軟件庫(kù),保證標(biāo)準(zhǔn)軟件庫(kù)模塊中的應(yīng)用軟件最新最全;
[0023] 所述信息提取模塊用于提取被檢測(cè)樣本與標(biāo)準(zhǔn)軟件的權(quán)限、組件、資源以及代碼 圖信息;
[0024] 所述相似性判斷模塊用于對(duì)信息提取模塊提取的各種信息與標(biāo)準(zhǔn)軟件庫(kù)模塊中 各軟件官方版本的相應(yīng)信息進(jìn)行相似性判斷并輸出相似性檢測(cè)結(jié)果:若所述待檢測(cè)應(yīng)用軟 件的權(quán)限、組件、資源及代碼圖均與標(biāo)準(zhǔn)軟件庫(kù)中某一標(biāo)準(zhǔn)軟件相應(yīng)的權(quán)限、組件、資源及 代碼圖相似,則判定該待檢測(cè)應(yīng)用軟件由所述的標(biāo)準(zhǔn)軟件重打包而得。
[0025] 本發(fā)明的有益效果是:
[0026] 1、本發(fā)明從權(quán)限、組件、資源、代碼圖四個(gè)方面進(jìn)行相似性判定,使得結(jié)果更加準(zhǔn) 確;
[0027] 2、本發(fā)明使用代碼圖,包含了代碼中類(lèi)、方法、域的關(guān)系,不受代碼混淆的影響;
[0028] 3、本發(fā)明能夠獲得最新最全的標(biāo)準(zhǔn)軟件,保證檢測(cè)結(jié)果的有效性。
【附圖說(shuō)明】
[0029] 圖1是本發(fā)明Android應(yīng)用軟件相似性檢測(cè)方法流程圖;
[0030] 圖2是本發(fā)明Android應(yīng)用軟件相似性檢測(cè)裝置結(jié)構(gòu)