匹配病毒特征的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種匹配病毒特征的方法及裝置。
【背景技術(shù)】
[0002] 現(xiàn)有的查殺計(jì)算機(jī)病毒或計(jì)算機(jī)木馬的軟件在查殺計(jì)算機(jī)病毒的過(guò)程中,通過(guò)將 目標(biāo)文件與病毒特征庫(kù)中的特征進(jìn)行匹配來(lái)對(duì)待查文件進(jìn)行檢測(cè)。通常情況下,每種計(jì)算 機(jī)病毒對(duì)應(yīng)病毒特征庫(kù)中的一個(gè)病毒特征記錄,一個(gè)病毒特征記錄對(duì)應(yīng)一組特征方法(一 個(gè)或一個(gè)以上的函數(shù))。在匹配過(guò)程中,則通過(guò)調(diào)用病毒特征記錄對(duì)應(yīng)的特征方法對(duì)待查文 件進(jìn)行校驗(yàn),若該組特征方法中的每個(gè)特征方法的返回結(jié)果均為校驗(yàn)通過(guò),則待查文件即 為病毒文件或被病毒感染的文件,感染的病毒即為該病毒特征記錄對(duì)應(yīng)的計(jì)算機(jī)病毒或木 馬。
[0003] 然而,病毒特征庫(kù)中通常存儲(chǔ)有多種病毒特征記錄,例如可分別對(duì)應(yīng)熊貓燒香病 毒、灰鴿子病毒等。計(jì)算機(jī)需要重復(fù)執(zhí)行多個(gè)病毒特征記錄中的多個(gè)特征方法,從而使得病 毒查殺的效率較低。
【發(fā)明內(nèi)容】
[0004] 基于此,有必要提供一種能夠提高病毒查殺效率的匹配病毒特征的方法。
[0005] -種匹配病毒特征的方法,包括:
[0006] 獲取輸入的目標(biāo)文件;
[0007] 加載病毒特征庫(kù),依次由所述病毒特征庫(kù)中提取特征函數(shù)標(biāo)識(shí),所述病毒特征庫(kù) 中包含特征函數(shù)標(biāo)識(shí)及其對(duì)應(yīng)的病毒特征類型標(biāo)識(shí);
[0008] 獲取與所述特征函數(shù)標(biāo)識(shí)對(duì)應(yīng)的特征函數(shù),通過(guò)調(diào)用所述特征函數(shù)對(duì)所述目標(biāo)文 件進(jìn)行校驗(yàn),獲取相應(yīng)的校驗(yàn)結(jié)果;
[0009] 根據(jù)所述校驗(yàn)結(jié)果獲取所述目標(biāo)文件對(duì)應(yīng)的病毒特征類型標(biāo)識(shí)。
[0010] 此外,還有必要提供一種能夠提高病毒查殺效率的匹配病毒特征的裝置。
[0011] 一種匹配病毒特征的裝置,包括:
[0012] 目標(biāo)文件獲取模塊,用于獲取輸入的目標(biāo)文件;
[0013] 特征函數(shù)選擇模塊,用于加載病毒特征庫(kù),依次由所述病毒特征庫(kù)中提取特征函 數(shù)標(biāo)識(shí),所述病毒特征庫(kù)中包含特征函數(shù)標(biāo)識(shí)及其對(duì)應(yīng)的病毒特征類型標(biāo)識(shí);
[0014] 病毒特征匹配模塊,用于獲取與所述特征函數(shù)標(biāo)識(shí)對(duì)應(yīng)的特征函數(shù),通過(guò)調(diào)用所 述特征函數(shù)對(duì)所述目標(biāo)文件進(jìn)行校驗(yàn),獲取相應(yīng)的校驗(yàn)結(jié)果;
[0015] 匹配結(jié)果生成模塊,用于根據(jù)所述校驗(yàn)結(jié)果獲取所述目標(biāo)文件對(duì)應(yīng)的病毒特征類 型標(biāo)識(shí)。
[0016] 上述匹配病毒特征的方法和裝置在對(duì)目標(biāo)文件進(jìn)行病毒查殺時(shí),同一個(gè)特征函數(shù) 只會(huì)執(zhí)行一次,而不會(huì)根據(jù)需要匹配的病毒特征類型的不同而執(zhí)行多次,從而減少了特征 函數(shù)重復(fù)執(zhí)行的次數(shù),提高了病毒查殺的效率。
【附圖說(shuō)明】
[0017] 圖1為一個(gè)實(shí)施例中匹配病毒特征的方法的流程圖;
[0018] 圖2為一個(gè)實(shí)施例中匹配病毒特征的裝置的結(jié)構(gòu)示意圖;
[0019] 圖3為另一個(gè)實(shí)施例中匹配病毒特征的裝置的結(jié)構(gòu)示意圖;
[0020] 圖4為一個(gè)實(shí)施例中執(zhí)行匹配病毒特征的方法的計(jì)算機(jī)硬件環(huán)境圖。
【具體實(shí)施方式】
[0021] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0022] 可以理解,本發(fā)明所使用的術(shù)語(yǔ)"第一"、"第二"等可在本文中用于描述各種元件, 但這些元件不受這些術(shù)語(yǔ)限制。這些術(shù)語(yǔ)僅用于將第一個(gè)元件與另一個(gè)元件區(qū)分。舉例來(lái) 說(shuō),在不脫離本發(fā)明的范圍的情況下,可以將第一客戶端稱為第二客戶端,且類似地,可將 第二客戶端稱為第一客戶端。第一客戶端和第二客戶端兩者都是客戶端,但其不是同一客 戶端。
[0023] 除非上下文另有特定清楚的描述,本發(fā)明中的元件和組件,數(shù)量既可以單個(gè)的形 式存在,也可以多個(gè)的形式存在,本發(fā)明并不對(duì)此進(jìn)行限定。本發(fā)明中的步驟雖然用標(biāo)號(hào)進(jìn) 行了排列,但并不用于限定步驟的先后次序,除非明確說(shuō)明了步驟的次序或者某步驟的執(zhí) 行需要其他步驟作為基礎(chǔ),否則步驟的相對(duì)次序是可以調(diào)整的。可以理解,本文中所使用的 術(shù)語(yǔ)"和/或"涉及且涵蓋相關(guān)聯(lián)的所列項(xiàng)目中的一者或一者以上的任何和所有可能的組 合。
[0024] 在一個(gè)實(shí)施例中,如圖1所示,一種匹配病毒特征的方法,該方法可依賴于計(jì)算機(jī) 程序,能夠運(yùn)行于基于馮洛伊曼體系的計(jì)算機(jī)系統(tǒng)上。
[0025] 步驟S102,獲取輸入的目標(biāo)文件。
[0026] 目標(biāo)文件即為需要進(jìn)行病毒掃描的文件。若用戶希望對(duì)某個(gè)文件進(jìn)行病毒掃描, 即可選中該文件,并輸入或選擇啟動(dòng)病毒掃描的指令,即可將該選中的需要進(jìn)行病毒掃描 的文件作為目標(biāo)文件輸入。在另一個(gè)應(yīng)用場(chǎng)景中,用戶也可以選中某個(gè)磁盤分區(qū)或目錄,啟 動(dòng)全局病毒查殺指令,即可遍歷該磁盤分區(qū)或目錄下的所有文件,并將每個(gè)遍歷到的文件 作為目標(biāo)文件輸入。
[0027] 步驟S104,加載病毒特征庫(kù),依次由病毒特征庫(kù)中提取特征函數(shù)標(biāo)識(shí),病毒特征庫(kù) 中包含特征函數(shù)標(biāo)識(shí)及其對(duì)應(yīng)的病毒特征類型標(biāo)識(shí)。
[0028] 病毒特征庫(kù)中存儲(chǔ)有用于對(duì)目標(biāo)文件進(jìn)行校驗(yàn)的特征函數(shù)的標(biāo)識(shí)信息(即特征函 數(shù)標(biāo)識(shí)),特征函數(shù)標(biāo)識(shí)即用于校驗(yàn)?zāi)繕?biāo)文件是否與某項(xiàng)病毒特征匹配的函數(shù)的標(biāo)識(shí)信息, 可以包括特征函數(shù)名稱、參數(shù)名稱或參數(shù)值等信息。
[0029] 例如,若某個(gè)特征函數(shù):
[0030] checkByKeyfford(Stringkeyword,intoffside,Filetarget)
[0031] 用于判斷目標(biāo)文件中以偏移量為100 (即參數(shù)中的offise值為100)處為起始的 數(shù)據(jù)是否為字符串"trojan"(即參數(shù)中的keyword值為"trojan"),即在調(diào)用時(shí)需要以:
[0032] checkByKeyWord("trojan",100,target)
[0033] 的形式調(diào)用,其中target為目標(biāo)文件的引用或指針,則其特征函數(shù)標(biāo)識(shí)即可為:
[0034] checkByKeyfford#keyword:trojan#offside:100
[0035] 需要說(shuō)明的是,上述特征函數(shù)標(biāo)識(shí)僅為本方法的一種實(shí)現(xiàn)方式,在其他實(shí)施例中, 不限于上述定義特征函數(shù)標(biāo)識(shí)的方法,可根據(jù)需要自行定義方便程序執(zhí)行的特征函數(shù)標(biāo) 識(shí)。例如,特征函數(shù)標(biāo)識(shí)也可對(duì)應(yīng)一組函數(shù),該組函數(shù)可視為一個(gè)整體,均用于校驗(yàn)?zāi)繕?biāo)文 件是否與特征函數(shù)標(biāo)識(shí)對(duì)應(yīng)的病毒特征對(duì)應(yīng)。在其他實(shí)施例中,多個(gè)特征函數(shù)標(biāo)識(shí)也可對(duì) 應(yīng)同一個(gè)函數(shù),例如,
[0036] checkByKeyWord#keyword:trojan#offside:100 和checkByKeyWord#keyword: panda#offside:200 可對(duì)應(yīng)同一個(gè)特征函數(shù):checkByKeyWord(String[]keyword,int[] offside,Filetarget),在調(diào)用時(shí),函數(shù)參數(shù)中的數(shù)組元素keyword[0]可以是"trojan", 1^}^(^(1[1]可以是、311(^";函數(shù)參數(shù)中的數(shù)組元素〇€€81(16[0]可以是100,〇€€81(16[1] 可以是200。
[0037] 在本實(shí)施例中,可遍歷病毒特征庫(kù)中的特征函數(shù)標(biāo)識(shí),每次一個(gè)或者每次多個(gè)提 取特征函數(shù)標(biāo)識(shí)。例如,若以單線程或單進(jìn)程方式進(jìn)行匹配,則可在遍歷病毒特征庫(kù)時(shí),每 次提取一個(gè)特征函數(shù)標(biāo)識(shí);若以多線程或多進(jìn)程的方式進(jìn)行匹配,則可在遍歷病毒特征庫(kù) 時(shí),每次提取與線程數(shù)或進(jìn)程數(shù)對(duì)應(yīng)個(gè)數(shù)的特征函數(shù)標(biāo)識(shí)。
[0038] 在本實(shí)施例中,需要對(duì)病毒特征庫(kù)進(jìn)行預(yù)先配置,其方法為:
[0039] 獲取輸入的特征函數(shù)標(biāo)識(shí),獲取輸入的與特征函數(shù)標(biāo)識(shí)對(duì)應(yīng)的病毒特征類型標(biāo) 識(shí);生成特征函數(shù)標(biāo)識(shí)與病毒特征類型標(biāo)識(shí)的映射信息,根據(jù)映射信息生成病毒特征庫(kù),映 射信息包括一對(duì)一、多對(duì)一、一對(duì)多或多對(duì)多的對(duì)應(yīng)關(guān)系中的至少一種。
[0040] 病毒特征類型標(biāo)識(shí)即對(duì)應(yīng)了具體的某種類型的計(jì)算機(jī)病毒或木馬。例如,可設(shè)置 熊貓燒香病毒的病毒特征類型標(biāo)識(shí)為00001,灰鴿子病毒的病毒特征類型標(biāo)識(shí)為00002,蠕 蟲(chóng)病毒的病毒特征類型標(biāo)識(shí)為00003??缮稍摬《咎卣黝愋蜆?biāo)識(shí)與輸入的特征函數(shù)標(biāo)識(shí) 的映射信息。若最終通過(guò)匹配得到目標(biāo)文件對(duì)應(yīng)某個(gè)或多個(gè)病毒特征類型標(biāo)識(shí),則表示該 目標(biāo)文件已被該某個(gè)或多個(gè)病毒特征類型標(biāo)識(shí)對(duì)應(yīng)的計(jì)算機(jī)病毒或木馬感染。
[0041] 映射信息可以是一對(duì)一的。例如,若查殺熊貓燒香病毒僅用了唯一的特征函數(shù):
[0042] checkByKeyfford#keyword:panda#offside:100
[0043] 即可在數(shù)據(jù)庫(kù)中創(chuàng)建checkByKeyWord#keyword:panda#offside: 100 與 00001 的 映射記錄。
[0044] 映射信息也可以是多對(duì)一的。例如,查殺熊貓燒香病毒需要用到兩個(gè)特征函數(shù):
[0045] checkByKeyfford#keyword:panda#offside:100
[0046] checkByKeyfford#keyword:panda#offside:200
[0047] 即可在數(shù)據(jù)庫(kù)中創(chuàng)建:
[0048] checkByKeyWord#keyword:panda#offside: 100 與 00001 的映射記錄以及 checkByKeyWord#keyword:panda#offside:200 與 00001 的映射記錄(即多個(gè)特征函數(shù)標(biāo)識(shí) 對(duì)應(yīng)一個(gè)病毒特征類型標(biāo)識(shí))。
[0049] 映射信息也可以是一對(duì)多的。例如,查殺熊貓燒香病毒和灰纟鳥(niǎo)子病毒均需要用到 特征函數(shù):
[0050]checkByKeyfford#keyword:trojan#offside:100
[0051] 即可在數(shù)據(jù)庫(kù)中創(chuàng)建:
[0052]checkByKeyWord#keyword:trojan#offside: 100 與 00001 的映射記錄以及 checkByKeyWord#keyword:trojan#offside:100 與 00002 的映射記錄(即一個(gè)特征函數(shù)標(biāo) 識(shí)對(duì)應(yīng)多個(gè)病毒特征類型標(biāo)識(shí))。
[0053] 映射信息也可以是多對(duì)多的。例如,查殺熊貓燒香病毒和灰纟鳥(niǎo)子病毒均需要用到 特征函數(shù):
[0054]checkByKeyfford#keyword:trojan#offside :100
[0055]checkByKeyfford#keyword:trojan#o