午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種檢測Android惡意軟件的方法、系統(tǒng)及設(shè)備的制作方法

文檔序號(hào):6378231閱讀:422來源:國知局
專利名稱:一種檢測Android惡意軟件的方法、系統(tǒng)及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種檢測Android惡意軟件的方法、系統(tǒng)及設(shè)備。
背景技術(shù)
目前移動(dòng)終端普遍采用Android系統(tǒng),但Android系統(tǒng)的軟件發(fā)布渠道多樣且缺乏有效監(jiān)督,用戶很容易安裝惡意軟件,導(dǎo)致用戶資費(fèi)被惡意消耗、個(gè)人信息被惡意刪除,影響用戶體驗(yàn)。如此,迫切需要有效的檢測惡意軟件的方法,當(dāng)前惡意軟件常見的檢測方法包括以病毒查殺的方式進(jìn)行檢測;動(dòng)態(tài)實(shí)時(shí)監(jiān)控軟件的運(yùn)行及其與外部環(huán)境的交互,以確定該軟件是否為惡意軟件。上述采用病毒查殺的方式來檢測惡意軟件的方法,依賴于病毒特征碼,對于新發(fā)布的軟件需要人工分析出病毒特征碼,因此檢測結(jié)果存在一定的滯后期;而動(dòng)態(tài)實(shí)時(shí)檢測·的方法依賴于特定的觸發(fā)條件,若軟件中隱藏的惡意行為觸發(fā)條件復(fù)雜,則可能長時(shí)間無法檢測出該軟件是否為惡意軟件。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種檢測惡意軟件的方法、系統(tǒng)及設(shè)備,用戶無需病毒特征碼,即可利用本發(fā)明的方案對待檢測軟件中是否隱藏惡意行為,且不受軟件惡意行為觸發(fā)條件復(fù)雜與否的限制。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明提供了一種檢測Android惡意軟件的方法,該方法包括服務(wù)器模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息,與本地保存的敏感特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為;將敏感行為中被調(diào)用函數(shù)的惡意特征信息,與本地保存的惡意特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。上述方案中,所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù);所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。上述方案中,所述服務(wù)器模擬執(zhí)行待檢測軟件之前,該方法還包括服務(wù)器接收用戶通過客戶端上傳的待檢測軟件的安裝包,對安裝包中的字節(jié)碼文件進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu)并求解程序執(zhí)行路徑。上述方案中,該方法還包括服務(wù)器分析程序執(zhí)行路徑中的指令,并在所述指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播。上述方案中,該方法還包括服務(wù)器評定被惡意行為的危險(xiǎn)等級,結(jié)合惡意行為危險(xiǎn)等級生成檢測結(jié)果并保存在本地,并在模擬執(zhí)行完畢待檢測軟件后,將本地檢測結(jié)果通過客戶端用戶界面Π報(bào)告用戶。本發(fā)明還提供了一種服務(wù)器,該服務(wù)器包括模擬執(zhí)行單元,檢測規(guī)則存儲(chǔ)單元、標(biāo)識(shí)單元、敏感行為匹配單元和惡意行為匹配單元;其中,所述模擬執(zhí)行單元,用于模擬執(zhí)行待檢測軟件;所述檢測規(guī)則存儲(chǔ)單元,用于存儲(chǔ)敏感特征信息和惡意特征信息;所述敏感行為匹配單元,用于所述模擬執(zhí)行單元調(diào)用函數(shù)時(shí),將所述被調(diào)用函數(shù)的敏感特征信息與檢測規(guī)則存儲(chǔ)單元中的敏感特征信息進(jìn)行匹配;所述標(biāo)識(shí)單元,用于在所述敏感行為匹配單元匹配敏感特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為; 所述惡意行為匹配單元,用于在所述標(biāo)識(shí)單元標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為時(shí),將所述函數(shù)調(diào)用中被調(diào)用函數(shù)的惡意特征信息與檢測規(guī)則存儲(chǔ)單元中的惡意特征信息進(jìn)行匹配;所述標(biāo)識(shí)單元,還用于在所述惡意行為匹配單元匹配惡意特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。上述方案中,所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù);所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。上述方案中,該服務(wù)器還包括預(yù)處理單元、程序結(jié)構(gòu)構(gòu)建單元、程序執(zhí)行路徑求解單元和常量值分析單元;其中,所述預(yù)處理單元,用于接收用戶通過客戶端上傳的待檢測軟件的安裝包,并對安裝包中的字節(jié)碼文件進(jìn)行反匯編;所述程序結(jié)構(gòu)構(gòu)建單元,用于在所述預(yù)處理單元根據(jù)字節(jié)碼文件反匯編出程序代碼后,根據(jù)所述程序代碼構(gòu)建程序結(jié)構(gòu);所述程序執(zhí)行路徑求解單元,用于在所述程序結(jié)構(gòu)構(gòu)建單元構(gòu)建出程序結(jié)構(gòu)后,根據(jù)所述程序結(jié)構(gòu)求解程序執(zhí)行路徑;所述模擬執(zhí)行單元,具體用于根據(jù)所述程序執(zhí)行路徑求解單元求解出的程序執(zhí)行路徑,順序分析程序執(zhí)行路徑中的指令;所述常量值分析單元,用于在所述模擬執(zhí)行單元分析出程序執(zhí)行路徑中的指令為常量值引入指令時(shí),記錄引入的常量值并在程序執(zhí)行路徑中將常量值向下傳播。上述方案中,該服務(wù)器還包括危險(xiǎn)等級評定單元、檢測結(jié)果保存單元和惡意行為報(bào)告單兀;其中,所述危險(xiǎn)等級評定單元,用于在所述標(biāo)識(shí)單元標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件時(shí),評定惡意行為危險(xiǎn)等級,結(jié)合惡意行為危險(xiǎn)等級生成檢測結(jié)果;所述檢測結(jié)果保存單元,用于保存所述危險(xiǎn)等級評定單元生成的檢測結(jié)果;所述惡意行為報(bào)告單元,用于在所述模擬執(zhí)行單元模擬執(zhí)行待檢測軟件完畢后,將所述檢測結(jié)果保存單元保存的檢測結(jié)果發(fā)送給客戶端,以通過客戶端Π報(bào)告給用戶。相應(yīng)的,本發(fā)明還提供了一種Android惡意軟件檢測系統(tǒng),該系統(tǒng)包括客戶端和服務(wù)器;其中,所述客戶端,用于使用戶通過運(yùn)行在客戶端的Π向服務(wù)器上傳待檢測軟件的安裝包;接收服務(wù)器發(fā)送的檢測結(jié)果,通過Π報(bào)告用戶;所述服務(wù)器,用于根據(jù)接收到的用戶通過客戶端上傳的待檢測軟件的安裝包模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,分別與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測軟件為惡意軟件,將檢測結(jié)果發(fā)送給客戶端。上述方案中,所述服務(wù)器包括模擬執(zhí)行單元,檢測規(guī)則存儲(chǔ)單元、標(biāo)識(shí)單元、敏感行為匹配單元和惡意行為匹配單元;所述服務(wù)器還包括預(yù)處理單元、程序結(jié)構(gòu)構(gòu)建單元、程序執(zhí)行路徑求解單元和常量值分析單元;所述服務(wù)器還包括危險(xiǎn)等級評定單元、檢測結(jié)果保存單元和惡意行為報(bào)告單元;各單元功能與上面所述相同。
本發(fā)明所提供的技術(shù)方案中,通過模擬執(zhí)行待檢測軟件中的全部指令,將待檢測軟件調(diào)用函數(shù)的敏感特征信息與服務(wù)器存儲(chǔ)的敏感特征信息進(jìn)行匹配,在確定函數(shù)調(diào)用為敏感行為時(shí),進(jìn)一步將敏感行為中被調(diào)用函數(shù)的惡意特征信息與服務(wù)器存儲(chǔ)的惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測軟件為惡意軟件。如此,對待檢測軟件進(jìn)行檢測時(shí),無需利用病毒特征碼,不存在檢測結(jié)果有滯后期的問題;不受待檢測軟件惡意行為觸發(fā)條件復(fù)雜與否的限制,可準(zhǔn)確及時(shí)地對軟件進(jìn)行惡意行為檢測。


