專利名稱:一種病毒apk的識別方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及網(wǎng)絡(luò)信息安全的技術(shù)領(lǐng)域,特別是涉及ー種病毒APK的識別方法,以及,ー種病毒APK的識別裝置。
背景技術(shù):
Android是ー種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要使用于手機等移動終端,目前尚未有統(tǒng)一中文名稱。Android平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。APK是Android application package file 的縮寫,即 Android安裝包,也可以理解為Android終端上安裝的應(yīng)用軟件。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android終端中執(zhí)行即可安裝。apk文件和sis 一祥,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。APK文件其實是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是DalvikVM executes的全稱,即Android Dalvik執(zhí)行程序,并非標準的Java字節(jié)碼而是Dalvik字節(jié)碼。Android在運行ー個程序時首先需要UnZip,然后類似Symbian那樣直接運行,和Windows Mobile中的PE文件有區(qū)別。具體而言,APK文件的結(jié)構(gòu)如下表所示
權(quán)利要求
1.ー種病毒APK的識別方法,其特征在于,包括 預(yù)置病毒數(shù)據(jù)庫,所述病毒數(shù)據(jù)庫中包括病毒特征碼; 檢測目標Android安裝包APK中的指定文件中是否包含所述病毒特征碼; 若是,則確定所述目標Android安裝包APK為病毒APK。
2.如權(quán)利要求I所述的方法,其特征在于,所述指定文件包括可執(zhí)行文件,所述預(yù)置病毒數(shù)據(jù)庫的步驟包括 掃描源Android安裝包APK中的可執(zhí)行文件; 提取所述可執(zhí)行文件中的特定數(shù)據(jù),判斷所述特定數(shù)據(jù)是否包含病毒信息,其中,所述特定數(shù)據(jù)包括可執(zhí)行文件的頭部信息、可執(zhí)行文件常量池中的常量,和/或,可執(zhí)行文件中的操作指令; 若是,則根據(jù)所述特定數(shù)據(jù)生成病毒特征碼; 將所述病毒特征碼保存至病毒數(shù)據(jù)庫中。
3.如權(quán)利要求I或2所述的方法,其特征在于,所述可執(zhí)行文件包括Dex文件,所述Dex文件包括classes, dex文件,擴展名為.jar的文件,以及,Dex格式的文件。
4.如權(quán)利要求3所述的方法,其特征在于,所述病毒特征碼包括頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼;所述可執(zhí)行文件中的操作指令包括操作碼和操作數(shù)兩部分; 所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、類名函數(shù)名特征碼根據(jù)包含病毒信息的頭部信息、常量、操作數(shù)和類名函數(shù)名直接生成; 所述指令特征碼、指令特征碼序列根據(jù)包含病毒信息的操作指令直接生成,或者,根據(jù)包含病毒信息的操作碼和操作數(shù)的字符串或通配符生成; 所述將病毒特征碼保存至病毒數(shù)據(jù)庫中的步驟包括 將所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼分別保存在數(shù)據(jù)庫中不同的存儲區(qū)域; 或者, 將所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼保存在數(shù)據(jù)庫中,井分別標記分類標簽。
5.如權(quán)利要求4所述的方法,其特征在于,所述檢測目標Android安裝包APK中的指定文件中是否包含所述病毒特征碼的步驟包括 定位目標Android安裝包APK中可執(zhí)行文件的頭部信息,將所述頭部信息與病毒數(shù)據(jù)庫中的頭部信息特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 定位目標Android安裝包APK中可執(zhí)行文件常量池中的常量,將所述常量與病毒數(shù)據(jù)庫中的常量特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作數(shù),將所述操作數(shù)與病毒數(shù)據(jù)庫中的操作數(shù)特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作碼,將所述操作碼與病毒數(shù)據(jù)庫中的指令特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作碼,將所述操作碼與病毒數(shù)據(jù)庫中的指令特征碼序列進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 定位目標Android安裝包APK中可執(zhí)行文件常量池中的常量以及操作指令中的操作數(shù)所調(diào)用的類名和/或函數(shù)名,將所述類名和/或函數(shù)名與病毒數(shù)據(jù)庫中的類名函數(shù)名特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼。
6.如權(quán)利要求2或5所述的方法,其特征在于,所述指定文件還包括文本文件,所述預(yù)置病毒數(shù)據(jù)庫的步驟還包括 提取所述文本文件中的Iinux命令,判斷所述Iinux命令是否包含病毒信息; 若是,則根據(jù)所述Iinux命令生成病毒特征碼。
7.如權(quán)利要求6所述的方法,其特征在于,所述病毒特征碼還包括Iinux命令特征碼,所述檢測目標Android安裝包APK中的指定文件中是否包含病毒特征碼的步驟還包括 定位目標Android安裝包APK中的文本文件,將所述文本文件中的Iinux命令與病毒數(shù)據(jù)庫中的Iinux命令特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼。
8.如權(quán)利要求5所述的方法,其特征在于,所述可執(zhí)行文件中常量池中的常量包括字符串strings、類型types、域fields和方法methods中的常量;所述可執(zhí)行文件的頭部信息中包括摘要信息checksum和/或簽名信息Signature。
9.ー種病毒APK的識別裝置,其特征在于,包括 病毒數(shù)據(jù)庫生成模塊,用于預(yù)置病毒數(shù)據(jù)庫,所述病毒數(shù)據(jù)庫中包括病毒特征碼; 病毒檢測模塊,用于檢測目標Android安裝包APK中的指定文件中是否包含所述病毒特征碼; 病毒識別模塊,用于在所述目標Android安裝包APK中的指定文件中包含病毒特征碼時,確定所述目標Android安裝包APK為病毒APK。
10.如權(quán)利要求9所述的裝置,其特征在干,所述指定文件包括可執(zhí)行文件,所述病毒數(shù)據(jù)庫生成模塊包括 源文件掃描子模塊,用于掃描源Android安裝包APK中的可執(zhí)行文件; 特定數(shù)據(jù)提取子模塊,用于提取所述可執(zhí)行文件中的特定數(shù)據(jù),判斷所述特定數(shù)據(jù)是否包含病毒信息,其中,所述特定數(shù)據(jù)包括可執(zhí)行文件的頭部信息、可執(zhí)行文件常量池中的常量,和/或,可執(zhí)行文件中的操作指令; 第一特征碼生成子模塊,用于在所述特定數(shù)據(jù)包含病毒信息時,根據(jù)所述特定數(shù)據(jù)生成病毒特征碼;特征碼保存子模塊,用于將所述病毒特征碼保存至病毒數(shù)據(jù)庫中。
11.如權(quán)利要求9或10所述的裝置,其特征在于,所述可執(zhí)行文件包括Dex文件,所述Dex文件包括classes, dex文件,擴展名為 jar的文件,以及,Dex格式的文件。
12.如權(quán)利要求11所述的裝置,其特征在于,所述病毒特征碼包括頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼;所述可執(zhí)行文件中的操作指令包括操作碼和操作數(shù)兩部分; 所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、類名函數(shù)名特征碼根據(jù)包含病毒信息的頭部信息、常量、操作數(shù)和類名函數(shù)名直接生成; 所述指令特征碼、指令特征碼序列根據(jù)包含病毒信息的操作指令直接生成,或者,根據(jù)包含病毒信息的操作碼和操作數(shù)的字符串或通配符生成; 所述特征碼保存子模塊進一歩包括 分區(qū)保存単元,用于將所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼分別保存在數(shù)據(jù)庫中不同的存儲區(qū)域; 或者, 標簽保存単元,用于將所述頭部信息特征碼、常量特征碼、操作數(shù)特征碼、指令特征碼、指令特征碼序列、類名函數(shù)名特征碼保存在數(shù)據(jù)庫中,井分別標記分類標簽。
13.如權(quán)利要求12所述的裝置,其特征在于,所述病毒檢測模塊包括 第一檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件的頭部信息,將所述頭部信息與病毒數(shù)據(jù)庫中的頭部信息特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 第二檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件常量池中的常量,將所述常量與病毒數(shù)據(jù)庫中的常量特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 第三檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作數(shù),將所述操作數(shù)與病毒數(shù)據(jù)庫中的操作數(shù)特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 第四檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作碼,將所述操作碼與病毒數(shù)據(jù)庫中的指令特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 第五檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件操作指令中的操作碼,將所述操作碼與病毒數(shù)據(jù)庫中的指令特征碼序列進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼; 和/或, 第六檢測子模塊,用于定位目標Android安裝包APK中可執(zhí)行文件常量池中的常量以及操作指令中的操作數(shù)所調(diào)用的類名和/或函數(shù)名,將所述類名和/或函數(shù)名與病毒數(shù)據(jù)庫中的類名函數(shù)名特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼。
14.如權(quán)利要求10或13所述的裝置,其特征在于,所述指定文件還包括文本文件,所述病毒數(shù)據(jù)庫生成模塊還包括 Iinux命令提取子模塊,用于提取所述文本文件中的Iinux命令,判斷所述Iinux命令是否包含病毒信息; 第二特征碼生成子模塊,用于在所述Iinux命令包含病毒信息時,根據(jù)所述Iinux命令生成病毒特征碼。
15.如權(quán)利要求14所述的裝置,其特征在于,所述病毒特征碼還包括Iinux命令特征碼,所述病毒檢測模塊還包括 第七檢測子模塊,用于定位目標Android安裝包APK中的文本文件,將所述文本文件中的Iinux命令與病毒數(shù)據(jù)庫中的Iinux命令特征碼進行匹配,若匹配,則判定目標Android安裝包APK中的指定文件中包含病毒特征碼。
16.如權(quán)利要求12所述的裝置,其特征在于,所述可執(zhí)行文件中常量池中的常量包括字符串strings、類型types、域fields和方法methods中的常量;所述可執(zhí)行文件的頭部信息中包括摘要信息checksum和/或簽名信息Signature。
全文摘要
本申請?zhí)峁┝艘环N病毒APK的識別方法及裝置,其中,所述方法包括預(yù)置病毒數(shù)據(jù)庫,所述病毒數(shù)據(jù)庫中包括病毒特征碼;檢測目標Android安裝包APK中的指定文件中是否包含所述病毒特征碼;若是,則確定所述目標Android安裝包APK為病毒APK。本申請可以快速、準確、有效地識別出病毒APK及其變種,提高APK應(yīng)用的安全性。
文檔編號G06F21/00GK102663286SQ201210076889
公開日2012年9月12日 申請日期2012年3月21日 優(yōu)先權(quán)日2012年3月21日
發(fā)明者張旭, 王栒 申請人:奇智軟件(北京)有限公司