1.一種基于層次式simhash的Android惡意代碼檢測(cè)和分類方法,其特征在于:包括以下步驟:
步驟一,惡意代碼檢測(cè)和惡意家族的訓(xùn)練集,過(guò)程如下:
對(duì)已知各個(gè)惡意家族中的惡意應(yīng)用程序進(jìn)行分層次提取,分別從xml文件、smali代碼、smali代碼指令集、java代碼、java代碼指令集這5個(gè)方面分析應(yīng)用程序,從而對(duì)每一個(gè)應(yīng)用程序建立5個(gè)特征,對(duì)每個(gè)惡意家族,建立由該家族中惡意應(yīng)用程序組成的5個(gè)特征集,從而形成各個(gè)惡意家族的分類模型;
在形成設(shè)定量的惡意家族模型之后,使用投票算法計(jì)算每一層的可信度,經(jīng)過(guò)設(shè)定數(shù)量的訓(xùn)練之后,得出每一層的可信度權(quán)重;
步驟二,惡意代碼檢測(cè)和惡意家族分類的測(cè)試,過(guò)程如下:
首先對(duì)待測(cè)Android應(yīng)用程序進(jìn)行分層提取,分別得到xml文件、smali代碼、smali代碼指令集、java代碼、java代碼指令集這5個(gè)方面的集合,然后進(jìn)行惡意代碼檢測(cè),若檢測(cè)出其為非惡意應(yīng)用程序,得出檢測(cè)結(jié)果,若檢測(cè)出為惡意的應(yīng)用程序,從分層得到的5個(gè)方面與步驟一得到的惡意家族模型進(jìn)行simhash相似性對(duì)比,同時(shí)使用步驟一得到的各層的可信度,分別對(duì)每一層的對(duì)比結(jié)果做加權(quán)投票分析,綜合得出一個(gè)最終結(jié)果。
2.如權(quán)利要求1所述的基于層次式simhash的Android惡意代碼檢測(cè)和分類方法,其特征在于:所述步驟一中,利用對(duì)Android惡意程序的逆向反編譯,分別提取出其中的xml文件、smali代碼集、smali代碼調(diào)用方法匯總、java代碼集、java函數(shù)與類集合一共5個(gè)投票器,分別使用simhash方法進(jìn)行檢測(cè),每一層的結(jié)果都是一個(gè)投票,最終的判定為投票選擇的結(jié)果。
3.如權(quán)利要求2所述的基于層次式simhash的Android惡意代碼檢測(cè)和分類方法,其特征在于:Android應(yīng)用程序的逆向反編譯及內(nèi)容提取的過(guò)程為:自己編寫python程序,實(shí)現(xiàn)對(duì)Android應(yīng)用程序的自動(dòng)化反編譯和信息提??;實(shí)現(xiàn)從apk文件中提取xml文件,將dex文件反編譯成smali代碼,自動(dòng)提取其中的invoke調(diào)用函數(shù)名,將smali代碼再次反編譯為java代碼,從java代碼中提取函數(shù)和類名。
4.如權(quán)利要求1~3之一所述的基于層次式simhash的Android惡意代碼檢測(cè)和分類方法,其特征在于:所述投票算法采用投票感知器算法如下:首先對(duì)每一層的算法賦予一個(gè)可信度初始值,在訓(xùn)練的時(shí)候測(cè)試每一種方法的實(shí)際準(zhǔn)確性,在每一次的訓(xùn)練中,對(duì)每一層的訓(xùn)練結(jié)果做可信度權(quán)值增加;若該次訓(xùn)練該層檢測(cè)結(jié)果正確,則該層的可信度權(quán)值加1,反之,則將該層的可信度權(quán)值減1;在經(jīng)過(guò)足夠多的訓(xùn)練結(jié)果之后,將對(duì)各層的可信程度有設(shè)定的結(jié)果;在測(cè)試時(shí),則只需將每一層的測(cè)試結(jié)果與該層的可信度相乘,然后將5層的檢測(cè)結(jié)構(gòu)做投票統(tǒng)計(jì),即得到最終結(jié)果。