移動終端中惡意代碼的檢測方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動終端設(shè)備技術(shù)領(lǐng)域,尤其涉及一種移動終端中惡意代碼的檢測方 法和裝置。
【背景技術(shù)】
[0002] 隨著Android操作系統(tǒng)的發(fā)展,對于Android操作系統(tǒng)中惡意代碼檢測的研宄成 果也層出不窮,目前檢測手段已經(jīng)深入到opcode層面。其中,opcode是Android操作系統(tǒng) 中可執(zhí)行文件Dex的代碼指令,其基本格式為:
[0003]
【主權(quán)項】
1. 一種移動終端中惡意代碼的檢測方法,其特征在于,包括以下步驟: 獲取移動終端中的可執(zhí)行文件,并獲取所述可執(zhí)行文件中的函數(shù)以及所述函數(shù)的 opcode代碼段內(nèi)容; 對所述函數(shù)的opcode代碼段內(nèi)容進行反匯編解析以獲取所述opcode代碼段內(nèi)容中的 數(shù)據(jù)流信息; 根據(jù)所述數(shù)據(jù)流信息生成對應(yīng)的特征碼,并檢測所述特征碼是否存在于預(yù)設(shè)的惡意代 碼特征庫中;以及 如果檢測所述特征碼存在于所述預(yù)設(shè)的惡意代碼特征庫中,則判斷所述移動終端中具 有惡意代碼。
2. 如權(quán)利要求1所述的移動終端中惡意代碼的檢測方法,其特征在于,其中,所述預(yù)設(shè) 的惡意代碼特征庫中具有特征碼與惡意代碼名稱的對應(yīng)關(guān)系,在檢測所述特征碼存在于所 述預(yù)設(shè)的惡意代碼特征庫中之后,所述方法還包括: 根據(jù)所述特征碼查找所述預(yù)設(shè)的惡意代碼特征碼庫以獲取與所述特征碼對應(yīng)的惡意 代碼名稱。
3. 如權(quán)利要求1所述的移動終端中惡意代碼的檢測方法,其特征在于,所述獲取所述 可執(zhí)行文件中的函數(shù)以及所述函數(shù)的opcode代碼段內(nèi)容,包括: 對所述可執(zhí)行文件進行解析以獲取所述可執(zhí)行文件中的結(jié)構(gòu)體,并掃描所述結(jié)構(gòu)體以 獲取所述可執(zhí)行文件中的函數(shù)以及所述函數(shù)的opcode代碼段內(nèi)容。
4. 如權(quán)利要求3所述的移動終端中惡意代碼的檢測方法,其特征在于,其中,所述移動 終端的操作系統(tǒng)為Android操作系統(tǒng),所述可執(zhí)行文件的格式類型為DEX。
5. 如權(quán)利要求4所述的移動終端中惡意代碼的檢測方法,其特征在于,所述對所述可 執(zhí)行文件進行解析以獲取所述可執(zhí)行文件中的結(jié)構(gòu)體,并掃描所述結(jié)構(gòu)體以獲取所述可執(zhí) 行文件中的函數(shù)以及所述函數(shù)的opcode代碼段內(nèi)容,包括: 讀取所述可執(zhí)行文件以獲取所述可執(zhí)行文件中的DexFile結(jié)構(gòu)體,并根據(jù)所述 DexFile結(jié)構(gòu)體中的指針pClassDefs獲取所述可執(zhí)行文件的類結(jié)構(gòu)體數(shù)組,其中,所述類 結(jié)構(gòu)體數(shù)組由至少一個DexClassDef結(jié)構(gòu)體組成; 遍歷所述類結(jié)構(gòu)體數(shù)組,根據(jù)每個所述DexClassDef結(jié)構(gòu)體中的classDataOff獲取類 數(shù)據(jù)結(jié)構(gòu)體DexClassData ; 取出所述類數(shù)據(jù)結(jié)構(gòu)體DexClassData中的directMethods和/或virtualMethods,并 根據(jù)所述directMethods和/或virtualMethods獲取對應(yīng)的類函數(shù)結(jié)構(gòu)體數(shù)組,其中,所 述類函數(shù)結(jié)構(gòu)體數(shù)組由至少一個DexMethod結(jié)構(gòu)體組成,每個所述DexMethod結(jié)構(gòu)體對應(yīng) 一個函數(shù); 遍歷所述類函數(shù)結(jié)構(gòu)體數(shù)組,根據(jù)每個所述DexMethod結(jié)構(gòu)體中的codeoff獲取 DexCode結(jié)構(gòu)體,并根據(jù)所述DexCode結(jié)構(gòu)體中的insns和insnsSize獲取所述DexCode結(jié) 構(gòu)體對應(yīng)的函數(shù)的opcode代碼段內(nèi)容。
6. 如權(quán)利要求1所述的移動終端中惡意代碼的檢測方法,其特征在于,所述根據(jù)所述 數(shù)據(jù)流信息生成對應(yīng)的特征碼,包括: 從所述數(shù)據(jù)流信息中選取部分或全部片段進行重新組合,并根據(jù)預(yù)設(shè)算法對重新組合 后的部分或全部片段進行計算以生成所述數(shù)據(jù)流信息對應(yīng)的特征碼。
7. -種移動終端中惡意代碼的檢測裝置,其特征在于,包括: 第一獲取模塊,用于獲取移動終端中的可執(zhí)行文件,并獲取所述可執(zhí)行文件中的函數(shù) 以及所述函數(shù)的opcode代碼段內(nèi)容; 第二獲取模塊,用于對所述函數(shù)的opcode代碼段內(nèi)容進行反匯編解析以獲取所述 opcode代碼段內(nèi)容中的數(shù)據(jù)流信息; 生成模塊,用于根據(jù)所示數(shù)據(jù)流信息生成對應(yīng)的特征碼; 檢測模塊,用于檢測所述特征碼是否存在于預(yù)設(shè)的惡意代碼特征庫中;以及 判斷模塊,用于在檢測所述特征碼存在于所述預(yù)設(shè)的惡意代碼特征庫中時,判斷所述 移動終端中具有惡意代碼。
8. 如權(quán)利要求7所述的移動終端中惡意代碼的檢測裝置,其特征在于,其中,所述預(yù)設(shè) 的惡意代碼特征庫中具有特征碼與惡意代碼名稱的對應(yīng)關(guān)系,所述裝置還包括: 第三獲取模塊,用于在檢測所述特征碼存在于所述預(yù)設(shè)的惡意代碼特征碼中之后,根 據(jù)所述特征碼查找所述預(yù)設(shè)的惡意代碼特征庫以獲取與所述特征碼對應(yīng)的惡意代碼名稱。
9. 如權(quán)利要求7所述的移動終端中惡意代碼的檢測裝置,其特征在于,所述第一獲取 模塊具體用于: 對所述可執(zhí)行文件進行解析以獲取所述可執(zhí)行文件中的結(jié)構(gòu)體,并掃描所述結(jié)構(gòu)體以 獲取所述可執(zhí)行文件中的函數(shù)以及所述函數(shù)的opcode代碼段內(nèi)容。
10. 如權(quán)利要求9所述的移動終端中惡意代碼的檢測裝置,其特征在于,其中,所述移 動終端的操作系統(tǒng)為Android操作系統(tǒng),所述可執(zhí)行文件的格式類型為DEX。
11. 如權(quán)利要求10所述的移動終端中惡意代碼的檢測裝置,其特征在于,所述第一獲 取模塊具體用于: 讀取所述可執(zhí)行文件以獲取所述可執(zhí)行文件中的DexFile結(jié)構(gòu)體,并根據(jù)所示 DexFile結(jié)構(gòu)體中的指針pClassDefs獲取所述可執(zhí)行文件的類結(jié)構(gòu)體數(shù)組,其中,所述類 結(jié)構(gòu)體數(shù)組由至少一個DexClassDef結(jié)構(gòu)體組成; 遍歷所述類結(jié)構(gòu)體數(shù)組,根據(jù)每個所述述DexClassDef結(jié)構(gòu)體中的classDataOff獲取 類數(shù)據(jù)結(jié)構(gòu)體DexClassData ; 取出所述類數(shù)據(jù)結(jié)構(gòu)體DexClassData中的directMethods和/或virtualMethods,并 根據(jù)所述directMethods和/或virtualMethods獲取對應(yīng)的類函數(shù)結(jié)構(gòu)體數(shù)組,其中,所 述類函數(shù)結(jié)構(gòu)體數(shù)組由至少一個DexMethod結(jié)構(gòu)體組成,每個所述DexMethod結(jié)構(gòu)體對應(yīng) 一個函數(shù); 遍歷所述類函數(shù)結(jié)構(gòu)體數(shù)組,根據(jù)每個所述DexMethod結(jié)構(gòu)體中的codeoff獲取 DexCode結(jié)構(gòu)體,并根據(jù)所述DexCode結(jié)構(gòu)體中的insns和insnsSize獲取所述DexCode結(jié) 構(gòu)體對應(yīng)的函數(shù)的opcode代碼段內(nèi)容。
12. 如權(quán)利要求7所述的移動終端中惡意代碼的檢測裝置,其特征在于,所述生成模塊 具體用于: 從所述數(shù)據(jù)流信息中選取部分或全部片段進行重新組合,并根據(jù)預(yù)設(shè)算法對重新組合 后的部分或全部片段進行計算以生成所述數(shù)據(jù)流信息對應(yīng)的特征碼。
【專利摘要】本發(fā)明公開了一種移動終端中惡意代碼的檢測方法,包括:獲取移動終端中的可執(zhí)行文件,并獲取可執(zhí)行文件中的函數(shù)以及函數(shù)的opcode代碼段內(nèi)容;對函數(shù)的opcode代碼段內(nèi)容進行反匯編解析以獲取opcode代碼段內(nèi)容中的數(shù)據(jù)流信息;根據(jù)數(shù)據(jù)流信息生成對應(yīng)的特征碼,并檢測特征碼是否存在于預(yù)設(shè)的惡意代碼特征庫中;以及如果檢測特征碼存在于預(yù)設(shè)的惡意代碼特征庫中,則判斷移動終端中具有惡意代碼。本發(fā)明實施例的方法,通過從程序數(shù)據(jù)流的角度對惡意代碼進行檢測,能夠取得更好地檢測效果,提高檢測結(jié)果的準(zhǔn)確度。本發(fā)明還公開了一種移動終端中惡意代碼的檢測裝置。
【IPC分類】G06F21-56
【公開號】CN104657661
【申請?zhí)枴緾N201510037893
【發(fā)明人】袁海濤, 胡雪飛, 潘宣辰
【申請人】武漢安天信息技術(shù)有限責(zé)任公司
【公開日】2015年5月27日
【申請日】2015年1月26日