本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種計(jì)算機(jī)病毒的檢測(cè)方法及裝置。
背景技術(shù):
在互聯(lián)網(wǎng)時(shí)代,計(jì)算機(jī)病毒極大地威脅著計(jì)算機(jī)的安全。計(jì)算機(jī)病毒傳染性極強(qiáng),計(jì)算機(jī)隨時(shí)都有可能被計(jì)算機(jī)病毒感染,而且計(jì)算機(jī)病毒的破壞力極大,可能會(huì)導(dǎo)致計(jì)算機(jī)系統(tǒng)癱瘓、信息泄露等。
當(dāng)計(jì)算機(jī)系統(tǒng)中存在病毒文件或計(jì)算機(jī)系統(tǒng)中的文件被病毒感染時(shí),需要通過(guò)殺毒軟件對(duì)系統(tǒng)中的文件進(jìn)行掃描,以便清除病毒。在對(duì)腳本病毒進(jìn)行檢測(cè)時(shí),一般是在腳本的編碼中尋找具備病毒特征的代碼,如果腳本編碼中包含所述具備病毒特征的代碼,則判斷該文件為病毒文件。
但是病毒文件往往采用變形的方式躲避殺毒軟件的檢測(cè),如果僅僅對(duì)文件代碼進(jìn)行搜索,會(huì)難以發(fā)現(xiàn)以變形方式隱藏在文件中的惡意代碼。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種計(jì)算機(jī)病毒的檢測(cè)方法,用以解決現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
本申請(qǐng)實(shí)施例還提供一種計(jì)算機(jī)病毒的檢測(cè)裝置,用以解決現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
本申請(qǐng)實(shí)施例采用下述技術(shù)方案:
一種計(jì)算機(jī)病毒的檢測(cè)方法,包括:
對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析,根據(jù)所述詞語(yǔ)分析的結(jié)果,構(gòu)建所述 被檢測(cè)腳本的組合編碼腳本集合;所述組合編碼腳本集合包括所述被檢測(cè)腳本編碼所對(duì)應(yīng)的至少一個(gè)腳本元素;
將所述組合編碼腳本集合中的腳本元素與預(yù)設(shè)的病毒庫(kù)中的病毒腳本元素進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果判斷所述組合編碼腳本集合中是否包含病毒腳本元素,進(jìn)而判斷所述被檢測(cè)腳本是否為病毒腳本。
一種計(jì)算機(jī)病毒的檢測(cè)裝置,包括:
集合構(gòu)建單元:用于對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析,根據(jù)所述詞語(yǔ)分析的結(jié)果,構(gòu)建所述被檢測(cè)腳本的組合編碼腳本集合;所述組合編碼腳本集合包括所述被檢測(cè)腳本編碼所對(duì)應(yīng)的至少一個(gè)腳本元素;
病毒判斷單元:用于將所述組合編碼腳本集合中的腳本元素與預(yù)設(shè)的病毒庫(kù)中的病毒腳本元素進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果判斷所述組合編碼腳本集合中是否包含病毒腳本元素,進(jìn)而判斷所述被檢測(cè)腳本是否為病毒腳本。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
相對(duì)于現(xiàn)有技術(shù)中通過(guò)判斷腳本代碼中是否包含病毒特征代碼來(lái)判斷腳本是否為病毒腳本,本方案將被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析后,構(gòu)建被檢測(cè)腳本的組合編碼腳本集合,通過(guò)判斷所述組合編碼腳本集合中是否包含病毒腳本元素,判斷被檢測(cè)腳本是否為病毒腳本,提高了計(jì)算機(jī)病毒的識(shí)別率,解決了現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例1提供的一種計(jì)算機(jī)病毒檢測(cè)方法的實(shí)現(xiàn)流程示意圖;
圖2為本申請(qǐng)實(shí)施例2提供的一種計(jì)算機(jī)病毒檢測(cè)方法的一種實(shí)現(xiàn)流程示意圖;
圖3為本申請(qǐng)實(shí)施例3提供的一種計(jì)算機(jī)病毒檢測(cè)裝置的具體結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說(shuō)明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
為解決現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題,本申請(qǐng)實(shí)施例1提供一種計(jì)算機(jī)病毒檢測(cè)方法。該方法的執(zhí)行主體,可以但不限于為手機(jī)、平板電腦、個(gè)人電腦(Personal Computer,PC)等任何可以運(yùn)行殺毒引擎的終端設(shè)備中的至少一種。此外,該方法的執(zhí)行主體,也可以是殺毒引擎本身。
為便于描述,下文以該方法的執(zhí)行主體為殺毒引擎為例,對(duì)該方法的實(shí)施方式進(jìn)行介紹??梢岳斫?,該方法的執(zhí)行主體為殺毒引擎只是一種示例性的說(shuō)明,并不應(yīng)理解為對(duì)該方法的限定。
該方法的實(shí)現(xiàn)流程示意圖如圖1所示,包括下述步驟:
步驟11:對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析,根據(jù)所述詞語(yǔ)分析的結(jié)果,構(gòu)建所述被檢測(cè)腳本的組合編碼腳本集合;
本申請(qǐng)實(shí)施例中,所述腳本可以是由腳本語(yǔ)言編寫(xiě)的以純文本形式保存的 程序,所述腳本可以控制計(jì)算機(jī)進(jìn)行運(yùn)算操作。所述腳本比如可以是利用JavaScript語(yǔ)言編寫(xiě)的JS腳本、利用Visual Basic Script語(yǔ)言編寫(xiě)的VBScript腳本等。所述編碼為編寫(xiě)所述腳本的代碼。
在實(shí)際應(yīng)用中,在對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析之前,可以預(yù)先確定被檢測(cè)腳本的類(lèi)型,然后利用與所述被檢測(cè)腳本的類(lèi)型相對(duì)應(yīng)的腳本殺毒引擎對(duì)被檢測(cè)腳本進(jìn)行處理。
本申請(qǐng)實(shí)施例中所述的腳本殺毒引擎,為判斷腳本是否為病毒腳本并進(jìn)行病毒清理的程序。由于不同類(lèi)型的腳本的編寫(xiě)語(yǔ)言不同,本申請(qǐng)實(shí)施例中,可以根據(jù)待檢測(cè)腳本的類(lèi)型,確定與所述待檢測(cè)腳本的類(lèi)型對(duì)應(yīng)的腳本殺毒引擎進(jìn)行處理。
在實(shí)際應(yīng)用中,可以根據(jù)腳本的類(lèi)型,設(shè)置與腳本的類(lèi)型對(duì)應(yīng)的腳本殺毒引擎。本申請(qǐng)實(shí)施例中的腳本殺毒引擎所處理的腳本的類(lèi)型包括但不限于下述幾種:JS(JavaScript)腳本、VBScript(Microsoft Visual Basic Script Editon)腳本、PHP(Hypertext Preprocessor)腳本和ASP(Active Server Page)腳本。
與所述腳本的類(lèi)型相對(duì)應(yīng),所述腳本殺毒引擎包括但不限于下述幾種:JS腳本殺毒引擎、VBScript腳本殺毒引擎、PHP腳本殺毒引擎和ASP腳本殺毒引擎。
本申請(qǐng)實(shí)施例中,腳本殺毒引擎對(duì)腳本的分析規(guī)則與腳本的類(lèi)型有關(guān),即腳本殺毒引擎可以根據(jù)與之對(duì)應(yīng)的腳本的類(lèi)型的腳本規(guī)范,對(duì)該類(lèi)型腳本進(jìn)行分析。所述腳本規(guī)范比如可以是腳本的編碼規(guī)范。例如,JS腳本殺毒引擎可以根據(jù)JS腳本的腳本規(guī)范對(duì)JS腳本進(jìn)行分析。
為了獲取被檢測(cè)腳本的編碼,以便對(duì)被檢測(cè)腳本進(jìn)行分析,本申請(qǐng)實(shí)施例中,可以利用腳本編碼獲取引擎對(duì)腳本中的編碼進(jìn)行獲取。例如,可以利用windows平臺(tái)下的MS Script腳本引擎來(lái)實(shí)現(xiàn)對(duì)VBScript腳本代碼的獲取,MS Script腳本引擎可以通過(guò)運(yùn)行VBScript腳本代碼,進(jìn)而提取VBScript腳本代碼中的變量、函數(shù)等信息。
本申請(qǐng)實(shí)施例中,還可以通過(guò)特征函數(shù)捕獲函數(shù)來(lái)獲取被檢測(cè)腳本的編碼。具體地,可以預(yù)先設(shè)定特征函數(shù)、以及特征函數(shù)捕獲函數(shù)與特征函數(shù)的對(duì)應(yīng)關(guān)系;當(dāng)被檢測(cè)腳本調(diào)用特征函數(shù)時(shí),將該特征函數(shù)替換為與該特征函數(shù)對(duì)應(yīng)的特征函數(shù)捕獲函數(shù),例如,對(duì)于JavaScript腳本,可以采用Hook JS的方式進(jìn)行替換,Hook指的是將一個(gè)函數(shù)的調(diào)用變成另一個(gè)函數(shù)的調(diào)用;利用特征函數(shù)捕獲函數(shù)獲得特征函數(shù)中的編碼。
需要說(shuō)明的是,在對(duì)被檢測(cè)腳本的編碼進(jìn)行獲取時(shí),對(duì)于混淆加密的腳本,可以對(duì)混淆加密的腳本進(jìn)行解混淆處理,獲得混淆加密前的原始編碼。所述混淆加密,指將編碼中的各種元素(如變量,函數(shù),類(lèi)的名字)按照某種規(guī)則轉(zhuǎn)換成其它名字進(jìn)行表示,從而進(jìn)行加密,使得閱讀的人無(wú)法根據(jù)名字猜測(cè)其用途。
在實(shí)際應(yīng)用中,由于不可執(zhí)行編碼一般不會(huì)對(duì)計(jì)算機(jī)中的數(shù)據(jù)帶來(lái)危害,為了減少編碼分析時(shí)的運(yùn)算量,在獲取腳本編碼時(shí),可以?xún)H獲取被檢測(cè)腳本的可執(zhí)行編碼,并在后續(xù)步驟中僅針對(duì)可執(zhí)行代碼進(jìn)行詞語(yǔ)分析,以便減少詞語(yǔ)分析時(shí)的運(yùn)算量。
基于上述編碼獲取方法獲取到被檢測(cè)腳本的編碼后,可以對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析。所述詞語(yǔ)分析包括詞法分析、語(yǔ)法分析、表達(dá)式分析中的至少一種。
具體地,可以對(duì)被檢測(cè)腳本進(jìn)行詞法分析,確定實(shí)際腳本中每個(gè)詞語(yǔ)單元的單詞類(lèi)型集合。
所述詞語(yǔ)單元的單詞類(lèi)型集合,為根據(jù)所述詞語(yǔ)單元可能具備的單詞類(lèi)型構(gòu)建的集合。所述單詞類(lèi)型集合中的元素為不同單詞類(lèi)型的單詞。為了便于描述,在這里將單詞類(lèi)型集合中的元素稱(chēng)為單詞類(lèi)型元素。所述單詞類(lèi)型集合包括詞語(yǔ)單元所對(duì)應(yīng)的至少一個(gè)單詞類(lèi)型元素。所述詞語(yǔ)單元的單詞類(lèi)型比如可以是關(guān)鍵字、標(biāo)識(shí)符、數(shù)字、標(biāo)點(diǎn)、運(yùn)算符、注釋、字符串、正則表達(dá)式等單詞類(lèi)型。例如,詞語(yǔ)單元A可能具備的單詞類(lèi)型為關(guān)鍵字和標(biāo)識(shí)符,則可以確 定詞語(yǔ)單元A的單詞類(lèi)型集合為{關(guān)鍵字A,標(biāo)識(shí)符A}。
也可以對(duì)所述被檢測(cè)腳本進(jìn)行語(yǔ)法分析,確定所述被檢測(cè)腳本中每個(gè)語(yǔ)句單元的語(yǔ)句類(lèi)型集合;所述語(yǔ)句類(lèi)型集合包括所述語(yǔ)句單元所對(duì)應(yīng)的至少一個(gè)語(yǔ)句類(lèi)型元素。所述語(yǔ)句單元的語(yǔ)句類(lèi)型集合為根據(jù)所述語(yǔ)句單元可能的語(yǔ)句類(lèi)型構(gòu)建的集合。為了便于描述,在這里將語(yǔ)句類(lèi)型集合中的單個(gè)語(yǔ)句類(lèi)型的語(yǔ)句稱(chēng)為語(yǔ)句類(lèi)型元素,所述語(yǔ)句單元的語(yǔ)句類(lèi)型比如可以是塊語(yǔ)句、空語(yǔ)句、變量語(yǔ)句、表達(dá)式語(yǔ)句、條件語(yǔ)句、遍歷語(yǔ)句、返回語(yǔ)句、中斷語(yǔ)句、異常語(yǔ)句、選擇語(yǔ)句等語(yǔ)句類(lèi)型。
還可以對(duì)所述被檢測(cè)腳本進(jìn)行表達(dá)式分析,確定所述被檢測(cè)腳本中每個(gè)表達(dá)式單元的表達(dá)式類(lèi)型集合;所述表達(dá)式類(lèi)型集合包括所述表達(dá)式單元所對(duì)應(yīng)的至少一個(gè)表達(dá)式類(lèi)型元素。所述表達(dá)式單元的表達(dá)式類(lèi)型集合為根據(jù)所述表達(dá)式單元可能的表達(dá)式類(lèi)型構(gòu)建的集合。為了便于描述,在這里將表達(dá)式類(lèi)型集合中的單個(gè)表達(dá)式類(lèi)型的表達(dá)式稱(chēng)為表達(dá)式類(lèi)型元素,所述表達(dá)式單元的表達(dá)式類(lèi)型比如可以是:賦值表達(dá)式、條件表達(dá)式、邏輯表達(dá)式、位運(yùn)算表達(dá)式、關(guān)系表達(dá)式、移位表達(dá)式、數(shù)學(xué)運(yùn)算表達(dá)式、后綴表達(dá)式、成員表達(dá)式、調(diào)用表達(dá)式、主表達(dá)式等表達(dá)式類(lèi)型。
在對(duì)所述被檢測(cè)腳本進(jìn)行語(yǔ)法分析后,可以根據(jù)所述語(yǔ)法分析的結(jié)果,構(gòu)建所述被檢測(cè)腳本對(duì)應(yīng)的組合編碼腳本集合。
在實(shí)際應(yīng)用中,可以?xún)H根據(jù)單詞類(lèi)型集合和語(yǔ)句類(lèi)型集合,構(gòu)建所述被檢測(cè)腳本對(duì)應(yīng)的組合編碼腳本集合。
具體的構(gòu)建方式比如可以包括下述步驟:
從單詞類(lèi)型集合中選取一個(gè)單詞類(lèi)型元素,從詞句類(lèi)型集合中選取一個(gè)詞句類(lèi)型元素;
將選取的所述單詞類(lèi)型元素、以及語(yǔ)句類(lèi)型元素組合成一個(gè)組合編碼腳本元素。
按照上述兩個(gè)步驟,遍歷所述單詞類(lèi)型集合、詞句類(lèi)型集合中的所有元素 組合成組合編碼腳本元素,利用所有組合編碼腳本元素構(gòu)成組合編碼腳本集合。所述組合編碼腳本集合包括所述被檢測(cè)腳本編碼所對(duì)應(yīng)的至少一個(gè)腳本元素。
例如,獲取到的被檢測(cè)腳本的編碼包含詞語(yǔ)單元A和語(yǔ)句單元C。經(jīng)過(guò)詞語(yǔ)分析得出:詞語(yǔ)單元A的可能的單詞類(lèi)型是關(guān)鍵字或標(biāo)識(shí)符;語(yǔ)句單元C的語(yǔ)句類(lèi)型可能是條件語(yǔ)句或選擇語(yǔ)句。則確定詞語(yǔ)單元A的單詞類(lèi)型集合為{關(guān)鍵字A,標(biāo)識(shí)符A},語(yǔ)句類(lèi)型單元C的語(yǔ)句類(lèi)型集合為{條件語(yǔ)句C,選擇語(yǔ)句C}。在構(gòu)建所述被檢測(cè)腳本的組合編碼腳本元素時(shí),從單詞類(lèi)型集合中選取一個(gè)單詞類(lèi)型元素“關(guān)鍵字A”,從語(yǔ)句類(lèi)型集合中選取一個(gè)語(yǔ)句類(lèi)型“條件語(yǔ)句C”,則可生成當(dāng)生成虛擬腳本:詞語(yǔ)單元A(關(guān)鍵字)和語(yǔ)句單元C(條件語(yǔ)句)。類(lèi)似地,遍歷單詞類(lèi)型集合和語(yǔ)句類(lèi)型集合中的所以元素,構(gòu)建組合編碼腳本元素,將所有組合編碼腳本元素組合成組合編碼腳本集合,則所述組合編碼腳本集合包括如下組合編碼腳本元素:
詞語(yǔ)單元A(關(guān)鍵字)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(關(guān)鍵字)和語(yǔ)句單元C(選擇語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)和語(yǔ)句單元C(條件語(yǔ)句)。
在實(shí)際應(yīng)用中,可以根據(jù)單詞類(lèi)型集合、表達(dá)式類(lèi)型集合和語(yǔ)句類(lèi)型集合,構(gòu)建所述被檢測(cè)腳本對(duì)應(yīng)的組合編碼腳本集合。
具體的構(gòu)建方式比如可以包括下述步驟:
從單詞類(lèi)型集合中選取一個(gè)單詞類(lèi)型元素,從表達(dá)式類(lèi)型集合中選取一個(gè)表達(dá)式類(lèi)型元素,從詞句類(lèi)型集合中選取一個(gè)詞句類(lèi)型元素;
將選取的所述單詞類(lèi)型元素、表達(dá)式類(lèi)型元素以及語(yǔ)句類(lèi)型元素組合成一個(gè)組合編碼腳本元素。
按照上述兩個(gè)步驟,遍歷所述單詞類(lèi)型集合、表達(dá)式類(lèi)型集合、詞句類(lèi)型集合中的所有元素組合成組合編碼腳本元素,利用所有組合編碼腳本元素構(gòu)成 組合編碼腳本集合。所述組合編碼腳本集合包括所述被檢測(cè)腳本編碼所對(duì)應(yīng)的至少一個(gè)腳本元素。
例如,獲取到的被檢測(cè)腳本的編碼包含詞語(yǔ)單元A、表達(dá)式單元B和語(yǔ)句單元C。經(jīng)過(guò)詞語(yǔ)分析得出:詞語(yǔ)單元A的可能的單詞類(lèi)型是關(guān)鍵字或標(biāo)識(shí)符;表達(dá)式單元B的表達(dá)式類(lèi)型是賦值表達(dá)式或位運(yùn)表達(dá)式;語(yǔ)句單元C的語(yǔ)句類(lèi)型可能是條件語(yǔ)句或選擇語(yǔ)句。則,與上述根據(jù)詞語(yǔ)單元集合和語(yǔ)句單元集合構(gòu)建組合編碼腳本集合的方法類(lèi)似,構(gòu)建包含如下組合編碼腳本元素的組合編碼腳本集合:
詞語(yǔ)單元A(關(guān)鍵字)、表達(dá)式單元B(賦值表達(dá)式)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(關(guān)鍵字)、表達(dá)式單元B(賦值表達(dá)式)和語(yǔ)句單元C(選擇語(yǔ)句);
詞語(yǔ)單元A(關(guān)鍵字)、表達(dá)式單元B(位運(yùn)算表達(dá)式)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(關(guān)鍵字)、表達(dá)式單元B(位運(yùn)算表達(dá)式)和語(yǔ)句單元C(選擇語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)、表達(dá)式單元B(賦值表達(dá)式)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)、表達(dá)式單元B(賦值表達(dá)式)和語(yǔ)句單元C(選擇語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)、表達(dá)式單元B(位運(yùn)算表達(dá)式)和語(yǔ)句單元C(條件語(yǔ)句);
詞語(yǔ)單元A(標(biāo)識(shí)符)、表達(dá)式單元B(位運(yùn)算表達(dá)式)和語(yǔ)句單元C(選擇語(yǔ)句)。
步驟12:將所述組合編碼腳本集合中的腳本元素與預(yù)設(shè)的病毒庫(kù)中的病毒腳本元素進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果判斷所述組合編碼腳本集合中是否包含病毒 腳本元素,進(jìn)而判斷所述被檢測(cè)腳本是否為病毒腳本。
本申請(qǐng)實(shí)施例中,所述預(yù)設(shè)的病毒庫(kù)中包含至少一個(gè)病毒腳本元素,所述病毒腳本元素具備病毒的特征,所述病毒庫(kù)中的病毒腳本元素可以用于確定組合編碼腳本元素是否為病毒腳本,所述病毒庫(kù)中的病毒樣本元素可以被實(shí)時(shí)更新。
本申請(qǐng)實(shí)施例中,所述預(yù)設(shè)的病毒庫(kù)是通過(guò)下述方法構(gòu)建的:
對(duì)病毒腳本的編碼進(jìn)行詞語(yǔ)分析;根據(jù)對(duì)所述病毒腳本編碼詞語(yǔ)分析的結(jié)果,構(gòu)建所述病毒腳本的病毒庫(kù),所述病毒庫(kù)包括所述病毒腳本所對(duì)應(yīng)的至少一個(gè)病毒腳本元素。
在實(shí)際應(yīng)用中,對(duì)病毒腳本的編碼進(jìn)行詞語(yǔ)分析并構(gòu)建病毒腳本的病毒庫(kù)的方法,與對(duì)被檢測(cè)腳本進(jìn)行詞法分析構(gòu)建被檢測(cè)腳本的組合編碼腳本集合的方法類(lèi)似,在此不再贅述。
本申請(qǐng)實(shí)施例中,可以將病毒腳本元素和組合編碼腳本元素進(jìn)行對(duì)比,來(lái)判斷組合編碼腳本元素是否為病毒,進(jìn)而判斷被檢測(cè)腳本是否為病毒腳本。
具體地,可以通過(guò)對(duì)比算法來(lái)對(duì)病毒腳本元素和組合編碼腳本元素進(jìn)行對(duì)比。所述對(duì)比算法可以獲得病毒腳本元素和組合編碼腳本元素之間的相似度,也可以掃描所述組合編碼腳本元素中是否包含病毒腳本元素中特定的關(guān)鍵編碼。
對(duì)比算法一般分為單模式對(duì)比算法和多模式對(duì)比算法兩種。單模式對(duì)比算法包括BF(Brute-Force)算法、KMP(Knuth-Morris-Pratt)算法、BM(Boyer-Moore)算法和QS(Quick Search)算法等。多模式對(duì)比算法包括經(jīng)典多模式對(duì)比DFSA(deterministic finite state automaton)算法和基于有序二叉樹(shù)的多模式對(duì)比算法。
在通過(guò)上述對(duì)比算法將病毒腳本元素和組合編碼腳本元素進(jìn)行對(duì)比后,可以根據(jù)病毒腳本元素的編碼和組合編碼腳本元素的編碼的相似度,來(lái)判斷組合編碼腳本元素是否為病毒。例如,可以預(yù)先設(shè)置如果所述相似度大于80%,則 判斷所述組合編碼腳本元素為病毒腳本元素,即判斷所述被檢測(cè)腳本為病毒腳本。
也可以根據(jù)組合編碼腳本元素的編碼中是否包含病毒腳本元素編碼的關(guān)鍵編碼,來(lái)判斷組合編碼腳本元素是否為病毒腳本元素。即,如果所述組合編碼腳本元素的編碼中包含病毒腳本元素編碼的關(guān)鍵編碼,則判斷所述組合編碼腳本元素為病毒腳本元素。所述關(guān)鍵編碼比如可以是具備行為特征的編碼,所述行為特征包括但不限于增加超文本標(biāo)記語(yǔ)言的iframe標(biāo)簽或script標(biāo)簽、執(zhí)行JS腳本中的document.write函數(shù)或creatElement函數(shù)。
基于上述病毒腳本檢測(cè)方法,若判定所述被檢測(cè)腳本為病毒腳本,則可以將所述被檢測(cè)腳本的組合編碼腳本集合中的組合編碼腳本元素,添加到病毒庫(kù)中,起到更新病毒庫(kù)的效果。
需要說(shuō)明的是,實(shí)施例1所提供方法的各步驟的執(zhí)行主體均可以是同一設(shè)備,或者,該方法也由不同設(shè)備作為執(zhí)行主體。比如,步驟11和步驟12的執(zhí)行主體為設(shè)備1;又比如,步驟11的執(zhí)行主體可以為設(shè)備1,步驟12的執(zhí)行主體可以為設(shè)備2;等等。
本申請(qǐng)實(shí)施例1提供的計(jì)算機(jī)病毒的檢測(cè)方法,相對(duì)于現(xiàn)有技術(shù)中通過(guò)判斷腳本代碼中是否包含病毒特征代碼來(lái)判斷腳本是否為病毒腳本,本方案將被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析后,構(gòu)建被檢測(cè)腳本的組合編碼腳本集合,通過(guò)判斷所述組合編碼腳本集合中是否包含病毒腳本元素,判斷被檢測(cè)腳本是否為病毒腳本,提高了計(jì)算機(jī)病毒的識(shí)別率,解決了現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
實(shí)施例2
本申請(qǐng)實(shí)施例2,主要介紹本申請(qǐng)實(shí)施例1提供的上述方法在實(shí)際中的一種應(yīng)用方案。
在對(duì)該方案的實(shí)現(xiàn)方式進(jìn)行詳細(xì)介紹前,先對(duì)該方案的實(shí)施場(chǎng)景進(jìn)行簡(jiǎn)單 介紹:
本申請(qǐng)實(shí)施例中,需要對(duì)某網(wǎng)頁(yè)中的JS腳本進(jìn)行檢測(cè),以判斷所述網(wǎng)頁(yè)中的JS腳本是否為病毒腳本。
基于上述實(shí)施場(chǎng)景,實(shí)施例2提供的信息展示過(guò)程如圖3所示,包括下述步驟:
步驟21:利用腳本編碼獲取引擎獲取所述JS腳本的編碼;
步驟22:對(duì)所述JS腳本的編碼進(jìn)行詞語(yǔ)分析;
具體地,對(duì)所述被檢測(cè)腳本進(jìn)行詞法分析,確定所述被檢測(cè)腳本中每個(gè)詞語(yǔ)單元的單詞類(lèi)型集合;所述單詞類(lèi)型集合包括所述詞語(yǔ)單元所對(duì)應(yīng)的至少一個(gè)單詞類(lèi)型元素;
對(duì)所述被檢測(cè)腳本進(jìn)行語(yǔ)法分析,確定所述被檢測(cè)腳本中每個(gè)語(yǔ)句單元的語(yǔ)句類(lèi)型集合;所述語(yǔ)句類(lèi)型集合包括所述語(yǔ)句單元所對(duì)應(yīng)的至少一個(gè)語(yǔ)句類(lèi)型元素;
對(duì)所述被檢測(cè)腳本進(jìn)行表達(dá)式分析,確定所述被檢測(cè)腳本中每個(gè)表達(dá)式單元的表達(dá)式類(lèi)型集合;所述表達(dá)式類(lèi)型集合包括所述表達(dá)式單元所對(duì)應(yīng)的至少一個(gè)表達(dá)式類(lèi)型元素。
步驟23:構(gòu)建所述JS腳本的組合編碼腳本集合;
具體地,從所述單詞類(lèi)型集合中選取一個(gè)單詞類(lèi)型元素,從所述表達(dá)式類(lèi)型集合中選取一個(gè)表達(dá)式類(lèi)型元素,從所述詞句類(lèi)型集合中選取一個(gè)詞句類(lèi)型元素;
將選取的所述單詞類(lèi)型元素、表達(dá)式類(lèi)型元素以及語(yǔ)句類(lèi)型元素組合成一個(gè)組合編碼腳本元素;
按照上述步驟,遍歷所述單詞類(lèi)型集合、表達(dá)式類(lèi)型集合、詞句類(lèi)型集合中的所有元素組合成組合編碼腳本元素,利用所有組合編碼腳本元素構(gòu)成組合編碼腳本集合。
步驟24:將所述組合編碼腳本集合中的組合腳本元素與預(yù)設(shè)的病毒庫(kù)中的 病毒腳本元素進(jìn)行對(duì)比;
其中,組合編碼腳本集合中的某組合編碼腳本元素和病毒庫(kù)中的某病毒腳本元素相似度為95%。
步驟25:根據(jù)預(yù)設(shè)的相似度閾值,判斷所述組合編碼腳本元素為病毒腳本元素,進(jìn)而判斷所述JS腳本為病毒腳本。
步驟26:將所述JS腳本的組合編碼腳本集合中的組合編碼腳本元素,添加到病毒庫(kù)中。
本申請(qǐng)實(shí)施例2提供的計(jì)算機(jī)病毒的檢測(cè)方法,相對(duì)于現(xiàn)有技術(shù)中通過(guò)判斷腳本代碼中是否包含病毒特征代碼來(lái)判斷腳本是否為病毒腳本,本方案將被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析后,構(gòu)建被檢測(cè)腳本的組合編碼腳本集合,通過(guò)判斷所述組合編碼腳本集合中是否包含病毒腳本元素,判斷被檢測(cè)腳本是否為病毒腳本,提高了計(jì)算機(jī)病毒的識(shí)別率,解決了現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
實(shí)施例3
為解決現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題,本申請(qǐng)實(shí)施例3提供一種計(jì)算機(jī)病毒檢測(cè)裝置。該計(jì)算機(jī)病毒檢測(cè)裝置的結(jié)構(gòu)示意圖如圖3所示,主要包括下述功能單元:
集合構(gòu)建單元31,用于對(duì)被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析,根據(jù)所述詞語(yǔ)分析的結(jié)果,構(gòu)建所述被檢測(cè)腳本的組合編碼腳本集合;所述組合編碼腳本集合包括所述被檢測(cè)腳本編碼所對(duì)應(yīng)的至少一個(gè)腳本元素;
病毒判斷單元32,用于將所述組合編碼腳本集合中的腳本元素與預(yù)設(shè)的病毒庫(kù)中的病毒腳本元素進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果判斷所述組合編碼腳本集合中是否包含病毒腳本元素,進(jìn)而判斷所述被檢測(cè)腳本是否為病毒腳本。
為了獲取構(gòu)建集合的元素,在一種實(shí)施方式中,所述集合構(gòu)建單元31,具體用于對(duì)所述被檢測(cè)腳本進(jìn)行詞法分析,確定所述被檢測(cè)腳本中每個(gè)詞語(yǔ)單元 的單詞類(lèi)型集合;所述單詞類(lèi)型集合包括所述詞語(yǔ)單元所對(duì)應(yīng)的至少一個(gè)單詞類(lèi)型元素;根據(jù)所述單詞類(lèi)型集合和所述語(yǔ)句類(lèi)型集合,構(gòu)建所述被檢測(cè)腳本對(duì)應(yīng)的組合編碼腳本集合。
在一種實(shí)施方式中,所述集合構(gòu)建單元31,還用于對(duì)所述被檢測(cè)腳本進(jìn)行表達(dá)式分析,確定所述被檢測(cè)腳本中每個(gè)表達(dá)式單元的表達(dá)式類(lèi)型集合;所述表達(dá)式類(lèi)型集合包括所述表達(dá)式單元所對(duì)應(yīng)的至少一個(gè)表達(dá)式類(lèi)型元素;
在一種實(shí)施方式中,所述集合構(gòu)建單元31,還用于從所述單詞類(lèi)型集合中選取一個(gè)單詞類(lèi)型元素,從所述表達(dá)式類(lèi)型集合中選取一個(gè)表達(dá)式類(lèi)型元素,從所述詞句類(lèi)型集合中選取一個(gè)詞句類(lèi)型元素;
將選取的所述單詞類(lèi)型元素、表達(dá)式類(lèi)型元素以及語(yǔ)句類(lèi)型元素組合成一個(gè)組合編碼腳本元素;
按照上述步驟,遍歷所述單詞類(lèi)型集合、表達(dá)式類(lèi)型集合、詞句類(lèi)型集合中的所有元素組合成組合編碼腳本元素,利用所有組合編碼腳本元素構(gòu)成組合編碼腳本集合。
為了提高詞語(yǔ)分析的效率,在一種實(shí)施方式中,所述集合構(gòu)建單元,還用于根據(jù)被檢測(cè)腳本的類(lèi)型,確定被檢測(cè)腳本的詞語(yǔ)分析引擎;利用所述詞語(yǔ)分析引擎,對(duì)所述被檢測(cè)腳本進(jìn)行詞語(yǔ)分析。
所述預(yù)設(shè)的病毒庫(kù),是通過(guò)下述方法構(gòu)建的:
對(duì)病毒腳本的編碼進(jìn)行詞語(yǔ)分析;
根據(jù)對(duì)所述病毒腳本編碼詞語(yǔ)分析的結(jié)果,構(gòu)建所述病毒腳本的病毒庫(kù),所述病毒庫(kù)包括所述病毒腳本所對(duì)應(yīng)的至少一個(gè)病毒腳本元素。
病毒庫(kù)更新單元33,用于若判定所述被檢測(cè)腳本為病毒腳本,則將所述被檢測(cè)腳本的組合編碼腳本集合中的組合編碼腳本元素,添加到病毒庫(kù)中。
相對(duì)于現(xiàn)有技術(shù)中通過(guò)判斷腳本代碼中是否包含病毒特征代碼來(lái)判斷腳本是否為病毒腳本,本申請(qǐng)實(shí)施例3提供的計(jì)算機(jī)病毒的檢測(cè)裝置,將被檢測(cè)腳本的編碼進(jìn)行詞語(yǔ)分析后,構(gòu)建被檢測(cè)腳本的組合編碼腳本集合,通過(guò)判斷 所述組合編碼腳本集合中是否包含病毒腳本元素,判斷被檢測(cè)腳本是否為病毒腳本,提高了計(jì)算機(jī)病毒的識(shí)別率,解決了現(xiàn)有技術(shù)中根據(jù)病毒特征代碼進(jìn)行病毒識(shí)別,導(dǎo)致的計(jì)算機(jī)病毒識(shí)別率低的問(wèn)題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性?xún)?nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所 作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。