PI函數(shù)的屬性。具體的,DOM的結(jié)構(gòu)可以包括一個節(jié)點,節(jié)點的信息包括Document (文件)API函數(shù)、Element (元素)API函數(shù)及CharacterData (特征數(shù)據(jù))API函數(shù)。
[0078]其中,節(jié)點所調(diào)用的API函數(shù)可以包括:
[0079]Node API函數(shù)定義了每個節(jié)點的類型和作用;
[0080]Document API函數(shù)定義了 DOM文檔結(jié)構(gòu)變更操作相關(guān)內(nèi)容;
[0081]Element API 函數(shù)定義 HTML (Hyper Text Mark-up Language,超文本標記語言);
[0082]CharacterData API函數(shù)處理文本域標簽與注釋內(nèi)容標簽。
[0083]另外,可選的,JavasciptCore可以根據(jù)動態(tài)代碼中至少一個標簽,調(diào)用M2個API函數(shù),并獲取M2個API函數(shù)的信息,對于動態(tài)代碼來說,一個標簽可以是一個封裝好的函數(shù),由至少一個API函數(shù)組成,其中API函數(shù)的信息包括API函數(shù)的名稱及API函數(shù)的屬性。進一步可選的,如果動態(tài)代碼在解析過程中對于靜態(tài)代碼所對應的M1 fAPI函數(shù)有影響,則需要重新對靜態(tài)代碼所對應的M1 fAPI函數(shù)的名稱及M1 fAPI函數(shù)的屬性進行修改,使得WebCore重新對靜態(tài)代碼進行解析,從而獲取實現(xiàn)DOM結(jié)構(gòu)中的節(jié)點所調(diào)用的API函數(shù),并獲取API函數(shù)的信息。其中,MfM2 = N。
[0084]之后,將N個API函數(shù)的信息組合成API函數(shù)序列。
[0085]可選的,預設(shè)程序可以是Hook程序,Hook是一種用于改變API (Applicat1nProgramming Interface,應用程序接口)函數(shù)執(zhí)行結(jié)果的技術(shù)。具的,可以通過運行Hook程序,將WebCore加載DOM的結(jié)構(gòu)中的節(jié)點時調(diào)用的M1個API函數(shù)以及通過JavasciptCore運行動態(tài)代碼時調(diào)用的M2fAPI函數(shù)攔截下來,并記錄N個API函數(shù)的信息,使得網(wǎng)頁代碼在運行之后,不生成運行結(jié)果,可以記錄網(wǎng)頁代碼運行時生成的運行代碼,并且,對于具有相同功能,但編寫格式不同的網(wǎng)頁代碼,因為在運行時都是調(diào)用的是相同的API函數(shù),所以生成的運行代碼的格式都是相同的,這樣,能夠解決現(xiàn)有技術(shù)中網(wǎng)頁代碼的編寫格式較多,使得網(wǎng)頁代碼與惡意特征匹配時,一個惡意特征序列對應多個不同的網(wǎng)頁代碼編寫格式,從而導致匹配不全的問題。
[0086]分別以運行代碼中一個屬性、一個函數(shù)及一個節(jié)點為例進行說明,通過Hook程序運行之后,可以將運行代碼的格式進行調(diào)整。
[0087]例如,運行代碼中的一個屬性:
[0088]Shellcode = unescape ( ‘ % u9090% ue8fc…,);
[0089]通過Hook程序運行之后的運行代碼為:
[0090]FUNC:unescape ( u9090% ue8fc...,);
[0091]ATTR:D0Mffindow.shellcode = \x90\x90\x90\x90\xfc\xe8 ;
[0092]一個函數(shù):
[0093]document, write ( ‘〈table style = posit1n:absolute ;clip:rect (0)>,);
[0094]通過Hook程序運行之后的運行代碼為:
[0095]FUNC:HTMLDocument.write (<tablestyle = po s i t i on: ab so I u t e ;clip:rect (0)? ;
[0096]—個節(jié)點:
[0097]〈table style = “posit1n:absolute ;clip:rect (0),,> ;
[0098]通過Hook程序運行之后的運行代碼為:
[0099]table (style = posit1n:absolute ;clip:rect (O));
[0100]S204、將API函數(shù)序列與已經(jīng)存儲的惡意特征庫中的惡意特征序列進行比較。
[0101]其中,惡意特征庫用于存儲惡意特征序列,可以將常見的惡意特征序列存儲在惡意特征庫中,惡意特征序列是通過對已識別出的惡意程序代碼進行解析,將惡意程序代碼解析過程中調(diào)用的API函數(shù)序列作為惡意特征序列而得到的。惡意特征庫包含至少一個惡意特征序列,一個惡意特征序列包含至少一個惡意特征。惡意特征庫中的惡意特征序列信息通常采用XML(Extensible Markup Language,可擴展標記語言)格式進行存儲。在進行惡意特征序列比較之前,可以將惡意特征序列進行分類,因為不同類的數(shù)據(jù)比較方式不同。
[0102]可選的,惡意特征庫中的惡意特征序列可以包括:sid(行為序列編號)信息,order (排序)信息,verdict (判定)信息。其中,sid用于定義惡意特征在惡意特征序列中的位置,可以從I開始編號,本發(fā)明不做具體的限制;order用于定義惡意特征進行比較時的順序,若為true,表示順序比較,若為false,則表示無序比較,一般默認為順序比較;verdict用于判斷某一特征是否屬于惡意特征,若為suspect (可疑),表示不屬于惡意特征,若為malic1us (惡意),則表示屬于惡意特征,可選的,可以預先定義一個預設(shè)值,當大于預設(shè)值時,該特征屬于惡意特征,當小于預設(shè)值時,該特征不屬于惡意特征。
[0103]可選的,惡意特征庫中惡意特征的信息可以包括:name (名稱)信息,icase (大小寫精確匹配開關(guān))信息,type (類型)信息,index(索引)信息及types (類型)信息。其中,name用于定義具體惡意特征的名稱;icaSe用于指示在比較的過程中,是否忽略大小寫,若為true,表示忽略大小寫,若為false,則表示不忽略大小寫,一般默認值為false ;type用于定義name的類型,一般默認type為funct1n, funct1n用于標識name為函數(shù)名稱;index標識函數(shù)參數(shù)的序號從I開始,當然,也可以不從I開始,在此本發(fā)明不做任何限制;types用于指示進行比較時參數(shù)的類型,若為string(字符串),則表示按字符串方式進行比較,若為integer (整數(shù)),則表示按數(shù)字進行比較,若為length (長度),則表示用字符串的長度進行比較,一般默認為string,在此,在進行惡意特征比較時,對于具體選用哪種方式進行比較,本發(fā)明不做限制。
[0104]可選的,惡意特征庫中還可以包括根節(jié)點。具體的,根節(jié)點的信息可以包括:enable(許可)信息和log(日志)信息。其中,enable用于指示是否進行惡意特征比較,若為true,表示進行惡意特征比較,若為false,則表示不進行惡意特征比較;log用于指示是否進行輸出,若為true,表示進行輸出,若為false,則表示不進行輸出。在此,本發(fā)明不做具體限制。
[0105]在進行惡意特征序列匹配時比較時,若采用string (字符串)方式進行比較時,則可以通過equal (相等)、ic-equal (忽略大小寫)及regex (正則表達式)三種參數(shù)進行比較;若采用integer方式或者length方式進行匹配時比較,均可以通過greater (大于)、equal及l(fā)ess (小于)這三種信息參數(shù)進行比較。其中,equal表示比較的參數(shù)等于預設(shè)閾值,ic-equal表示在忽略大小寫下比較的參數(shù)等于預設(shè)閾值,regex表示用正則的方式比較參數(shù),greater表示比較的參數(shù)大于預設(shè)閾值,less表示比較的參數(shù)小于預設(shè)閾值。
[0106]可選的,以某一個API函數(shù)序列為例進行說明,編寫該API函數(shù)序列的惡意特征序列,如下所述:
[0107]例如,該API函數(shù)序列:
[0108]HTML Document, write ?table style = posit1n:absolute ;clip:rect (0)? ;
[0109]可以編寫為:
[0110]〈methods sid = I order = ture verdict = malic1us)
[0111]〈method name =’ HTML Document, write,
[0112]Type =’ funct1n,>
[0113]〈argument index =,I,type =,string,compare =,ic-equalJ >
[0114]< ! [CDATA[〈table
[0115]Style = posit1n:absolute ;clip:rect (0) >]] >
[0116]〈/argument〉
[0117]〈/method〉
[0118]〈/methods〉
[0119]可選的,將API函數(shù)序列與已經(jīng)存儲在惡意特征庫中的惡意特征序列進行比較,若API函數(shù)序列包含的N個API函數(shù)與惡意特征序列中的惡意特征相同的數(shù)量大于或等于第一閾值,則確認網(wǎng)頁代碼中包含惡意程序。
[0120]可選的,若N個API函數(shù)中M個API函數(shù)分別與惡意特征序列中M個惡意特征相同,且M個API函數(shù)在API函數(shù)序列中的排列順序與M個惡意特征在惡意特征序列中的排列順序相同,則確認網(wǎng)頁代碼中包含惡意程序,M為整數(shù),且M大于或等于第一閾值,M小于或等于N??蛇x的,第一閾值