圖I為本發(fā)明檢測Android惡意軟件方法的實(shí)現(xiàn)流程示意圖;圖2為本發(fā)明Android惡意軟件檢測系統(tǒng)的組成結(jié)構(gòu)示意圖;圖3為本發(fā)明檢測Android惡意軟件實(shí)施例的實(shí)現(xiàn)流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。實(shí)施例一圖I為本發(fā)明檢測Android惡意軟件方法的實(shí)現(xiàn)流程示意圖,如圖I所示,該方法包括步驟101 :服務(wù)器模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息,與本地保存的敏感特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為;這里,所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù),其中,通過函數(shù)名、函數(shù)類名、函數(shù)參數(shù)個(gè)數(shù)和函數(shù)參數(shù)類型,可唯一確定某一函數(shù)。這里,服務(wù)器在本地保存危險(xiǎn)函數(shù)的敏感特征信息,其中,所述危險(xiǎn)函數(shù)為待檢測軟件中惡意行為在實(shí)施時(shí)調(diào)用的庫函數(shù)。發(fā)明人發(fā)現(xiàn),待檢測軟件中的惡意行為,包括發(fā)送固定內(nèi)容的短信給固定號(hào)碼,在用戶不知情的情況下訂購SP(SerVice Provider,服務(wù)器提供商)服務(wù),以消耗用戶資費(fèi);打開固定的URL (Universal Resource Locator,統(tǒng)一資源定位符),以消耗用戶資費(fèi);執(zhí)行固定的系統(tǒng)命令,以修改或刪除用戶文件。上述惡意行為需要通過調(diào)用危險(xiǎn)函數(shù),并給所述危險(xiǎn)函數(shù)的參數(shù)引入一定數(shù)量的類型為常量的值來實(shí)施,其中,所述固定內(nèi)容的短信、固定號(hào)碼、固定URL和固定系統(tǒng)命令在待檢測軟件代碼中以固定字符串或立即數(shù)的常量形式引入危險(xiǎn)函數(shù)的參數(shù)。如此,在模擬執(zhí)行待檢測軟件過程中,若待檢測軟件調(diào)用函數(shù)的敏感特征信息與服務(wù)器本地保存的某個(gè)危險(xiǎn)函數(shù)的敏感特征信息匹配,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為,以進(jìn)行進(jìn)一步檢測,確定該函數(shù)調(diào)用是否為惡意行為。這里,在步驟101之前,還包括以下流程服務(wù)器接收用戶通過客戶端上傳的待檢測軟件的安裝包,對安裝包中的字節(jié)碼文件進(jìn)行反匯編,并根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu)并求解程序執(zhí)行路徑。其中,所述安裝包格式為基于Android系統(tǒng)的apk格式的安裝包,在服務(wù)器上運(yùn)行解包工具對安裝包操作,可得到dex格式的字節(jié)碼(bytecode)文件,所述dex格式的字節(jié)碼文件為Dalvik虛擬機(jī)上的一種可執(zhí)行文件,其中Dalvik虛擬機(jī)是Android系統(tǒng)中用于運(yùn)行軟件的應(yīng)用環(huán)境。
其中,所述對字節(jié)碼進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu),具體為在服務(wù)器上運(yùn)行反匯編工具對字節(jié)碼文件進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,利用腳本分析出程序結(jié)構(gòu)信息,包括指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖和固定字符串表。其中,利用腳本調(diào)用反匯編工具分析出程序結(jié)構(gòu)信息為現(xiàn)有反匯編工具使用技術(shù)范疇,不再贅述。其中,所述指令結(jié)構(gòu)包括指令的地址、操作碼、操作數(shù);基本塊結(jié)構(gòu)包括基本塊編號(hào)、首地址、尾地址、所在函數(shù)、塊中的指令;所述函數(shù)結(jié)構(gòu)包括函數(shù)首地址、函數(shù)名、函數(shù)內(nèi)的所有基本塊;所述類結(jié)構(gòu)包括類名、屬性列表、函數(shù)列表;所述固定字符串表保存程序信息中出現(xiàn)的固定字符串。其中,所述程序執(zhí)行路徑為運(yùn)行反匯編出的程序代碼中全部指令的指令執(zhí)行序列,所述求解程序執(zhí)行路徑流程具體為根據(jù)控制流圖、指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)和類結(jié)構(gòu),從反匯編出的程序代碼的入口函數(shù)開始,分析出當(dāng)前函數(shù)的指令執(zhí)行序列,上述分析操作采用圖的遍歷算法,如此,對于函數(shù)中的分支指令,可保證每個(gè)分支塊至少被執(zhí)行一次;對于函數(shù)中的循環(huán)體,可保證循環(huán)體部分的指令至少被執(zhí)行一遍;根據(jù)函數(shù)調(diào)用圖、指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)和類結(jié)構(gòu),分析出當(dāng)前函數(shù)中每個(gè)函數(shù)調(diào)用點(diǎn)被調(diào)用的函數(shù),建立當(dāng)前函數(shù)和被調(diào)用函數(shù)之間的連接關(guān)系,以分析出被調(diào)用函數(shù)的指令執(zhí)行序列。其中,對于函數(shù)調(diào)用點(diǎn)調(diào)用的函數(shù)為線程啟動(dòng)函數(shù)、虛函數(shù)或接口函數(shù)時(shí),還需要進(jìn)行下列處理(I)若當(dāng)前函數(shù)調(diào)用點(diǎn)為線程啟動(dòng)函數(shù)調(diào)用,則根據(jù)線程初始化時(shí)參數(shù)的類名,查找該類中的run函數(shù)作為實(shí)際被調(diào)用的函數(shù);(2)若當(dāng)前函數(shù)調(diào)用點(diǎn)為虛函數(shù)或接口函數(shù),則根據(jù)當(dāng)前函數(shù)中this實(shí)參的類名,查找類中的同名函數(shù),作為實(shí)際被調(diào)用的函數(shù)。這里,所述服務(wù)器模擬執(zhí)行待檢測軟件為服務(wù)器分析程序執(zhí)行路徑中的指令,并在所述指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播。其中,所述常量包括立即數(shù)和固定字符串。其中,所述在指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播,具體為在所述指令為針對變量的常量值引入指令時(shí),若該指令是以立即數(shù)的形式引入常量值,則記錄直接引入的立即數(shù)的值,將程序執(zhí)行路徑中相應(yīng)的變量標(biāo)記為常量狀態(tài);若該指令是以固定字符串的形式引入常量值,則以固定字符串名為索引查找固定字符串表得到固定字符串的值,記錄引入的固定字符串的值,并將程序執(zhí)行路徑中相應(yīng)的變量標(biāo)記為常量狀態(tài);在所述指令為針對變量的且含有操作數(shù)的常量值引入指令時(shí),則根據(jù)當(dāng)前指令的語義信息,在程序執(zhí)行路徑中將相應(yīng)的變量標(biāo)記為常量狀態(tài),并記錄引入的常量值;在所述指令以函數(shù)返回指令的形式引入常量值,且所述函數(shù)返回指令返回的常量值影響實(shí)參變量時(shí),在程序執(zhí)行路徑中將相應(yīng)的實(shí)參變量標(biāo)記為常量狀態(tài),并記錄引入實(shí)參變量的常量值。步驟102 :將敏感行為中被調(diào)用函數(shù)的惡意特征信息,與本地保存的惡意特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。這里,服務(wù)器在本地保存危險(xiǎn)函數(shù)的惡意特征信息,其中,所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。步驟101中,在模擬執(zhí)行待檢測軟件過程中,若待檢測軟件調(diào)用的函數(shù)的敏感特征信息與服務(wù)器本地保存的某個(gè)危險(xiǎn)函數(shù)的敏感特征信息匹配,則確定所述函數(shù)調(diào)用符合惡意行為的初步特征,即發(fā)送固定內(nèi)容的短信給固定號(hào)碼、打開固定的URL或執(zhí)行固定的系統(tǒng)命令,且所述固定內(nèi)容的短信、固定號(hào)碼、固定URL和固定系統(tǒng)命令以常量值的形式引入危險(xiǎn)函數(shù)參數(shù),來實(shí)施敏感行為。本步驟中,服務(wù)器將待檢測軟件中已被標(biāo)識(shí)的敏感行為中被調(diào)用的函數(shù)的惡意特征信息,與本地保存的危險(xiǎn)函數(shù)的惡意特征信息進(jìn)行匹配,以進(jìn)一步確定所述敏感行為是否為惡意行為,即發(fā)送固定內(nèi)容的短信給固定號(hào)碼,是否為向SP訂購服務(wù),以消耗用戶資費(fèi);打開固定的URL,是否為打開網(wǎng)絡(luò)IP(Internet Protocol,網(wǎng)際互連協(xié)議)地址,以造成用戶資費(fèi)的消耗;執(zhí)行固定的系統(tǒng)命令,是否對用戶的文件造成損失。若是,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,確定待檢測軟件為惡意軟件。本步驟中,還包括以下流程服務(wù)器評定惡意行為的危險(xiǎn)等級,根據(jù)惡意行為的危險(xiǎn)等級生成檢測結(jié)果并保存在本地,在模擬執(zhí)行完畢待檢測軟件后,將本地檢測結(jié)果通過客戶端Π (User Interface,用戶界面)報(bào)告用戶,以使用戶了解惡意軟件的相關(guān)信息。其中,所述服務(wù)器評定惡意行為的危險(xiǎn)等級具體為服務(wù)器分別根據(jù)惡意行為調(diào)用函數(shù)的函數(shù)名和函數(shù)參數(shù)常量值,與本地預(yù)先保存的評定規(guī)則進(jìn)行匹配,以評定危險(xiǎn)等級,其中,所述評定規(guī)則描述了不同函數(shù)及其函數(shù)參數(shù)常量值對應(yīng)的危險(xiǎn)等級,所述危險(xiǎn)等級根據(jù)對用戶造成損失的程度制定,例如訂購多次SP服務(wù)以消耗用戶資費(fèi)的惡意行為的危險(xiǎn)等級較僅訂購一次SP服務(wù)以消耗用戶資費(fèi)的惡意行為的危險(xiǎn)等級聞。其中,所述生成檢測結(jié)果具體為服務(wù)器結(jié)合惡意行為的危險(xiǎn)等級生成檢測結(jié)果,所述檢測結(jié)果包括惡意行為的危險(xiǎn)等級、惡意行為中危險(xiǎn)函數(shù)的函數(shù)名和類名、惡意行為所在函數(shù)的函數(shù)名、惡意行為類型和惡意行為描述。實(shí)施例二圖2為本發(fā)明Android惡意軟件檢測系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖2所示,該系統(tǒng)包括服務(wù)器21和客戶端22 :其中,服務(wù)器21,用于根據(jù)接收到的用戶通過客戶端22UI上傳的待檢測軟件的安裝包模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,分別與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測軟件為惡意軟件,并將檢測結(jié)果發(fā)送給客戶端22 ;客戶端22,用于使用戶通過運(yùn)行在客戶端22的Π向服務(wù)器21上傳待檢測軟件的安裝包;接收服務(wù)器21發(fā)送的檢測報(bào)告,通過UI報(bào)告用戶。
上述方案中,服務(wù)器21包括模擬執(zhí)行單元2101、檢測規(guī)則存儲(chǔ)單元2102、敏感行為匹配單元2103、標(biāo)識(shí)單元2104和惡意行為匹配單元2105 ;其中,模擬執(zhí)行單元2101,用于模擬執(zhí)行待檢測軟件;檢測規(guī)則存儲(chǔ)單元2102,用于存儲(chǔ)敏感特征信息和惡意特征信息;敏感行為匹配單元2103,用于模擬執(zhí)行單元2101調(diào)用函數(shù)時(shí),將所述被調(diào)用函數(shù)的敏感特征信息與檢測規(guī)則存儲(chǔ)單元2102中的敏感特征信息進(jìn)行匹配;標(biāo)識(shí)單元2104,用于在敏感行為匹配單元2103匹配敏感特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為;惡意行為匹配單元2105,用于在標(biāo)識(shí)單元2104標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為時(shí),將所述函數(shù)調(diào)用中被調(diào)用函數(shù)的惡意特征信息與檢測規(guī)則存儲(chǔ)單元2102中的惡意特征信息進(jìn)行匹配;標(biāo)識(shí)單元2104,還用于在惡意行為匹配單元2105匹配惡意特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。上述方案中,所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù);所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。上述方案中,服務(wù)器21還包括預(yù)處理單元2106、程序結(jié)構(gòu)構(gòu)建單元2107、程序執(zhí)行路徑求解單元2108和常量值分析單元2109 ;其中,預(yù)處理單元2106,用于接收用戶通過客戶端22上傳的待檢測軟件的安裝包,并對安裝包中的字節(jié)碼文件進(jìn)行反匯編;程序結(jié)構(gòu)構(gòu)建單元2107,用于在預(yù)處理單元2106根據(jù)字節(jié)碼文件反匯編出程序代碼后,根據(jù)所述程序代碼構(gòu)建程序結(jié)構(gòu);程序執(zhí)行路徑求解單元2108,用于在程序結(jié)構(gòu)構(gòu)建單元2107構(gòu)建出程序結(jié)構(gòu)后,根據(jù)所述程序結(jié)構(gòu)求解程序執(zhí)行路徑;模擬執(zhí)行單元2101,具體用于根據(jù)程序執(zhí)行路徑求解單元2108求解出的程序執(zhí)行路徑,順序分析程序執(zhí)行路徑中的指令;常量值分析單元2109,用于在模擬執(zhí)行單元2101分析出程序執(zhí)行路徑中的指令為常量值引入指令時(shí),記錄引入的常量值并在程序執(zhí)行路徑中將常量值向下傳播。
上述方案中,服務(wù)器21還包括危險(xiǎn)等級評定單元2110、檢測結(jié)果保存單元2111和惡意行為報(bào)告單元2112 ;其中,危險(xiǎn)等級評定單元2110,用于在標(biāo)識(shí)單元2104標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件時(shí),評定惡意行為危險(xiǎn)等級,并結(jié)合惡意行為危險(xiǎn)等級生成檢測結(jié)果;檢測結(jié)果保存單元2111,用于保存危險(xiǎn)等級評定單元2110生成的檢測結(jié)果;惡意行為報(bào)告單元2112,用于在模擬執(zhí)行單元2101模擬執(zhí)行待檢測軟件完畢后,將檢測結(jié)果保存單元2111保存的檢測結(jié)果發(fā)送給客戶端22,以通過客戶端22UI報(bào)告給用戶。實(shí)施例三圖3為本發(fā)明檢測Android惡意軟件實(shí)施例的實(shí)現(xiàn)流程示意圖,以下以待檢測軟件為hippoSMS為例,如圖3所示,該流程包括步驟301 :服務(wù)器接收客戶端上傳的待檢測軟件,并進(jìn)行預(yù)處理;本步驟中,用戶通過客戶端Π向服務(wù)器上傳待檢測軟件hippoSMS對應(yīng)的安裝包hippoSMS. apk,服務(wù)器利用解壓軟件對安裝包進(jìn)行解壓,提取出安裝包中的字節(jié)碼文件,其后綴為dex,并運(yùn)行反匯編工具對字 節(jié)碼文件進(jìn)行反匯編,輸出程序代碼。其中,所述解壓軟件可以采用WINRAR或APKT00L,所述反匯編工具可以采用IDApro (Interactive Disassembler professional,交互式反匯編工具專業(yè)版)。步驟302 :服務(wù)器根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu)并求解程序執(zhí)行路徑;本步驟中,服務(wù)器根據(jù)反匯編出的程序代碼構(gòu)建程序結(jié)構(gòu),該程序結(jié)構(gòu)包括指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖和字符串表;并根據(jù)上述程序結(jié)構(gòu),求解程序執(zhí)行路徑。本步驟中,若針對以下代碼段I求解程序執(zhí)行路徑,代碼段II new-instance v0,<t Thread)2 new-instance vl, <t Download$myThread>3 invoke-direct{vl, this},〈void Download$myThread. <init>(ref) >4 invoke-direct {v0,vl},〈void Thread. <init> (ref) >5 invoke-virtual<v0>,〈void Thread, start () >則服務(wù)器進(jìn)行以下處理分析出代碼段第I行中的指令定義了一個(gè)線程類,此時(shí)v0的類名標(biāo)記為Thread ;分析出第2行中的指令定義了一個(gè)用戶定義的類,此時(shí)Vl的類名標(biāo)記為Download$myThread ;分析出第3行中的指令是一個(gè)函數(shù)調(diào)用指令,且被調(diào)用函數(shù)不是線程啟動(dòng)函數(shù)、虛函數(shù)或接口函數(shù),則直接根據(jù)函數(shù)調(diào)用圖查找被調(diào)用函數(shù),以建立當(dāng)前函數(shù)與被函數(shù)的連接關(guān)系,并進(jìn)入被調(diào)用函數(shù)進(jìn)行程序執(zhí)行路徑的求解操作;分析出第4行中的指令為系統(tǒng)函數(shù)調(diào)用指令,且該函數(shù)是線程初始化函數(shù),初始化參數(shù)的類名為Download$myThread,則將vl對象與v0對象綁定,將v0對象的類名標(biāo)記為VI對象的類名Download$myThread,并繼續(xù)向下查找Download$myThread中的run函數(shù);
分析出第5行代碼中指令為線程啟動(dòng)函數(shù)調(diào)用指令,VO參數(shù)的類名為Download$myThread,此時(shí)將繼續(xù)查找Download$myThread中的run函數(shù),將被調(diào)函數(shù)名由Thread, start 改為 Download$myThread. run,并針對函數(shù) Download$myThread. run 進(jìn)行程序執(zhí)行路徑的求解操作。步驟303 :服務(wù)器分析程序執(zhí)行路徑中的指令,并在所述指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播;若程序執(zhí)行路徑中的指令為以下代碼段2,代碼段2I const-string v7, a8 2 const-string v6, al0661566863 const-string v5, aData_04 :const_string v4, empty_str......5 invoke_virtual{this, v6, v7, this},〈void MessageService. sendsms<ref,ref, ref,ref>則服務(wù)器進(jìn)行以下處理分析出第I行指令為常量值引入指令,定義v7為字符串常量a8,a8為固定字符串,則該指令是以字符串的形式引入常量值,以a8為索引在固定字符串表中查詢固定字符串a(chǎn)8的值,其值為8,則將v7變量標(biāo)記成常量狀態(tài),并將v7的值記錄為8 ;分析出第2行到第4行指令為常量值引入指令,且是以字符串的形式引入常量值,分別以v6、v5和v4為索引在固定字符串表中查詢對應(yīng)的字符串的值,將v6、v5和v4標(biāo)記為常量狀態(tài),并記錄下對應(yīng)的字符串的值,其中v6的值為1066156686,v5的值為data,v4的值是一個(gè)空字符串;分析出第5行指令為函數(shù)調(diào)用指令,則將實(shí)參變量this、v6、v7、v4和this的值傳遞到被調(diào)用函數(shù)MessageService. sendsms中,并將函數(shù)MessageService. sendsms相應(yīng)的形參this、p0、pi、p2和p3值初始化為傳遞到被調(diào)用函數(shù)中的實(shí)參的值,進(jìn)一步對函數(shù)MessageService. sendsms內(nèi)的指令進(jìn)行分析。若函數(shù)MessageService. sendsms內(nèi)的指令如以下代碼段3所示,代碼段3I const/4 v2,02 move_object νΙ,ρΟ3 move_object v3,pi4invoke-virtual/range{v0. . v5},〈void SmsManager. sendTextMessage(ref,ref, ref, ref, ref) >則服務(wù)器進(jìn)行以下處理分析出第I行指令為常量值引入指令,且是以立即數(shù)的形式引入常量值,該指令將立即數(shù)O引入變量v2,則將v2變量標(biāo)記為常量狀態(tài),并將v2的值記錄為立即數(shù)O ;分析出第2行指令為針對變量vl的含有操作數(shù)的常量值引入指令,該指令將形參PO的值引入vl,在代碼段2中,形參p0對應(yīng)的實(shí)參為字符串v6,且v6被賦值1066156686,則PO的值為字符串v6的值1066156686 ;根據(jù)該指令的語義信息,將變量vl標(biāo)記成常量狀態(tài),vl的值記錄為常量值1066156686 ;分析出第3行指令為針對變量v3的含有操作數(shù)的常量值引入指令,該指令將形參Pl的值引入v3,在代碼段2中,形參pi對應(yīng)的實(shí)參為字符串v7,且v7被賦值8,則pi的值為字符串v7的值8 ;根據(jù)該指令的語義信息,將v3標(biāo)記成常量狀態(tài),v3的值記錄為常量值8 ;分析出第4行指令為系統(tǒng)函數(shù)調(diào)用指令,由于被調(diào)用函數(shù)SmsManager.sendTextMessage是庫函數(shù),無法進(jìn)入被調(diào)用函數(shù)分析,轉(zhuǎn)入步驟304處理。步驟304 :服務(wù)器將待檢測軟件調(diào)用的函數(shù)的敏感特征信息與本地保存的的敏感特征信息進(jìn)行匹配;本實(shí)施例中,服務(wù)器在本地維護(hù)檢測規(guī)則以保存敏感特征信息和惡意特征信息,且針對同一危險(xiǎn)函數(shù)的敏感特征信息和惡意特征信息用同一條檢測規(guī)則以 XML (Extensible Markup Language,可擴(kuò)展標(biāo)記語言)描述,針對函數(shù) SmsManager.sendTextMessage的檢測規(guī)則可描述如下代碼段權(quán)利要求
1.一種檢測Android惡意軟件的方法,其特征在于,該方法包括 服務(wù)器模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息,與本地保存的敏感特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為; 將敏感行為中被調(diào)用函數(shù)的惡意特征信息,與本地保存的惡意特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于, 所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù); 所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述服務(wù)器模擬執(zhí)行待檢測軟件之前,該方法還包括 服務(wù)器接收用戶通過客戶端上傳的待檢測軟件的安裝包,對安裝包中的字節(jié)碼文件進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu)并求解程序執(zhí)行路徑。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法還包括 服務(wù)器分析程序執(zhí)行路徑中的指令,并在所述指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播。
5.根據(jù)權(quán)利要求1、2、3或4所述的方法,其特征在于,該方法還包括 服務(wù)器評定被惡意行為的危險(xiǎn)等級,結(jié)合惡意行為危險(xiǎn)等級生成檢測結(jié)果并保存在本地,并在模擬執(zhí)行完畢待檢測軟件后,將本地檢測結(jié)果通過客戶端用戶界面UI報(bào)告用戶。
6.一種服務(wù)器,其特征在于,該服務(wù)器包括模擬執(zhí)行單元,檢測規(guī)則存儲(chǔ)單元、標(biāo)識(shí)單元、敏感行為匹配單元和惡意行為匹配單元;其中, 所述模擬執(zhí)行單元,用于模擬執(zhí)行待檢測軟件; 所述檢測規(guī)則存儲(chǔ)單元,用于存儲(chǔ)敏感特征信息和惡意特征信息; 所述敏感行為匹配單元,用于所述模擬執(zhí)行單元調(diào)用函數(shù)時(shí),將所述被調(diào)用函數(shù)的敏感特征信息與檢測規(guī)則存儲(chǔ)單元中的敏感特征信息進(jìn)行匹配; 所述標(biāo)識(shí)單元,用于在所述敏感行為匹配單元匹配敏感特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為; 所述惡意行為匹配單元,用于在所述標(biāo)識(shí)單元標(biāo)識(shí)所述函數(shù)調(diào)用為敏感行為時(shí),將所述函數(shù)調(diào)用中被調(diào)用函數(shù)的惡意特征信息與檢測規(guī)則存儲(chǔ)單元中的惡意特征信息進(jìn)行匹配; 所述標(biāo)識(shí)單元,還用于在所述惡意行為匹配單元匹配惡意特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于, 所述敏感特征信息包括函數(shù)名、函數(shù)類名、函數(shù)參數(shù)類型和函數(shù)參數(shù)個(gè)數(shù); 所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。
8.根據(jù)權(quán)利要求6或7所述的服務(wù)器,其特征在于,該服務(wù)器還包括預(yù)處理單元、程序結(jié)構(gòu)構(gòu)建單元、程序執(zhí)行路徑求解單元和常量值分析單元;其中, 所述預(yù)處理單元,用于接收用戶通過客戶端上傳的待檢測軟件的安裝包,并對安裝包中的字節(jié)碼文件進(jìn)行反匯編; 所述程序結(jié)構(gòu)構(gòu)建單元,用于在所述預(yù)處理單元根據(jù)字節(jié)碼文件反匯編出程序代碼后,根據(jù)所述程序代碼構(gòu)建程序結(jié)構(gòu); 所述程序執(zhí)行路徑求解單元,用于在所述程序結(jié)構(gòu)構(gòu)建單元構(gòu)建出程序結(jié)構(gòu)后,根據(jù)所述程序結(jié)構(gòu)求解程序執(zhí)行路徑; 所述模擬執(zhí)行單元,具體用于根據(jù)所述程序執(zhí)行路徑求解單元求解出的程序執(zhí)行路徑,順序分析程序執(zhí)行路徑中的指令; 所述常量值分析單元,用于在所述模擬執(zhí)行單元分析出程序執(zhí)行路徑中的指令為常量值引入指令時(shí),記錄引入的常量值并在程序執(zhí)行路徑中將常量值向下傳播。
9.根據(jù)權(quán)利要求6或7所述的服務(wù)器,其特征在于,該服務(wù)器還包括危險(xiǎn)等級評定單元、檢測結(jié)果保存單元和惡意行為報(bào)告單元;其中, 所述危險(xiǎn)等級評定單元,用于在所述標(biāo)識(shí)單元標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測軟件為惡意軟件時(shí),評定惡意行為危險(xiǎn)等級,結(jié)合惡意行為危險(xiǎn)等級生成檢測結(jié)果; 所述檢測結(jié)果保存單元,用于保存所述危險(xiǎn)等級評定單元生成的檢測結(jié)果; 所述惡意行為報(bào)告單元,用于在所述模擬執(zhí)行單元模擬執(zhí)行待檢測軟件完畢后,將所述檢測結(jié)果保存單元保存的檢測結(jié)果發(fā)送給客戶端,以通過客戶端UI報(bào)告給用戶。
10.一種Android惡意軟件檢測系統(tǒng),其特征在于,該系統(tǒng)包括客戶端和服務(wù)器;其特征在于, 所述客戶端,用于使用戶通過運(yùn)行在客戶端的Π向服務(wù)器上傳待檢測軟件的安裝包;接收服務(wù)器發(fā)送的檢測結(jié)果,通過Π報(bào)告用戶; 所述服務(wù)器,用于根據(jù)接收到的用戶通過客戶端上傳的待檢測軟件的安裝包模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,分別與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測軟件為惡意軟件,將檢測結(jié)果發(fā)送給客戶端。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述服務(wù)器為權(quán)利要求6至9任一項(xiàng)所述的服務(wù)器。
全文摘要
本發(fā)明公開了一種檢測Android惡意軟件的方法,包括服務(wù)器模擬執(zhí)行待檢測軟件,將待檢測軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定該函數(shù)調(diào)用為惡意行為,待檢測軟件為惡意軟件。本發(fā)明同時(shí)還公開了一種檢測Android惡意軟件的系統(tǒng)及設(shè)備,應(yīng)用本發(fā)明的技術(shù)方案,避免了現(xiàn)有Android惡意軟件檢測技術(shù)存在滯后期以及某些惡意軟件的惡意行為觸發(fā)條件復(fù)雜,可能長時(shí)間無法檢測出該軟件為惡意軟件的問題。
文檔編號(hào)G06F21/56GK102945347SQ201210376038
公開日2013年2月27日 申請日期2012年9月29日 優(yōu)先權(quán)日2012年9月29日
發(fā)明者程紹銀, 李子鋒, 巫妍, 蔣凡 申請人:中興通訊股份有限公司, 中國科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1