欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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


圖I為本發(fā)明檢測(cè)Android惡意軟件方法的實(shí)現(xiàn)流程示意圖;圖2為本發(fā)明Android惡意軟件檢測(cè)系統(tǒng)的組成結(jié)構(gòu)示意圖;圖3為本發(fā)明檢測(cè)Android惡意軟件實(shí)施例的實(shí)現(xiàn)流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。實(shí)施例一圖I為本發(fā)明檢測(cè)Android惡意軟件方法的實(shí)現(xiàn)流程示意圖,如圖I所示,該方法包括步驟101 :服務(wù)器模擬執(zhí)行待檢測(cè)軟件,將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息,與本地保存的敏感特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為;這里,所述敏感特征信息包括函數(shù)名、函數(shù)類(lèi)名、函數(shù)參數(shù)類(lèi)型和函數(shù)參數(shù)個(gè)數(shù),其中,通過(guò)函數(shù)名、函數(shù)類(lèi)名、函數(shù)參數(shù)個(gè)數(shù)和函數(shù)參數(shù)類(lèi)型,可唯一確定某一函數(shù)。這里,服務(wù)器在本地保存危險(xiǎn)函數(shù)的敏感特征信息,其中,所述危險(xiǎn)函數(shù)為待檢測(cè)軟件中惡意行為在實(shí)施時(shí)調(diào)用的庫(kù)函數(shù)。發(fā)明人發(fā)現(xiàn),待檢測(cè)軟件中的惡意行為,包括發(fā)送固定內(nèi)容的短信給固定號(hào)碼,在用戶(hù)不知情的情況下訂購(gòu)SP(SerVice Provider,服務(wù)器提供商)服務(wù),以消耗用戶(hù)資費(fèi);打開(kāi)固定的URL (Universal Resource Locator,統(tǒng)一資源定位符),以消耗用戶(hù)資費(fèi);執(zhí)行固定的系統(tǒng)命令,以修改或刪除用戶(hù)文件。上述惡意行為需要通過(guò)調(diào)用危險(xiǎn)函數(shù),并給所述危險(xiǎn)函數(shù)的參數(shù)引入一定數(shù)量的類(lèi)型為常量的值來(lái)實(shí)施,其中,所述固定內(nèi)容的短信、固定號(hào)碼、固定URL和固定系統(tǒng)命令在待檢測(cè)軟件代碼中以固定字符串或立即數(shù)的常量形式引入危險(xiǎn)函數(shù)的參數(shù)。如此,在模擬執(zhí)行待檢測(cè)軟件過(guò)程中,若待檢測(cè)軟件調(diào)用函數(shù)的敏感特征信息與服務(wù)器本地保存的某個(gè)危險(xiǎn)函數(shù)的敏感特征信息匹配,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為,以進(jìn)行進(jìn)一步檢測(cè),確定該函數(shù)調(diào)用是否為惡意行為。這里,在步驟101之前,還包括以下流程服務(wù)器接收用戶(hù)通過(guò)客戶(hù)端上傳的待檢測(cè)軟件的安裝包,對(duì)安裝包中的字節(jié)碼文件進(jìn)行反匯編,并根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu)并求解程序執(zhí)行路徑。其中,所述安裝包格式為基于Android系統(tǒng)的apk格式的安裝包,在服務(wù)器上運(yùn)行解包工具對(duì)安裝包操作,可得到dex格式的字節(jié)碼(bytecode)文件,所述dex格式的字節(jié)碼文件為Dalvik虛擬機(jī)上的一種可執(zhí)行文件,其中Dalvik虛擬機(jī)是Android系統(tǒng)中用于運(yùn)行軟件的應(yīng)用環(huán)境。
其中,所述對(duì)字節(jié)碼進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,構(gòu)建程序結(jié)構(gòu),具體為在服務(wù)器上運(yùn)行反匯編工具對(duì)字節(jié)碼文件進(jìn)行反匯編,根據(jù)反匯編出的程序代碼,利用腳本分析出程序結(jié)構(gòu)信息,包括指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類(lèi)結(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)的所有基本塊;所述類(lèi)結(jié)構(gòu)包括類(lèi)名、屬性列表、函數(shù)列表;所述固定字符串表保存程序信息中出現(xiàn)的固定字符串。其中,所述程序執(zhí)行路徑為運(yùn)行反匯編出的程序代碼中全部指令的指令執(zhí)行序列,所述求解程序執(zhí)行路徑流程具體為根據(jù)控制流圖、指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)和類(lèi)結(jié)構(gòu),從反匯編出的程序代碼的入口函數(shù)開(kāi)始,分析出當(dāng)前函數(shù)的指令執(zhí)行序列,上述分析操作采用圖的遍歷算法,如此,對(duì)于函數(shù)中的分支指令,可保證每個(gè)分支塊至少被執(zhí)行一次;對(duì)于函數(shù)中的循環(huán)體,可保證循環(huán)體部分的指令至少被執(zhí)行一遍;根據(jù)函數(shù)調(diào)用圖、指令結(jié)構(gòu)、基本塊結(jié)構(gòu)、函數(shù)結(jié)構(gòu)和類(lèi)結(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í)行序列。其中,對(duì)于函數(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ù)的類(lèi)名,查找該類(lèi)中的run函數(shù)作為實(shí)際被調(diào)用的函數(shù);(2)若當(dāng)前函數(shù)調(diào)用點(diǎn)為虛函數(shù)或接口函數(shù),則根據(jù)當(dāng)前函數(shù)中this實(shí)參的類(lèi)名,查找類(lèi)中的同名函數(shù),作為實(shí)際被調(diào)用的函數(shù)。這里,所述服務(wù)器模擬執(zhí)行待檢測(cè)軟件為服務(wù)器分析程序執(zhí)行路徑中的指令,并在所述指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播。其中,所述常量包括立即數(shù)和固定字符串。其中,所述在指令為常量值引入指令時(shí),記錄引入的常量值并將常量值在程序執(zhí)行路徑中向下傳播,具體為在所述指令為針對(duì)變量的常量值引入指令時(shí),若該指令是以立即數(shù)的形式引入常量值,則記錄直接引入的立即數(shù)的值,將程序執(zhí)行路徑中相應(yīng)的變量標(biāo)記為常量狀態(tài);若該指令是以固定字符串的形式引入常量值,則以固定字符串名為索引查找固定字符串表得到固定字符串的值,記錄引入的固定字符串的值,并將程序執(zhí)行路徑中相應(yīng)的變量標(biāo)記為常量狀態(tài);在所述指令為針對(duì)變量的且含有操作數(shù)的常量值引入指令時(shí),則根據(jù)當(dāng)前指令的語(yǔ)義信息,在程序執(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)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件。這里,服務(wù)器在本地保存危險(xiǎn)函數(shù)的惡意特征信息,其中,所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。步驟101中,在模擬執(zhí)行待檢測(cè)軟件過(guò)程中,若待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息與服務(wù)器本地保存的某個(gè)危險(xiǎn)函數(shù)的敏感特征信息匹配,則確定所述函數(shù)調(diào)用符合惡意行為的初步特征,即發(fā)送固定內(nèi)容的短信給固定號(hào)碼、打開(kāi)固定的URL或執(zhí)行固定的系統(tǒng)命令,且所述固定內(nèi)容的短信、固定號(hào)碼、固定URL和固定系統(tǒng)命令以常量值的形式引入危險(xiǎn)函數(shù)參數(shù),來(lái)實(shí)施敏感行為。本步驟中,服務(wù)器將待檢測(cè)軟件中已被標(biāo)識(shí)的敏感行為中被調(diào)用的函數(shù)的惡意特征信息,與本地保存的危險(xiǎn)函數(shù)的惡意特征信息進(jìn)行匹配,以進(jìn)一步確定所述敏感行為是否為惡意行為,即發(fā)送固定內(nèi)容的短信給固定號(hào)碼,是否為向SP訂購(gòu)服務(wù),以消耗用戶(hù)資費(fèi);打開(kāi)固定的URL,是否為打開(kāi)網(wǎng)絡(luò)IP(Internet Protocol,網(wǎng)際互連協(xié)議)地址,以造成用戶(hù)資費(fèi)的消耗;執(zhí)行固定的系統(tǒng)命令,是否對(duì)用戶(hù)的文件造成損失。若是,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,確定待檢測(cè)軟件為惡意軟件。本步驟中,還包括以下流程服務(wù)器評(píng)定惡意行為的危險(xiǎn)等級(jí),根據(jù)惡意行為的危險(xiǎn)等級(jí)生成檢測(cè)結(jié)果并保存在本地,在模擬執(zhí)行完畢待檢測(cè)軟件后,將本地檢測(cè)結(jié)果通過(guò)客戶(hù)端Π (User Interface,用戶(hù)界面)報(bào)告用戶(hù),以使用戶(hù)了解惡意軟件的相關(guān)信息。其中,所述服務(wù)器評(píng)定惡意行為的危險(xiǎn)等級(jí)具體為服務(wù)器分別根據(jù)惡意行為調(diào)用函數(shù)的函數(shù)名和函數(shù)參數(shù)常量值,與本地預(yù)先保存的評(píng)定規(guī)則進(jìn)行匹配,以評(píng)定危險(xiǎn)等級(jí),其中,所述評(píng)定規(guī)則描述了不同函數(shù)及其函數(shù)參數(shù)常量值對(duì)應(yīng)的危險(xiǎn)等級(jí),所述危險(xiǎn)等級(jí)根據(jù)對(duì)用戶(hù)造成損失的程度制定,例如訂購(gòu)多次SP服務(wù)以消耗用戶(hù)資費(fèi)的惡意行為的危險(xiǎn)等級(jí)較僅訂購(gòu)一次SP服務(wù)以消耗用戶(hù)資費(fèi)的惡意行為的危險(xiǎn)等級(jí)聞。其中,所述生成檢測(cè)結(jié)果具體為服務(wù)器結(jié)合惡意行為的危險(xiǎn)等級(jí)生成檢測(cè)結(jié)果,所述檢測(cè)結(jié)果包括惡意行為的危險(xiǎn)等級(jí)、惡意行為中危險(xiǎn)函數(shù)的函數(shù)名和類(lèi)名、惡意行為所在函數(shù)的函數(shù)名、惡意行為類(lèi)型和惡意行為描述。實(shí)施例二圖2為本發(fā)明Android惡意軟件檢測(cè)系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖2所示,該系統(tǒng)包括服務(wù)器21和客戶(hù)端22 :其中,服務(wù)器21,用于根據(jù)接收到的用戶(hù)通過(guò)客戶(hù)端22UI上傳的待檢測(cè)軟件的安裝包模擬執(zhí)行待檢測(cè)軟件,將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,分別與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測(cè)軟件為惡意軟件,并將檢測(cè)結(jié)果發(fā)送給客戶(hù)端22 ;客戶(hù)端22,用于使用戶(hù)通過(guò)運(yùn)行在客戶(hù)端22的Π向服務(wù)器21上傳待檢測(cè)軟件的安裝包;接收服務(wù)器21發(fā)送的檢測(cè)報(bào)告,通過(guò)UI報(bào)告用戶(hù)。
上述方案中,服務(wù)器21包括模擬執(zhí)行單元2101、檢測(cè)規(guī)則存儲(chǔ)單元2102、敏感行為匹配單元2103、標(biāo)識(shí)單元2104和惡意行為匹配單元2105 ;其中,模擬執(zhí)行單元2101,用于模擬執(zhí)行待檢測(cè)軟件;檢測(cè)規(guī)則存儲(chǔ)單元2102,用于存儲(chǔ)敏感特征信息和惡意特征信息;敏感行為匹配單元2103,用于模擬執(zhí)行單元2101調(diào)用函數(shù)時(shí),將所述被調(diào)用函數(shù)的敏感特征信息與檢測(cè)規(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ù)的惡意特征信息與檢測(cè)規(guī)則存儲(chǔ)單元2102中的惡意特征信息進(jìn)行匹配;標(biāo)識(shí)單元2104,還用于在惡意行為匹配單元2105匹配惡意特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件。上述方案中,所述敏感特征信息包括函數(shù)名、函數(shù)類(lèi)名、函數(shù)參數(shù)類(lèi)型和函數(shù)參數(shù)個(gè)數(shù);所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。上述方案中,服務(wù)器21還包括預(yù)處理單元2106、程序結(jié)構(gòu)構(gòu)建單元2107、程序執(zhí)行路徑求解單元2108和常量值分析單元2109 ;其中,預(yù)處理單元2106,用于接收用戶(hù)通過(guò)客戶(hù)端22上傳的待檢測(cè)軟件的安裝包,并對(duì)安裝包中的字節(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)等級(jí)評(píng)定單元2110、檢測(cè)結(jié)果保存單元2111和惡意行為報(bào)告單元2112 ;其中,危險(xiǎn)等級(jí)評(píng)定單元2110,用于在標(biāo)識(shí)單元2104標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件時(shí),評(píng)定惡意行為危險(xiǎn)等級(jí),并結(jié)合惡意行為危險(xiǎn)等級(jí)生成檢測(cè)結(jié)果;檢測(cè)結(jié)果保存單元2111,用于保存危險(xiǎn)等級(jí)評(píng)定單元2110生成的檢測(cè)結(jié)果;惡意行為報(bào)告單元2112,用于在模擬執(zhí)行單元2101模擬執(zhí)行待檢測(cè)軟件完畢后,將檢測(cè)結(jié)果保存單元2111保存的檢測(cè)結(jié)果發(fā)送給客戶(hù)端22,以通過(guò)客戶(hù)端22UI報(bào)告給用戶(hù)。實(shí)施例三圖3為本發(fā)明檢測(cè)Android惡意軟件實(shí)施例的實(shí)現(xiàn)流程示意圖,以下以待檢測(cè)軟件為hippoSMS為例,如圖3所示,該流程包括步驟301 :服務(wù)器接收客戶(hù)端上傳的待檢測(cè)軟件,并進(jìn)行預(yù)處理;本步驟中,用戶(hù)通過(guò)客戶(hù)端Π向服務(wù)器上傳待檢測(cè)軟件hippoSMS對(duì)應(yīng)的安裝包hippoSMS. apk,服務(wù)器利用解壓軟件對(duì)安裝包進(jìn)行解壓,提取出安裝包中的字節(jié)碼文件,其后綴為dex,并運(yùn)行反匯編工具對(duì)字 節(jié)碼文件進(jìn)行反匯編,輸出程序代碼。其中,所述解壓軟件可以采用WINRAR或APKT00L,所述反匯編工具可以采用IDApro (Interactive Disassembler professional,交互式反匯編工具專(zhuān)業(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)、類(lèi)結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖和字符串表;并根據(jù)上述程序結(jié)構(gòu),求解程序執(zhí)行路徑。本步驟中,若針對(duì)以下代碼段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è)線程類(lèi),此時(shí)v0的類(lèi)名標(biāo)記為T(mén)hread ;分析出第2行中的指令定義了一個(gè)用戶(hù)定義的類(lèi),此時(shí)Vl的類(lèi)名標(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ù)的類(lèi)名為Download$myThread,則將vl對(duì)象與v0對(duì)象綁定,將v0對(duì)象的類(lèi)名標(biāo)記為VI對(duì)象的類(lèi)名Download$myThread,并繼續(xù)向下查找Download$myThread中的run函數(shù);
分析出第5行代碼中指令為線程啟動(dòng)函數(shù)調(diào)用指令,VO參數(shù)的類(lèi)名為Download$myThread,此時(shí)將繼續(xù)查找Download$myThread中的run函數(shù),將被調(diào)函數(shù)名由Thread, start 改為 Download$myThread. run,并針對(duì)函數(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為索引在固定字符串表中查詢(xún)固定字符串a(chǎn)8的值,其值為8,則將v7變量標(biāo)記成常量狀態(tài),并將v7的值記錄為8 ;分析出第2行到第4行指令為常量值引入指令,且是以字符串的形式引入常量值,分別以v6、v5和v4為索引在固定字符串表中查詢(xún)對(duì)應(yīng)的字符串的值,將v6、v5和v4標(biāo)記為常量狀態(tài),并記錄下對(duì)應(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)一步對(duì)函數(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行指令為針對(duì)變量vl的含有操作數(shù)的常量值引入指令,該指令將形參PO的值引入vl,在代碼段2中,形參p0對(duì)應(yīng)的實(shí)參為字符串v6,且v6被賦值1066156686,則PO的值為字符串v6的值1066156686 ;根據(jù)該指令的語(yǔ)義信息,將變量vl標(biāo)記成常量狀態(tài),vl的值記錄為常量值1066156686 ;分析出第3行指令為針對(duì)變量v3的含有操作數(shù)的常量值引入指令,該指令將形參Pl的值引入v3,在代碼段2中,形參pi對(duì)應(yīng)的實(shí)參為字符串v7,且v7被賦值8,則pi的值為字符串v7的值8 ;根據(jù)該指令的語(yǔ)義信息,將v3標(biāo)記成常量狀態(tài),v3的值記錄為常量值8 ;分析出第4行指令為系統(tǒng)函數(shù)調(diào)用指令,由于被調(diào)用函數(shù)SmsManager.sendTextMessage是庫(kù)函數(shù),無(wú)法進(jìn)入被調(diào)用函數(shù)分析,轉(zhuǎn)入步驟304處理。步驟304 :服務(wù)器將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息與本地保存的的敏感特征信息進(jìn)行匹配;本實(shí)施例中,服務(wù)器在本地維護(hù)檢測(cè)規(guī)則以保存敏感特征信息和惡意特征信息,且針對(duì)同一危險(xiǎn)函數(shù)的敏感特征信息和惡意特征信息用同一條檢測(cè)規(guī)則以 XML (Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)描述,針對(duì)函數(shù) SmsManager.sendTextMessage的檢測(cè)規(guī)則可描述如下代碼段權(quán)利要求
1.一種檢測(cè)Android惡意軟件的方法,其特征在于,該方法包括 服務(wù)器模擬執(zhí)行待檢測(cè)軟件,將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息,與本地保存的敏感特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為敏感行為; 將敏感行為中被調(diào)用函數(shù)的惡意特征信息,與本地保存的惡意特征信息進(jìn)行匹配,若匹配成功,則標(biāo)識(shí)該函數(shù)調(diào)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于, 所述敏感特征信息包括函數(shù)名、函數(shù)類(lèi)名、函數(shù)參數(shù)類(lèi)型和函數(shù)參數(shù)個(gè)數(shù); 所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述服務(wù)器模擬執(zhí)行待檢測(cè)軟件之前,該方法還包括 服務(wù)器接收用戶(hù)通過(guò)客戶(hù)端上傳的待檢測(cè)軟件的安裝包,對(duì)安裝包中的字節(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ù)器評(píng)定被惡意行為的危險(xiǎn)等級(jí),結(jié)合惡意行為危險(xiǎn)等級(jí)生成檢測(cè)結(jié)果并保存在本地,并在模擬執(zhí)行完畢待檢測(cè)軟件后,將本地檢測(cè)結(jié)果通過(guò)客戶(hù)端用戶(hù)界面UI報(bào)告用戶(hù)。
6.一種服務(wù)器,其特征在于,該服務(wù)器包括模擬執(zhí)行單元,檢測(cè)規(guī)則存儲(chǔ)單元、標(biāo)識(shí)單元、敏感行為匹配單元和惡意行為匹配單元;其中, 所述模擬執(zhí)行單元,用于模擬執(zhí)行待檢測(cè)軟件; 所述檢測(cè)規(guī)則存儲(chǔ)單元,用于存儲(chǔ)敏感特征信息和惡意特征信息; 所述敏感行為匹配單元,用于所述模擬執(zhí)行單元調(diào)用函數(shù)時(shí),將所述被調(diào)用函數(shù)的敏感特征信息與檢測(cè)規(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ù)的惡意特征信息與檢測(cè)規(guī)則存儲(chǔ)單元中的惡意特征信息進(jìn)行匹配; 所述標(biāo)識(shí)單元,還用于在所述惡意行為匹配單元匹配惡意特征信息成功時(shí),標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于, 所述敏感特征信息包括函數(shù)名、函數(shù)類(lèi)名、函數(shù)參數(shù)類(lèi)型和函數(shù)參數(shù)個(gè)數(shù); 所述惡意特征信息包括函數(shù)名、函數(shù)參數(shù)常量值。
8.根據(jù)權(quán)利要求6或7所述的服務(wù)器,其特征在于,該服務(wù)器還包括預(yù)處理單元、程序結(jié)構(gòu)構(gòu)建單元、程序執(zhí)行路徑求解單元和常量值分析單元;其中, 所述預(yù)處理單元,用于接收用戶(hù)通過(guò)客戶(hù)端上傳的待檢測(cè)軟件的安裝包,并對(duì)安裝包中的字節(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)等級(jí)評(píng)定單元、檢測(cè)結(jié)果保存單元和惡意行為報(bào)告單元;其中, 所述危險(xiǎn)等級(jí)評(píng)定單元,用于在所述標(biāo)識(shí)單元標(biāo)識(shí)所述函數(shù)調(diào)用為惡意行為,以確定待檢測(cè)軟件為惡意軟件時(shí),評(píng)定惡意行為危險(xiǎn)等級(jí),結(jié)合惡意行為危險(xiǎn)等級(jí)生成檢測(cè)結(jié)果; 所述檢測(cè)結(jié)果保存單元,用于保存所述危險(xiǎn)等級(jí)評(píng)定單元生成的檢測(cè)結(jié)果; 所述惡意行為報(bào)告單元,用于在所述模擬執(zhí)行單元模擬執(zhí)行待檢測(cè)軟件完畢后,將所述檢測(cè)結(jié)果保存單元保存的檢測(cè)結(jié)果發(fā)送給客戶(hù)端,以通過(guò)客戶(hù)端UI報(bào)告給用戶(hù)。
10.一種Android惡意軟件檢測(cè)系統(tǒng),其特征在于,該系統(tǒng)包括客戶(hù)端和服務(wù)器;其特征在于, 所述客戶(hù)端,用于使用戶(hù)通過(guò)運(yùn)行在客戶(hù)端的Π向服務(wù)器上傳待檢測(cè)軟件的安裝包;接收服務(wù)器發(fā)送的檢測(cè)結(jié)果,通過(guò)Π報(bào)告用戶(hù); 所述服務(wù)器,用于根據(jù)接收到的用戶(hù)通過(guò)客戶(hù)端上傳的待檢測(cè)軟件的安裝包模擬執(zhí)行待檢測(cè)軟件,將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,分別與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定待檢測(cè)軟件為惡意軟件,將檢測(cè)結(jié)果發(fā)送給客戶(hù)端。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述服務(wù)器為權(quán)利要求6至9任一項(xiàng)所述的服務(wù)器。
全文摘要
本發(fā)明公開(kāi)了一種檢測(cè)Android惡意軟件的方法,包括服務(wù)器模擬執(zhí)行待檢測(cè)軟件,將待檢測(cè)軟件調(diào)用的函數(shù)的敏感特征信息和惡意特征信息,與本地保存的敏感特征信息和惡意特征信息進(jìn)行匹配,若匹配成功,則確定該函數(shù)調(diào)用為惡意行為,待檢測(cè)軟件為惡意軟件。本發(fā)明同時(shí)還公開(kāi)了一種檢測(cè)Android惡意軟件的系統(tǒng)及設(shè)備,應(yīng)用本發(fā)明的技術(shù)方案,避免了現(xiàn)有Android惡意軟件檢測(cè)技術(shù)存在滯后期以及某些惡意軟件的惡意行為觸發(fā)條件復(fù)雜,可能長(zhǎng)時(shí)間無(wú)法檢測(cè)出該軟件為惡意軟件的問(wèn)題。
文檔編號(hào)G06F21/56GK102945347SQ201210376038
公開(kāi)日2013年2月27日 申請(qǐng)日期2012年9月29日 優(yōu)先權(quán)日2012年9月29日
發(fā)明者程紹銀, 李子鋒, 巫妍, 蔣凡 申請(qǐng)人:中興通訊股份有限公司, 中國(guó)科學(xué)技術(shù)大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
应用必备| 长汀县| 诸暨市| 泽库县| 福贡县| 巫溪县| 城固县| 澎湖县| 英吉沙县| 无为县| 灌阳县| 天长市| 土默特右旗| 兴隆县| 清河县| 荔波县| 彭泽县| 虹口区| 沙雅县| 资阳市| 克什克腾旗| 芦山县| 理塘县| 兴化市| 天等县| 景宁| 招远市| 琼海市| 高安市| 新泰市| 敖汉旗| 甘谷县| 衡阳县| 遂川县| 安达市| 南雄市| 兰坪| 迁安市| 蒙阴县| 昌乐县| 沭阳县|