專利名稱::檢測惡意軟件的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機及通信
技術(shù)領(lǐng)域:
,尤其涉及一種檢測惡意軟件的方法、ー種建立惡意軟件特征數(shù)據(jù)庫的方法、一種檢測惡意軟件的裝置及ー種建立惡意軟件特征數(shù)據(jù)庫的裝置。
背景技術(shù):
:安卓(Android)是由谷歌(Google)公司發(fā)布的ー種以Linux系統(tǒng)為核心的、適用于移動終端的操作系統(tǒng)。Android是ー種開放式的操作系統(tǒng),允許除谷歌和移動終端廠商之外的第三方開發(fā)者使用多種編程語言來開發(fā)基于Android平臺的應(yīng)用軟件,這ー特性使得其成為目前使用最為廣泛的手機操作系統(tǒng)。隨著基于Android平臺的應(yīng)用軟件數(shù)量的急劇增長,基于Android平臺的惡意軟件也越來越多,這些惡意軟件可以導(dǎo)致用戶隱私信息被泄露,影響用戶使用。由于目前絕大多數(shù)移動終端都具備連接互聯(lián)網(wǎng)的功能,基于Android平臺的惡意軟件主要是通過網(wǎng)絡(luò)傳播,用戶從互聯(lián)網(wǎng)下載惡意軟件到移動終端并安裝惡意軟件之后,惡意軟件可以將收集到的用戶隱私信息,例如電話薄、本地短信郵箱中的短信等,通過短信或郵件發(fā)送至預(yù)先指定的接收端。針對上述工作原理,現(xiàn)有技術(shù)主要通過網(wǎng)站審核、網(wǎng)關(guān)阻斷和移動終端掃描等技術(shù)來防止基于Android平臺的惡意軟件傳播。現(xiàn)有在網(wǎng)絡(luò)側(cè)對基于Android平臺的惡意軟件進行檢測的原理是檢測設(shè)備首先對待識別的基于Android平臺的應(yīng)用軟件(簡稱待識別應(yīng)用軟件)的apk壓縮包的內(nèi)容進行哈希(hash)運算,獲取運算結(jié)果MD5值,所述apk壓縮包中包括資源文件、dex字節(jié)碼文件、配置文件和界面布局文件等等。然后將所述hash運算獲得的MD5值,與對已知惡意軟件的特征值進行比較,若比較一致,則確定所述待識別應(yīng)用軟件為惡意軟件;否則,確定所述待識別應(yīng)用軟件為正常軟件。所述已知惡意軟件的特征值是指對已知惡意軟件apk壓縮包的內(nèi)容進行hash運算獲得的MD5值。發(fā)明人在實現(xiàn)本發(fā)明過程中發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下問題惡意軟件的傳播者人為修改待識別應(yīng)用軟件apk壓縮包的部分字節(jié),導(dǎo)致其內(nèi)容發(fā)生改變,進一歩使檢測設(shè)備對其進行hash運算后的結(jié)果發(fā)生改變,在進行特征值匹配時與已知惡意軟件的特征值不同,從而達到逃避檢測的目的。
發(fā)明內(nèi)容本發(fā)明實施例提供一種檢測惡意軟件的方法,用以解決現(xiàn)有技術(shù)對基于Android平臺的惡意軟件進行檢測時,準(zhǔn)確性較低問題。對應(yīng)地,本發(fā)明實施例還提供了ー種建立惡意軟件特征數(shù)據(jù)庫的方法、一種檢測惡意軟件的裝置和ー種建立惡意軟件特征數(shù)據(jù)庫的裝置。本發(fā)明實施例提供的技術(shù)方案如下一種檢測惡意軟件的方法,包括對待檢測應(yīng)用軟件的壓縮包進行解析,提取其中包含的可執(zhí)行文件,井根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值;將計算得到的唯一標(biāo)識值與已知惡意軟件的特征值進行比較,所述特征值是指對已知基于Android平臺的惡意軟件可執(zhí)行文件中的特征內(nèi)容,采用所述預(yù)定算法計算后,獲得的唯一標(biāo)識值;若比較結(jié)果一致,則確定所述待檢測應(yīng)用軟件為基于Android平臺的惡意軟件。ー種建立惡意軟件特征數(shù)據(jù)庫的方法,包括接收輸入的已知基于Android平臺的惡意軟件樣本;對所述惡意軟件樣本進行解析,提取其中包含的可執(zhí)行文件;根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述惡意軟件功能必要的內(nèi)容;采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值,作為所述惡意軟件樣本的特征值;并存儲所述特征值。一種檢測惡意軟件的裝置,其特征在于,包括第一解析単元,用于對待檢測應(yīng)用軟件的壓縮包進行解析,提取其中包含的可執(zhí)行文件;第一獲取單元,用于根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從第一解析単元解析出的所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;第一運算單元,用于采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值;比較單元,用于將第一運算單元得到的唯一標(biāo)識值與已知惡意軟件的特征值進行比較,所述特征值是指對已知基于Android平臺的惡意軟件可執(zhí)行文件中的特征內(nèi)容,采用所述預(yù)定算法計算后,獲得的唯一標(biāo)識值;確定單元,用于若比較單元的比較結(jié)果一致,則確定所述待檢測應(yīng)用軟件為基于Android平臺的惡意軟件。ー種建立惡意軟件特征數(shù)據(jù)庫的裝置,其特征在于,包括接收單元,用于接收輸入的已知基于Android平臺的惡意軟件樣本;第二解析単元,用于對所述惡意軟件樣本進行解析,提取其中包含的可執(zhí)行文件;第二獲取單元,用于根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從第二解析単元得到的所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述惡意軟件功能必要的內(nèi)容;第二運算單元,用于采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值,作為所述惡意軟件樣本的特征值;存儲單元,用于存儲第二運算單元得到的特征值。本發(fā)明實施例通過提取待檢測應(yīng)用軟件壓縮包中可執(zhí)行文件中的特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;然后計算提取的特征內(nèi)容的唯一標(biāo)識值,將計算得到的特征值與已知惡意軟件的特征碼進行比較,根據(jù)比較結(jié)果判斷待檢測應(yīng)用軟件是否是惡意軟件。解決了現(xiàn)有技術(shù)無法識別篡改后的惡意軟件的問題,提高了檢測的準(zhǔn)確性。為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作ー簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖Ia為本發(fā)明實施例一提供的檢測基于Android平臺的惡意軟件方法的流程圖;圖Ib為本發(fā)明實施例一提供的建立惡意軟件特征數(shù)據(jù)庫的方法的流程圖;圖2為本發(fā)明實施例ニ提供的實例的詳細(xì)流程圖;圖3為本發(fā)明實施例三提供的檢測基于Android平臺的惡意軟件的裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例三提供的建立惡意軟件特征數(shù)據(jù)庫的裝置的結(jié)構(gòu)示意圖。具體實施例方式基于Android平臺的應(yīng)用軟件中,用于實現(xiàn)該應(yīng)用軟件功能的方法(也被稱為函數(shù))是封裝在可執(zhí)行文件中的,目前來說,大多數(shù)Android平臺上的可執(zhí)行文件為dex字節(jié)碼文件。在應(yīng)用軟件運行時,通過執(zhí)行其中的dex字節(jié)碼文件來實現(xiàn)該應(yīng)用軟件的功能。在Android平臺上開發(fā)應(yīng)用軟件時,通常使用java語言,對工程文件進行編譯后生成一個壓縮文件包,通常大多數(shù)為apk格式的壓縮文件包,對apk壓縮包進行解壓縮后,解壓縮結(jié)果中包含ー個dex格式的字節(jié)碼文件,dex字節(jié)碼文件是在Dalvik虛擬機上執(zhí)行的一種可執(zhí)行文件,其中Dalvik虛擬機是Android操作系統(tǒng)中用于運行應(yīng)用軟件的應(yīng)用環(huán)境。為了便于Dalvik虛擬機中的解析器進行解析,每個dex文件的內(nèi)容都符合統(tǒng)ー的結(jié)構(gòu)格式。表I為dex文件結(jié)構(gòu)格式中文件頭DexHeader部分的簡要描述。通過解析DexHeader可以獲得字符串集合列表Stringtable、類集合列表classlist、域集合列表fieldtable、方法集合列表methodtable、類定義集合列表classdefinitiontable等各部分的內(nèi)容在dex文件中的存儲地址,繼而獲取各部分內(nèi)容。每部分內(nèi)容也都符合統(tǒng)ー的結(jié)構(gòu)格式,例如方法集合列表methodtable在dex文件中的存儲格式如表2所示,字符串集合列表Stringtable內(nèi)容如表3所示。通過上述結(jié)構(gòu)可以在應(yīng)用軟件運行過程中實現(xiàn)方法調(diào)用,例如在應(yīng)用軟件運行過程中,若調(diào)用到某種方法,則會通過查找DexHeader獲得methodtable的存儲位置Absoluteoffsetofthemethodtable,其中methodtable中存儲了每個方法的描述信息(描述信息中不僅包含該方法的參數(shù),還包括代碼執(zhí)行語句),而姆個方法描述信息的長度是相同的,例如64k,根據(jù)methodtable的存儲位置,結(jié)合DexHeader中指不的方法的數(shù)量Numberofmethodsinthemethodtable,可以得到姆個方法的描述信息的存儲位置。再根據(jù)methodtable的存儲位置查找到methodtable后,根據(jù)methodtable中姆個方法method描述信息中的ー些參數(shù),例如方法歸屬的類名Classindexoftheclassthisfieldbelongsto、方法名稱Stringindexofthemethodname等,找到待調(diào)用的方法的描述信息,執(zhí)行該描述信息中的代碼執(zhí)行語句,從而實現(xiàn)方法調(diào)用。表I權(quán)利要求1.一種檢測惡意軟件的方法,其特征在于,包括對待檢測應(yīng)用軟件的壓縮包進行解析,提取其中包含的可執(zhí)行文件,并根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值;將計算得到的唯一標(biāo)識值與已知惡意軟件的特征值進行比較,所述特征值是指對已知基于Android平臺的惡意軟件可執(zhí)行文件中的特征內(nèi)容,采用所述預(yù)定算法計算后,獲得的唯一標(biāo)識值;若比較結(jié)果一致,則確定所述待檢測應(yīng)用軟件為基于Android平臺的惡意軟件。2.如權(quán)利要求I所述的方法,其特征在于,所述應(yīng)用軟件的壓縮包為apk壓縮包,所述可執(zhí)行文件為dex字節(jié)碼文件。3.如權(quán)利要求2所述的方法,其特征在于,所述特征內(nèi)容包括方法集合列表的內(nèi)容、類集合列表的內(nèi)容、字符串集合列表的內(nèi)容中的任意一種、或多種的組合。4.如權(quán)利要求2或3所述的方法,其特征在于,所述特征內(nèi)容為方法集合列表的內(nèi)容,所述根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,包括根據(jù)dex字節(jié)碼文件結(jié)構(gòu)格式,從dex字節(jié)碼文件頭中用于描述方法集合列表的地址的字段中讀取第一數(shù)據(jù),從dex字節(jié)碼文件頭中用于描述方法集合列表中方法數(shù)目的字段中讀取第二數(shù)據(jù);將所述第二數(shù)據(jù)與每個方法描述信息的預(yù)定長度相乘;從所述dex字節(jié)碼文件中,以第一數(shù)據(jù)指示的數(shù)據(jù)為起始地址,讀取相乘結(jié)果所指示長度的數(shù)據(jù)作為方法集合列表的內(nèi)容。5.一種建立惡意軟件特征數(shù)據(jù)庫的方法,其特征在于,包括接收輸入的已知基于Android平臺的惡意軟件樣本;對所述惡意軟件樣本進行解析,提取其中包含的可執(zhí)行文件;根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述惡意軟件功能必要的內(nèi)容;采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值,作為所述惡意軟件樣本的特征值;并存儲所述特征值。6.如權(quán)利要求5所述的方法,其特征在于,所述應(yīng)用軟件的壓縮包為apk壓縮包,所述可執(zhí)行文件為dex字節(jié)碼文件。7.如權(quán)利要求6所述的方法,其特征在于,所述特征內(nèi)容包括方法集合列表的內(nèi)容、類集合列表的內(nèi)容、字符串集合列表的內(nèi)容中的任意一種、或多種的組合。8.如權(quán)利要求6或7所述的方法,其特征在于,所述特征內(nèi)容為方法集合列表的內(nèi)容,所述根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,包括根據(jù)dex字節(jié)碼文件結(jié)構(gòu)格式,從dex字節(jié)碼文件頭中用于描述方法集合列表的地址的字段中讀取第一數(shù)據(jù),從dex字節(jié)碼文件頭中用于描述方法集合列表中方法數(shù)目的字段中讀取第二數(shù)據(jù);將所述第二數(shù)據(jù)與每個方法描述信息的預(yù)定長度相乘;以第一數(shù)據(jù)指示的數(shù)據(jù)為起始地址,讀取相乘結(jié)果指示的長度的數(shù)據(jù)作為方法集合列表的內(nèi)容。9.一種檢測惡意軟件的裝置,其特征在于,包括第一解析單元,用于對待檢測應(yīng)用軟件的壓縮包進行解析,提取其中包含的可執(zhí)行文件;第一獲取單元,用于根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從第一解析單元解析出的所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;第一運算單元,用于采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值;比較單元,用于將第一運算單元得到的唯一標(biāo)識值與已知惡意軟件的特征值進行比較,所述特征值是指對已知基于Android平臺的惡意軟件可執(zhí)行文件中的特征內(nèi)容,采用所述預(yù)定算法計算后,獲得的唯一標(biāo)識值;確定單元,用于若比較單元的比較結(jié)果一致,則確定所述待檢測應(yīng)用軟件為基于Android平臺的惡意軟件。10.如權(quán)利要求9所述的裝置,其特征在于,所述應(yīng)用軟件的壓縮包為apk壓縮包,所述可執(zhí)行文件為dex字節(jié)碼文件時,第一獲取單元具體用于從所述可執(zhí)行文件中獲取方法集合列表的內(nèi)容、類集合列表的內(nèi)容、字符串集合列表的內(nèi)容中的任意一種、或多種的組合。11.一種建立惡意軟件特征數(shù)據(jù)庫的裝置,其特征在于,包括接收單元,用于接收輸入的已知基于Android平臺的惡意軟件樣本;第二解析單元,用于對所述惡意軟件樣本進行解析,提取其中包含的可執(zhí)行文件;第二獲取單元,用于根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從第二解析單元得到的所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述惡意軟件功能必要的內(nèi)容;第二運算單元,用于采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值,作為所述惡意軟件樣本的特征值;存儲單元,用于存儲第二運算單元得到的特征值。全文摘要本發(fā)明公開了一種檢測惡意軟件的方法和裝置,用以解決現(xiàn)有技術(shù)對基于Android平臺的惡意軟件進行檢測時,準(zhǔn)確性較低問題。該方法包括對待檢測應(yīng)用軟件的壓縮包進行解析,提取其中包含的可執(zhí)行文件,并根據(jù)可執(zhí)行文件的結(jié)構(gòu)格式,從所述可執(zhí)行文件中獲取特征內(nèi)容,所述特征內(nèi)容是指完成所述待識別應(yīng)用軟件功能必要的內(nèi)容;采用預(yù)定算法,計算所述特征內(nèi)容的唯一標(biāo)識值;將計算得到的唯一標(biāo)識值與已知惡意軟件的特征值進行比較,所述特征值是指對已知基于Android平臺的惡意軟件可執(zhí)行文件中的特征內(nèi)容,采用所述預(yù)定算法計算后,獲得的唯一標(biāo)識值;若比較結(jié)果一致,則確定所述待檢測應(yīng)用軟件為基于Android平臺的惡意軟件。文檔編號G06F21/00GK102663281SQ20121007004公開日2012年9月12日申請日期2012年3月16日優(yōu)先權(quán)日2012年3月16日發(fā)明者張子芳申請人:成都市華為賽門鐵克科技有限公司