亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種宏病毒查殺的方法和裝置制造方法

文檔序號(hào):6513392閱讀:192來源:國知局
一種宏病毒查殺的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種宏病毒查殺的方法和裝置,其中的方法具體包括:安全設(shè)備通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。本發(fā)明能夠提高未知宏病毒的檢測能力,具備較好的反病毒效果,且能夠全面地從各種待查殺文檔中提取宏代碼,以及對感染宏病毒的各種待查殺文檔進(jìn)行修復(fù)處理。
【專利說明】一種宏病毒查殺的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)安全【技術(shù)領(lǐng)域】,具體涉及一種宏病毒查殺的方法和裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)的普及和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)信息時(shí)代已經(jīng)來臨。病毒作為信息的一種形式,具有繁殖、感染、破壞等特性,威脅著用戶的信息安全。計(jì)算機(jī)文檔,即WORD,EXCEL、PPT等文字編輯軟件產(chǎn)生的文件,被人們廣泛使用,而宏病毒作為專用于破壞計(jì)算機(jī)文檔信息安全的新型病毒,逐漸走進(jìn)人們的視線。
[0003]由于宏病毒藏于數(shù)據(jù)文件內(nèi),且其使用的腳本語法靈活多變,完成一個(gè)功能有很多種寫法,故識(shí)別一個(gè)文件是否有宏病毒非常困難。
[0004]現(xiàn)有的反病毒軟件所采用的反病毒方法幾乎都是依賴于病毒特征碼。由于計(jì)算機(jī)病毒通常都具有各自的身份等特征,當(dāng)一種計(jì)算機(jī)病毒出現(xiàn)后,首先找到該病毒具有的特征,依據(jù)該特征對該特征所表征的病毒進(jìn)行搜尋和處理;即現(xiàn)有技術(shù)對于已知宏病毒有一定的查殺能力。
[0005]但是,由于宏病毒感染、發(fā)作在先,反毒在后;而宏語言是一種腳本,稍作修改即可產(chǎn)生變種,甚至可以傳播過程中修改自身,每傳播一次就變化一次;故現(xiàn)有技術(shù)很難跟上宏病毒變化的速度,對未知宏病毒基本無查殺能力,反病毒效果較差。

【發(fā)明內(nèi)容】

[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種宏病毒查殺的方法和裝置。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供了一種宏病毒查殺的方法,包括:
[0008]安全設(shè)備通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0009]依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;
[0010]將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0011]依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;
[0012]依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。
[0013]可選地,所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔;
[0014]則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括:解析得到待查殺文檔的樹形目錄結(jié)構(gòu);
[0015]則所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括:
[0016]遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0017]將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0018]針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0019]所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括:
[0020]修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱;
[0021]針對所述匹配成功的目錄項(xiàng),將其宏代碼清除;
[0022]針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
[0023]可選地,所述待查殺文檔為EXCEL文檔;
[0024]則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,還包括:
[0025]在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中的描述字段,以不影響所述EXCEL文檔的正常打開。。
[0026]可選地,所述待查殺文檔為PPT文檔;
[0027]則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括:
[0028]解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)包括POWERPOINTDOCUMENT目錄項(xiàng);
[0029]解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu);
[0030]對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括如下文檔中的一項(xiàng)或多項(xiàng):PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng);
[0031]以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu);
[0032]所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括:
[0033]遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0034]將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0035]針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0036]所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括:
[0037]在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;和/或
[0038]在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu),其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
[0039]可選地,所述待查殺文檔為0FFICE07文檔;
[0040]則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括:
[0041]解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)包括內(nèi)嵌目錄;
[0042]以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);[0043]則所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括:
[0044]遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0045]將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0046]針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0047]所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括:
[0048]修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
[0049]可選地,所述解壓后數(shù)據(jù)還包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔;
[0050]則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,還包括:以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0051]則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,還包括:
[0052]在所述0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
[0053]可選地,所述特定宏目錄的名稱包括:VBA_PROJECT_CUR和/或Macros。
[0054]可選地,通過如下步驟構(gòu)造所述行為代碼庫:
[0055]收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼;
[0056]將所述行為代碼保存至行為代碼庫;
[0057]其中,所述收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼的步驟,進(jìn)一步包括:
[0058]收集各種計(jì)算機(jī)文檔的宏病毒樣本;
[0059]解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0060]依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼;
[0061]依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
[0062]根據(jù)本發(fā)明的另一方面,提供了一種宏病毒查殺的裝置,該裝置應(yīng)用于安全設(shè)備,包括:
[0063]解析模塊,用于通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0064]提取模塊,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;
[0065]匹配模塊,用于將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0066]判別模塊,用于依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;及
[0067]修復(fù)處理模塊,用于依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。[0068]可選地,所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔;
[0069]則所述解析模塊包括:用于解析得到待查殺文檔的樹形目錄結(jié)構(gòu)的第一解析子模塊;
[0070]則所述提取模塊包括:
[0071]第一遍歷子模塊,用于遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0072]第一匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0073]第一讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0074]所述修復(fù)處理模塊包括:
[0075]第一修改子模塊,用于修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱;
[0076]填充子模塊針對所述匹配成功的目錄項(xiàng),將其宏代碼清除;及
[0077]第二修改子模塊,用于針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
[0078]可選地,所述待查殺文檔為EXCEL文檔;
[0079]則修復(fù)處理模塊還包括:
[0080]第三修改子模塊,用于在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中的描述字段,以不影響所述EXCEL文檔的正常打開。
[0081]可選地,所述待查殺文檔為PPT文檔;
[0082]則所述解析模塊包括:
[0083]第二解析子模塊,用于解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)包括 POWERPOINT DOCUMENT 目錄項(xiàng);
[0084]第三解析子模塊,用于解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu);
[0085]解壓縮子模塊,用于對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括如下文檔中的一項(xiàng)或多項(xiàng)=PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng);
[0086]第四解析子模塊,用于以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu);
[0087]所述提取模塊包括:
[0088]第二遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0089]第二匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0090]第二讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0091]所述修復(fù)處理模塊包括:
[0092]第一修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;和/或
[0093]第二修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu);其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
[0094]可選地,所述待查殺文檔為0FFICE07文檔;
[0095]則所述解析模塊包括:
[0096]解壓縮子模塊,用于解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)包括內(nèi)嵌目錄;
[0097]第四解析子模塊,用于以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0098]則所述提取模塊包括:
[0099]第三遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0100]第三匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0101]第三讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0102]所述修復(fù)處理模塊包括:
[0103]修復(fù)壓縮子模塊,用于修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
[0104]可選地,所述解壓后數(shù)據(jù)還包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔;
[0105]則所述解析模塊還包括:用于以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu)的第五解析子模塊
[0106]則所述修復(fù)處理模塊還包括:
[0107]刪除子模塊,用于在所述內(nèi)嵌目錄下的0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
[0108]可選地,所述特定宏目錄的名稱包括:VBA_PROJECT_CUR和/或Macros。
[0109]可選地,所述裝置還包括:用于構(gòu)造所述行為代碼庫的構(gòu)造模塊;
[0110]所述構(gòu)造模塊包括:
[0111]收集子模塊,用于收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼;
[0112]保存子模塊,用于將所述行為代碼保存至行為代碼庫;
[0113]其中,所述收集子模塊進(jìn)一步包括:
[0114]樣本收集單元,用于收集各種計(jì)算機(jī)文檔的宏病毒樣本;
[0115]樣本解析單元,用于解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0116]樣本提取單元,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼;及
[0117]分析提取單元,用于依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
[0118]根據(jù)本發(fā)明的一種宏病毒查殺的方法和裝置取得了如下有益效果:
[0119]本發(fā)明實(shí)施例基于“實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼是相對固定的”這一規(guī)律進(jìn)行宏病毒的查殺;具體地,在針對計(jì)算機(jī)文檔進(jìn)行宏病毒的查殺過程中,將提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配,依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;由于無論已知宏病毒還是未知宏病毒都會(huì)遵循上述規(guī)律,也即無論宏病毒如何變化及變化的速度如何,這一規(guī)律都是不變的,故本發(fā)明實(shí)施例能夠?qū)ξ粗瓴《揪邆湟欢ǖ臋z測能力,因此能夠提高未知宏病毒的檢測能力,且具備較好的反病毒效果;
[0120]同時(shí),本發(fā)明實(shí)施例解析待查殺文檔的文檔結(jié)構(gòu),依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼,以及,依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理,所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);由于文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu)為計(jì)算機(jī)文檔的通用特征,故本發(fā)明實(shí)施例的技術(shù)方案能夠適用于所有計(jì)算機(jī)文檔的查殺,也即,本發(fā)明實(shí)施例能夠全面地從各種待查殺文檔中提取宏代碼,以及對感染宏病毒的各種待查殺文檔進(jìn)行修復(fù)處理。
[0121]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】

【附圖說明】
[0122]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0123]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖;
[0124]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的復(fù)合文檔的文檔結(jié)構(gòu)示意圖;
[0125]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖;
[0126]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖;
[0127]圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖;以及
[0128]圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0129]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0130]本發(fā)明實(shí)施例基于“實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼是相對固定的”這一規(guī)律進(jìn)行宏病毒的查殺;具體地,由于使用宏語言編寫的宏病毒主要作用于計(jì)算機(jī)文檔的宏代碼中,故上述行為代碼可用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼,這樣,在針對計(jì)算機(jī)文檔進(jìn)行宏病毒的查殺過程中,將提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配,依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;由于無論已知宏病毒還是未知宏病毒都會(huì)遵循上述規(guī)律,也即無論宏病毒如何變化及變化的速度如何,故本發(fā)明實(shí)施例能夠?qū)ξ粗瓴《揪邆湟欢ǖ臋z測能力,因此能夠提高未知宏病毒的檢測能力,且具備較好的反病毒效果。
[0131]參照圖1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖,具體可以包括:
[0132]步驟101、安全設(shè)備通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0133]步驟102、依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;
[0134]在具體實(shí)施中,計(jì)算機(jī)文檔的類型較多,具體可以包括WORD,EXCEL、PPT、復(fù)合文檔等類型的文檔,其中,每種類型的文檔又包括03、07等版本,一種類型的文檔中又內(nèi)嵌有其它類型的文檔;因此,如何全面地從待查殺文檔中提取宏代碼為本領(lǐng)域的一個(gè)難題。
[0135]本發(fā)明實(shí)施例解析待查殺文檔的文檔結(jié)構(gòu),依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu)。
[0136]以復(fù)合文檔為例,復(fù)合文檔具體可以包括若干數(shù)據(jù)流,這些數(shù)據(jù)流又存儲(chǔ)在不同的倉庫里;數(shù)據(jù)流和倉庫的命名規(guī)則與文件系統(tǒng)相似,同一個(gè)倉庫下的數(shù)據(jù)流及倉庫不能重名,不同倉庫下可以有同名的流;每個(gè)復(fù)合文檔都有一個(gè)根倉庫;而目錄是一種內(nèi)部控制流,由一系列目錄入口組成,每一個(gè)目錄入口都指向復(fù)合文檔的一個(gè)倉庫或數(shù)據(jù)流。
[0137]參照圖2,示出了本發(fā)明一個(gè)實(shí)施例的復(fù)合文檔的文檔結(jié)構(gòu)示意圖,其中,目錄將每個(gè)倉庫的直接成員(倉庫或數(shù)據(jù)流)放在一個(gè)獨(dú)立的樹形目錄結(jié)構(gòu)中。
[0138]圖2中樹形目錄結(jié)構(gòu)中每個(gè)節(jié)點(diǎn)(根節(jié)點(diǎn)和葉節(jié)點(diǎn))均有對應(yīng)的名稱,故在特定宏目錄的名稱已知的情況下,將樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行字符串的匹配,即可獲取復(fù)合文檔中的宏目錄;而針對匹配成功的目錄項(xiàng),讀取子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼。
[0139]對于WORD文檔、EXCEL文檔等文檔而言,由于其文檔結(jié)構(gòu)與復(fù)合文檔的文檔結(jié)構(gòu)類似,故可基于同樣的原理進(jìn)行宏代碼的提取。對于PPT文檔等除WORD文檔、EXCEL文檔和復(fù)合文檔之外的計(jì)算機(jī)文檔而言,可以基于其文檔機(jī)構(gòu)進(jìn)行宏代碼的提取。
[0140]總之,由于文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu)為計(jì)算機(jī)文檔的通用特征,故本發(fā)明實(shí)施例依據(jù)解析得到的文檔結(jié)構(gòu)從待查殺文檔中提取宏代碼,能夠適用于各種類型、各種版本的所有計(jì)算機(jī)文檔,也即,本發(fā)明實(shí)施例能夠全面地從待查殺文檔中提取宏代碼。
[0141]步驟103、將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0142]本發(fā)明實(shí)施例中,行為代碼庫就是用于存儲(chǔ)實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼的一個(gè)容器,其可用各種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。作為行為代碼庫的存儲(chǔ)內(nèi)容,行為代碼也即實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼,為簡便起見,下面的行為代碼均可表示實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
[0143]在實(shí)際應(yīng)用中,可以通過如下步驟構(gòu)造所述行為代碼庫:收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼;將所述行為代碼保存至行為代碼庫。并且,如果不斷地收集行為代碼,并保存至行為代碼庫,即可得到不斷更新的行為代碼庫。
[0144]在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼的步驟,可以進(jìn)一步包括:
[0145]子步驟Al、收集各種計(jì)算機(jī)文檔的宏病毒樣本;
[0146]本發(fā)明實(shí)施例中,各種計(jì)算機(jī)文檔的宏病毒樣本應(yīng)滿足如下條件:1、含有宏代碼;
2、被確認(rèn)為宏病毒。在實(shí)際應(yīng)用中,可以不斷收集上述表現(xiàn)形式的宏病毒樣本。[0147]通??梢园春瓴《舅诘乃拗?也即計(jì)算機(jī)文檔),將宏病毒樣本劃分為寄存在WORD中的(只有VBA腳本的)和寄存在EXCEL中的(其中又包括VBA腳本的,和存在工作表中的Macro4.0類型的)宏病毒樣本等種類,也即可以按照類別進(jìn)行宏病毒樣本的收集;當(dāng)然上述宏病毒樣本的種類并不作為本申請的應(yīng)用限制。
[0148]在實(shí)際應(yīng)用中,對于反病毒軟件掃描出的、確定感染宏病毒的文檔,可以直接將其作為宏病毒樣本。
[0149]在本發(fā)明實(shí)施例的一種示例中,還可以通過用戶反饋的方式收集宏病毒樣本。例如,用戶可以將懷疑感染宏病毒但反病毒軟件掃描不出的文檔,并上傳至服務(wù)器,這里的上傳的途徑可以是反病毒軟件的客戶端,服務(wù)器可以指反病毒軟件的服務(wù)器;這樣,服務(wù)器能夠收集全部或部分客戶端上傳的宏病毒樣本,并對其進(jìn)行分析。當(dāng)然,用戶也可以通過其它途徑反饋宏病毒樣本,例如,Web端的上傳接口等等,本發(fā)明實(shí)施例對具體的上傳途徑不加以限制。
[0150]子步驟A2、解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0151]子步驟A3、依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼;
[0152]對于依據(jù)解析得到的文檔結(jié)構(gòu)從宏病毒樣本中提取宏代碼的過程而言,由于其與上述依據(jù)解析得到的文檔結(jié)構(gòu)從待查殺文檔中提取宏代碼的過程類似,故相互參照即可,在此不作贅述。
[0153]由于文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu)為計(jì)算機(jī)文檔的通用特征,故本發(fā)明實(shí)施例依據(jù)解析得到的文檔結(jié)構(gòu)從宏病毒樣本中提取宏代碼,能夠適用于所有計(jì)算機(jī)文檔的宏病毒樣本,也即,本發(fā)明實(shí)施例能夠全面地收集所有計(jì)算機(jī)文檔實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼,以進(jìn)行各種待查殺文檔的 查殺。
[0154]子步驟A4、依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
[0155]欲從所述宏病毒樣本的宏代碼中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼,需要首先獲取特定的宏病毒行為,因?yàn)檐浖_發(fā)中代碼就是實(shí)現(xiàn)一定功能的代碼,如果獲取了具體的宏病毒行為,那么就能夠找到用于實(shí)現(xiàn)特定的宏病毒行為這個(gè)功能所需的行為代碼。
[0156]本發(fā)明實(shí)施例發(fā)明人經(jīng)過對大量Microsoft Off ice的宏病毒樣本的研究,得到如下特定的宏病毒行為:
[0157]1、修改注冊表的行為,目的:降低安全等級(jí)設(shè)置或?qū)⑨尫诺目蓤?zhí)行文件寫入開機(jī)啟動(dòng)項(xiàng)等;
[0158]2、傳播行為,其利用感染模版進(jìn)行傳播,其中,不同的Microsoftoffice會(huì)有不同的感染模版,例如WindowS7系統(tǒng),默認(rèn)情況下
[0159]WORD 的感染模板文件是 C: \Users\【用戶名】\AppData\Roaming\Microsoft\Templates\normal.dot
[0160]EXCEL 的感染模板目錄:C:\Users\【用戶名】\AppData\Roaming\Microsoft\ExceI\xlstart 和 Excel 安裝目錄 \off ice 11 \xlstart
[0161]3、感染行為:用戶打開安全文件,自己往安全文件里面復(fù)制.給用戶郵件聯(lián)系人發(fā)送包括病毒文件的郵件等
[0162]4、發(fā)作時(shí)行為,包括:
[0163]4.1、在某個(gè)時(shí)間段彈窗;
[0164]4.2、重復(fù)復(fù)制工作表,影響軟件正常使用
[0165]4.3、釋放可執(zhí)行文件,具體可以包括:創(chuàng)建文件、寫文件、執(zhí)行文件等等。
[0166]需要說明的是,上述特定的宏病毒行為是針對Microsoft Office研究得到的,其只是作為本發(fā)明實(shí)施例的一種示例,并不作為本發(fā)明實(shí)施例的實(shí)施限制。
[0167]在具體實(shí)現(xiàn)中,可以針對所述宏病毒樣本的宏代碼,依據(jù)其語法對其語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。例如,在本發(fā)明實(shí)施例的一種應(yīng)用示例中,所述分析過程可以包括:遍歷所述宏病毒樣本的宏代碼,逐函數(shù)、逐語句或者逐變量進(jìn)行分析,看其是否用于實(shí)現(xiàn)特定的宏病毒行為這個(gè)功能,若是,則可以將其提取出來,并進(jìn)行下一函數(shù)、語句或變量的分析,否則進(jìn)行下一函數(shù)、語句或變量的分析??傊?,本領(lǐng)域技術(shù)人員可以使用各種技術(shù)或策略,判斷函數(shù)、語句或變量是否用于實(shí)現(xiàn)特定的宏病毒行為這個(gè)功能,本發(fā)明實(shí)施例對具體的判斷方式不加以限制。
[0168]在經(jīng)過分析和提取后,本發(fā)明實(shí)施例的行為代碼具體可以包括函數(shù)名、函數(shù)變量名或者函數(shù)語句。
[0169]在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,本發(fā)明實(shí)施例的行為代碼可為字符串形式。這樣,在文件宏病毒的檢測過程中,將待查殺文檔的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配的過程就涉及字符串的處理操作。在本發(fā)明實(shí)施例的一種應(yīng)用示例中,可以讀取待查殺文檔的宏代碼,得到一個(gè)大的字符串,然后在這個(gè)大的字符串中查找給定字符串,其中給定字符串就是所述行為代碼庫中存儲(chǔ)的行為代碼,若查找成功,則表示匹配成功,若查找失敗,則進(jìn)行下一給定字符串的查找,直至所述行為代碼庫中存儲(chǔ)的給定字符串查找完畢。
[0170]可以理解,本領(lǐng)域技術(shù)人員可以根據(jù)不斷出現(xiàn)的宏病毒樣本,對實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼進(jìn)行增加、刪除、修改等更新操作。
[0171]步驟104、依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;
[0172]在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述將待查殺文檔的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配的步驟,可以進(jìn)一步包括:
[0173]在所述待查殺文檔的宏代碼中存在匹配成功的行為代碼時(shí)得到匹配成功的匹配結(jié)果,以及,在所述待查殺文檔的宏代碼中不存在匹配成功的行為代碼時(shí),得到匹配失敗的匹配結(jié)果;
[0174]則所述依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒的步驟,可以進(jìn)一步包括:
[0175]步驟B1、在所述匹配結(jié)果為匹配失敗時(shí),判別所述待查殺文檔未感染宏病毒;
[0176]步驟B2、在所述匹配結(jié)果為匹配成功時(shí),依據(jù)所述待查殺文檔的宏代碼中匹配成功的行為代碼,判別所述待查殺文檔是否感染宏病毒。
[0177]在本發(fā)明實(shí)施例的另一種優(yōu)選實(shí)施例中,所述步驟B2依據(jù)所述待查殺文檔的宏代碼中匹配成功的行為代碼,判別所述待查殺文檔是否感染宏病毒的步驟,可以進(jìn)一步包括:[0178]判斷所述待查殺文檔的宏代碼中匹配成功的行為代碼是否符合預(yù)設(shè)的危險(xiǎn)性條件,若是,則判別所述待查殺文檔感染宏病毒,否則,判別所述待查殺文檔未感染宏病毒。
[0179]在本發(fā)明實(shí)施例的再一種優(yōu)選實(shí)施例中,所述預(yù)設(shè)的危險(xiǎn)性條件具體可以包括如下條件中的一項(xiàng)或多項(xiàng):
[0180]危險(xiǎn)性條件Cl、所述待查殺文檔的宏代碼中匹配成功的行為代碼的危險(xiǎn)系數(shù)超過預(yù)設(shè)的危險(xiǎn)系數(shù)閾值;
[0181]關(guān)于如何獲取待查殺文檔的宏代碼中匹配成功的行為代碼的危險(xiǎn)系數(shù),在實(shí)際中,可針對所述行為代碼庫中各行為代碼預(yù)設(shè)相應(yīng)的危險(xiǎn)系數(shù);或者,為了減輕設(shè)置的工作量,可對所述行為代碼庫中各行為代碼進(jìn)行分類,并針對每個(gè)類別預(yù)設(shè)相應(yīng)的危險(xiǎn)系數(shù)。
[0182]可以理解,本領(lǐng)域技術(shù)人員采用的分類依據(jù)可以是多樣化的,在申請的一種優(yōu)選實(shí)施例中,可以病毒行為的種類作為分類依據(jù),例如,針對“修改注冊表”的行為對應(yīng)類別預(yù)設(shè)的危險(xiǎn)系數(shù)為10,“傳播行為”對應(yīng)類別的危險(xiǎn)系數(shù)為5,“感染行為”對應(yīng)類別的危險(xiǎn)系數(shù)為8等等。
[0183]參照上例,由于病毒行為有可能被細(xì)分,故可針對被細(xì)分的病毒行為預(yù)設(shè)相應(yīng)的危險(xiǎn)系數(shù),例如,在感染行為這個(gè)大類別中,可以針對“復(fù)制工作表”的行為對應(yīng)類別預(yù)設(shè)的危險(xiǎn)系數(shù)為5,可以針對“執(zhí)行文件”的行為對應(yīng)類別預(yù)設(shè)的危險(xiǎn)系數(shù)為10,等等。
[0184]當(dāng)然,上述只是作為示例;實(shí)際上,本領(lǐng)域技術(shù)人員得到的病毒行為是各種各樣的,并且可以根據(jù)各種病毒行為的危險(xiǎn)程度,分別對相應(yīng)的類別預(yù)設(shè)不同的危險(xiǎn)系數(shù),本發(fā)明實(shí)施例對具體的危險(xiǎn)系數(shù)不加以限制。
[0185]在實(shí)際應(yīng)用中,所述待查殺文檔的宏代碼中匹配成功的行為代碼可能不止一個(gè),此時(shí),可以對多個(gè)行為代碼的危險(xiǎn)系數(shù)進(jìn)行求平均、加權(quán)平均、疊加等處理,得到綜合的危險(xiǎn)系數(shù),再將綜合的危險(xiǎn)系數(shù)與預(yù)設(shè)的危險(xiǎn)系數(shù)閾值進(jìn)行比較。
[0186]本領(lǐng)域技術(shù)人員可以根據(jù)宏病毒檢出率或宏病毒誤殺率的指標(biāo),預(yù)設(shè)危險(xiǎn)系數(shù)閾值。例如,如果欲達(dá)到較高的宏病毒檢出率,可以預(yù)設(shè)較小的危險(xiǎn)系數(shù)閾值;又如,如果欲達(dá)到較低的宏病毒誤殺率,可以預(yù)設(shè)較高的危險(xiǎn)系數(shù)閾值等等。
[0187]危險(xiǎn)性條件C2、所述待查殺文檔的宏代碼中匹配成功的行為代碼的危險(xiǎn)等級(jí)超過預(yù)設(shè)的危險(xiǎn)等級(jí);
[0188]行為代碼的危險(xiǎn)系數(shù)和危險(xiǎn)等級(jí)同樣用于反映行為代碼的危險(xiǎn)程度,二者的區(qū)別之一在于,危險(xiǎn)系數(shù)用更具體的數(shù)值描述,而危險(xiǎn)等級(jí)可用簡便的數(shù)值或文字描述;例如,危險(xiǎn)系數(shù)的取值范圍可以為[0,20],而危險(xiǎn)等級(jí)的取值范圍可以為[1,5]或者[1,3],或者,危險(xiǎn)等級(jí)的文字范圍為[低級(jí)、中級(jí)、高級(jí)]等等。
[0189]關(guān)于如何獲取待查殺文檔的宏代碼中匹配成功的行為代碼的危險(xiǎn)等級(jí),在實(shí)際中,可針對所述行為代碼庫中各行為代碼預(yù)設(shè)相應(yīng)的危險(xiǎn)等級(jí);或者,為了減輕設(shè)置的工作量,可對所述行為代碼庫中各行為代碼進(jìn)行分類,并針對每個(gè)類別預(yù)設(shè)相應(yīng)的危險(xiǎn)等級(jí)。
[0190]對于危險(xiǎn)性條件C2而言,由于其采用的分類依據(jù)及預(yù)設(shè)的危險(xiǎn)等級(jí)與危險(xiǎn)性條件Cl相似,故相互參照即可,在此不作贅述。
[0191]危險(xiǎn)性條件C3、待查殺文檔的宏代碼中匹配成功的行為代碼出現(xiàn)了預(yù)設(shè)的單個(gè)行為代碼,或者,出現(xiàn)了預(yù)設(shè)的行為代碼組合。
[0192]危險(xiǎn)性條件C3可以規(guī)定只要待查殺文檔的宏代碼中匹配成功的行為代碼出現(xiàn)了預(yù)設(shè)的單個(gè)行為代碼,就可以判別所述待查殺文檔感染宏病毒。
[0193]在實(shí)際中,可以將某些宏病毒行為對應(yīng)的函數(shù)名作為預(yù)設(shè)的單個(gè)行為代碼。例如,一旦待查殺文檔的宏代碼中匹配成功的行為代碼出現(xiàn)了如下函數(shù)名中的一個(gè),則可以判別所述待查殺文檔感染宏病毒:[0194]l=runblackice
[0195]2=inf ectdocument
[0196]3=infectnormal
[0197]4=Empirical
[0198]在具體實(shí)現(xiàn)中,還可以依據(jù)宏病毒行為對應(yīng)的行為代碼,預(yù)設(shè)行為代碼組合,如果待查殺文檔的宏代碼中匹配成功的行為代碼出現(xiàn)了預(yù)設(shè)的行為代碼組合,則可判別其感染
宏病毒。
[0199]在本發(fā)明實(shí)施例的一種應(yīng)用示例中,宏病毒行為對應(yīng)的行為代碼可用阿拉伯?dāng)?shù)字編號(hào)如下:
[0200]l=fiIesystemobject
[0201]2 =wcripting.shell
[0202]3=createob ject
[0203]4=Application.0nKey"%{F
[0204]5=normal.dot
[0205]6=bookl.xls
[0206]7=startup.xls
[0207]8=normal.xlm
[0208]9=norma1.xlm
[0209]10=norma1.dot
[0210]Il=Open
[0211]12=for
[0212]13=as
[0213]14=writef ile
[0214]15=createf ile
[0215]16=Private Declare Function
[0216]17=lib
[0217]18=infectnormal
[0218]19=<! !blackice〉
[0219]20= (ml) — (m2) — (m3)
[0220]21=System.PrivateProfileString[0221 ]22=HKEY—CURRENT—USER
[0222]23=shell
[0223]24=Shell
[0224]25=NormalTemplate.VBProject.VBComponents
[0225]26=Application.StartupPath[0226]那么,可以根據(jù)這些行為代碼對應(yīng)宏病毒行為的危險(xiǎn)程度,預(yù)設(shè)如下行為代碼組合,并分別用阿拉伯?dāng)?shù)字編號(hào):
[0227]1=3,2
[0228]2=3,I
[0229]3=21, 22
[0230]4=16, 17
[0231]5=25
[0232]6=11, 12, 13
[0233]步驟105、依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。
[0234]總之,本發(fā)明實(shí)施例基于“實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼是相對固定的”這一規(guī)律進(jìn)行宏病毒的查殺;具體地,在針對計(jì)算機(jī)文檔進(jìn)行宏病毒的查殺過程中,將提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配,依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;由于無論已知宏病毒還是未知宏病毒都會(huì)遵循上述規(guī)律,也即無論宏病毒如何變化及變化的速度如何,故本發(fā)明實(shí)施例能夠?qū)ξ粗瓴《揪邆湟欢ǖ臋z測能力,因此能夠提高未知宏病毒的檢測能力,且具備較好的反病毒效果;
[0235]同時(shí),本發(fā)明實(shí)施例解析待查殺文檔的文檔結(jié)構(gòu),依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼,以及,依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理,所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);由于文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu)為計(jì)算機(jī)文檔的通用特征,故本發(fā)明實(shí)施例的技術(shù)方案能夠適用于所有計(jì)算機(jī)文檔的查殺,也即,本發(fā)明實(shí)施例能夠全面地從各種待查殺文檔中提取宏代碼,以及對感染宏病毒的各種待查殺文檔進(jìn)行修復(fù)處理。
[0236]參照圖3,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖,具體可以包括:
[0237]步驟301、安全設(shè)備通過計(jì)算設(shè)備的處理器解析得到待查殺文檔的樹形目錄結(jié)構(gòu);所述樹形目錄結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的樹形目錄結(jié)構(gòu);所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔;
[0238]步驟302、遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0239]步驟303、將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0240]步驟304、針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0241]步驟305、將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0242]步驟306、依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;
[0243]步驟307、修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱;
[0244]步驟308、針對所述匹配成功的目錄項(xiàng),將其宏代碼清除;及
[0245]步驟309、針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
[0246]本實(shí)施例應(yīng)用于復(fù)合文檔、WORD文檔或者EXCEL文檔等待查殺文檔。對于復(fù)合文檔、WORD文檔或者EXCEL文檔等文檔而言,其樹形目錄結(jié)構(gòu)中包括有特定宏目錄,在特定宏目錄的名稱已知的情況下,將樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行字符串的匹配,即可獲取復(fù)合文檔中的宏目錄;而針對匹配成功的目錄項(xiàng),讀取子目錄項(xiàng)的流數(shù)據(jù),即可從中解壓縮出對應(yīng)的宏代碼。
[0247]步驟302-步驟304為依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的具體實(shí)現(xiàn)過程;在本發(fā)明的一種優(yōu)選實(shí)施例中,所述特定宏目錄的名稱具體可以包括:VBA_PROJECT_CUR 和 / 或 Macros,可以理解,上述 VBA_PROJECT_CUR、Macros 并不作為本發(fā)明實(shí)施例中特定宏目錄的名稱的應(yīng)用限制。
[0248]步驟307-步驟309為依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的具體實(shí)現(xiàn)過程。由于在判別某待查殺文檔感染宏病毒后,反病毒軟件通常會(huì)記錄該待查殺文檔中的宏病毒對應(yīng)的目錄項(xiàng)的名稱,故步驟307的作用修改目錄項(xiàng)的名稱的作用是為了避免反病毒軟件誤報(bào);步驟308的作用是為了將感染宏病毒的宏代碼數(shù)據(jù)清除,以避免OFFICE程序的宏出錯(cuò),例如,可以通過用O填充宏代碼的方式將宏代碼清除;步驟308清除感染宏病毒的宏代碼后,步驟309將宏代碼對應(yīng)的宏目錄刪除或改名,其作用是為了使得OFFICE程序以為對應(yīng)目錄項(xiàng)是空目錄,不再繼續(xù)解析,其中,可以通過將所述匹配成功的目錄項(xiàng)的相鄰目錄和子目錄的標(biāo)記修改為空的方式來刪除所述匹配成功的目錄項(xiàng),本發(fā)明對具體的刪除或改名方式不加以限制。
[0249]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述待查殺文檔為EXCEL文檔;則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,還可以包括:在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中描述字段,以不影響所述EXCEL文檔的正常打開。
[0250]在本發(fā)明的一種應(yīng)用示例中,workbook目錄項(xiàng)的流數(shù)據(jù)中ObProj結(jié)構(gòu)的type字段用于描述ObProj結(jié)構(gòu)的類型,可以將該type字段修改為Continue等不影響EXCEL文檔的正常打開的值,能夠使得EXCEL程序不會(huì)認(rèn)為該EXCEL文檔存在宏代碼,也就不會(huì)彈窗提醒宏數(shù)據(jù)丟失。
[0251]參照圖4,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖,本實(shí)施例應(yīng)用于PPT文檔等待查殺文檔,具體可以包括:
[0252]步驟401、安全設(shè)備通過計(jì)算設(shè)備的處理器解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)具體可以包括POWERPOINT DOCUMENT目錄項(xiàng);
[0253]步驟402、解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu);
[0254]步驟403、對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔具體可以包括如下文檔中的一項(xiàng)或多項(xiàng)=PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔具體可以包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng);
[0255]步驟404、以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu);
[0256]步驟405、遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0257]步驟406、將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0258]步驟407、針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0259]步驟408、將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0260]步驟409、依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;
[0261]依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理,具體可以包括:
[0262]步驟410、在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;
[0263]步驟411、在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu);其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
[0264]對于PPT文檔而言,其與復(fù)合文檔、WORD文檔或者EXCEL文檔的區(qū)別是:其目錄結(jié)構(gòu)中不存在特定的宏目錄,然而PPT文檔通常會(huì)將所有的宏代碼封裝為文檔格式并用Zlib等算法壓縮后存放在復(fù)合對象(ExternalOLEObjectStg)結(jié)構(gòu)中,而ExternalOLEObjectStg結(jié)構(gòu)為POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù)中的結(jié)構(gòu)。
[0265]宏代碼會(huì)直接隱藏在PPT文檔的數(shù)據(jù)流中,具體地,宏代碼會(huì)隱藏在POWERPOINTDOCUMENT目錄項(xiàng)下的流數(shù)據(jù)中的復(fù)合對象(ExternalOLEObjectStg)結(jié)構(gòu)中。
[0266]為了查殺出隱藏在ExternalOLEObjectStg結(jié)構(gòu)中的宏代碼,步驟401-步驟402查找得到ExternalOLEObjectStg結(jié)構(gòu),步驟403對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù)。
[0267]所述解壓縮數(shù)據(jù)具體可以包括兩種類型的文檔:一類是PPT內(nèi)嵌文檔,具體可以包括復(fù)合文檔、WORD文檔或EXCEL文檔,若干PPT內(nèi)嵌文檔內(nèi)嵌于PPT文檔中;另一類是PPT文檔,PPT文檔也有可能帶有宏代碼。
[0268]無論是PPT文檔還是PPT內(nèi)嵌文檔,均可將其作為待查殺文檔,按照圖3所示步驟301-步驟306復(fù)合文檔、WORD文檔或者EXCEL文檔的宏病毒查殺流程進(jìn)行宏代碼的提取和宏病毒的檢測。
[0269]對于PPT內(nèi)嵌文檔,也可按照圖3所示步驟307-步驟309的流程依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,并將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,最后填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;所述填充能夠避免PPT程序出現(xiàn)“對象庫無效或包含對不能找到對象定義的引用”等錯(cuò)誤。
[0270]對于PPT文檔,其修復(fù)處理過程具體可以包括:減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一個(gè)新結(jié)構(gòu);其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。其中,減小復(fù)合對象結(jié)構(gòu)中的length字段是為了將PPT文檔中已有的宏代碼數(shù)據(jù)清除;添加一新結(jié)構(gòu)是為了占用已有的宏代碼數(shù)據(jù)對應(yīng)空間,防止OFFICE程序出錯(cuò),所述新結(jié)構(gòu)可以為type為O或其它值的數(shù)據(jù)結(jié)構(gòu),本發(fā)明實(shí)施例對具體的所述新結(jié)構(gòu)不加以限制。
[0271]參照圖5,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的宏病毒查殺的方法的流程圖,本實(shí)施例應(yīng)用于0FFICE07文檔等待查殺文檔,具體可以包括:[0272]步驟501、安全設(shè)備通過計(jì)算設(shè)備的處理器解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)具體可以包括內(nèi)嵌目錄;
[0273]步驟502、以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0274]步驟503、遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0275]步驟504、將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0276]步驟505、針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0277]步驟506、將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0278]步驟507、依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;
[0279]步驟508、修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07 文檔。
[0280]圖1-圖3所示實(shí)施例默認(rèn)應(yīng)用于0FFICE03文檔等待查殺文檔,而圖5所示實(shí)施例應(yīng)用的0FFICE07文檔具體可以包括07版本的各種OFFICE文檔,如復(fù)合文檔07、W0RD07文檔、EXCEL07文檔或者PPT07文檔等等。
[0281]對于0FFICE07文檔,其為一個(gè)zip的壓縮包,默認(rèn)分為兩種格式:
[0282]第一種格式的0FFICE07文檔具體可以包括后綴為docx的文檔,該格式的文檔不附帶任何宏代碼數(shù)據(jù),如果有宏代碼數(shù)據(jù)則無法保存該格式,因?yàn)橐坏┍4婢蜁?huì)被刪除;
[0283]第二種格式的0FFICE07文檔具體可以包括后綴為docm, pptm, xlsm的文檔,對于該格式的文檔,將對應(yīng)的zip包解開,對應(yīng)的解壓縮后數(shù)據(jù)具體包括多個(gè)目錄及相應(yīng)的文檔,例如EXCEL07文檔對應(yīng)的解壓縮后數(shù)據(jù)具體包括xl目錄、docProps目錄、_rels目錄和內(nèi)容字段標(biāo)記([Content_Types].xml)文檔等,其中xl目錄下有一個(gè)內(nèi)嵌目錄,該內(nèi)嵌目錄下的文檔就可能包括有內(nèi)嵌在EXCEL07文檔中的相關(guān)文檔數(shù)據(jù)和宏代碼數(shù)據(jù),因此本實(shí)施例是針對第二種格式的0FFICE07文檔進(jìn)行宏病毒查殺的。上述xl目錄是對于EXCEL07文檔而言的,對于W0RD07文檔則替換為word目錄,對于PPT07文檔則替換為ppt目錄,也即word目錄和ppt目錄下分別有一個(gè)內(nèi)嵌目錄。
[0284]對于第二種格式的0FFICE07文檔,由于其內(nèi)嵌目錄下的文檔具有復(fù)合文檔的文檔結(jié)構(gòu),故可以按照圖3所示步驟301-步驟306復(fù)合文檔、WORD文檔或者EXCEL文檔的宏病毒查殺流程進(jìn)行宏代碼的提取和宏病毒的檢測,并且可按照圖3所示步驟307-步驟309的流程修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔;
[0285]另外,由于0FFICE07格式本質(zhì)為zip格式等壓縮包格式,只是后綴可能為docx, xlsx, pptx等,故步驟508在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)(如包括有所述內(nèi)嵌文檔的xl目錄、原有docProps目錄、原有_rels目錄和原有內(nèi)容字段標(biāo)記文檔)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
[0286]上述內(nèi)嵌目錄下的文檔為0FFICE07文檔內(nèi)嵌的文檔,在本發(fā)明的一種優(yōu)選實(shí)施例中,所述解壓后數(shù)據(jù)還可以包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔;所述0FFICE07宏文檔為0FFICE07文檔自帶的宏文檔,在0FFICE07文檔自身有宏代碼時(shí),宏代碼就會(huì)保存在該文檔中,如果該文檔有病毒,則可說明0FFICE07文檔有病毒;
[0287]則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,還可以包括:以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0288]則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的方案,還可以包括:在所述內(nèi)嵌目錄下的0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
[0289]在本發(fā)明的一種應(yīng)用示例中,所述0FFICE07宏文檔為VbaProject.bin。[Content_Types].xml是用于描述所述解壓后數(shù)據(jù)的目錄格式的文檔,其中會(huì)引用到VbaProject.bin,而VbaProject.bin文檔為所述內(nèi)嵌目錄下的一個(gè)文檔;故本優(yōu)選實(shí)施例在所述內(nèi)嵌目錄下的VbaProject.bin文檔感染宏病毒時(shí),不僅刪除VbaProject.bin文檔,而且解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述VbaProject.bin的相應(yīng)內(nèi)容刪除。
[0290]與前述方法實(shí)施例相應(yīng),本發(fā)明實(shí)施例還公開了一種宏病毒查殺的裝置,該裝置應(yīng)用于安全設(shè)備,參照圖6所示的結(jié)構(gòu)圖,具體可以包括:
[0291]解析模塊601,用于通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0292]提取模塊602,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼;
[0293]匹配模塊603,用于將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼;
[0294]判別模塊604,用于依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;及
[0295]修復(fù)處理模塊605,用于依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。
[0296]在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔;
[0297]則所述解析模塊601具體可以包括:用于解析得到待查殺文檔的樹形目錄結(jié)構(gòu)的第一解析子模塊;
[0298]則所述提取模塊602具體可以包括:
[0299]第一遍歷子模塊,用于遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0300]第一匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0301]第一讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0302]所述修復(fù)處理模塊605具體可以包括:
[0303]第一修改子模塊,用于修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱;
[0304]填充子模塊針對所述匹配成功的目錄項(xiàng),將其宏代碼清除;及
[0305]第二修改子模塊,用于針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
[0306]在本發(fā)明實(shí)施例的另一種優(yōu)選實(shí)施例中,所述待查殺文檔為EXCEL文檔;
[0307]則修復(fù)處理模塊605還可以包括:[0308]第三修改子模塊,用于在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中的描述字段,以不影響所述EXCEL文檔的正常打開。
[0309]在本發(fā)明實(shí)施例的再一種優(yōu)選實(shí)施例中,所述待查殺文檔為PPT文檔;
[0310]則所述解析模塊601具體可以包括:
[0311 ] 第二解析子模塊,用于解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)具體可以包括POWERPOINT DOCUMENT目錄項(xiàng);
[0312]第三解析子模塊,用于解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu);
[0313]解壓縮子模塊,用于對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括如下文檔中的一項(xiàng)或多項(xiàng)=PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng);
[0314]第四解析子模塊,用于以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu);
[0315]所述提取模塊602具體可以包括:
[0316]第二遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0317]第二匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0318]第二讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0319]所述修復(fù)處理模塊605具體可以包括:
[0320]第一修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;和/或
[0321]第二修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu);其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
[0322]在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述待查殺文檔為0FFICE07文檔;
[0323]則所述解析模塊601具體可以包括:
[0324]解壓縮子模塊,用于解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)包括內(nèi)嵌目錄;
[0325]第四解析子模塊,用于以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0326]則所述提取模塊602具體可以包括:
[0327]第三遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0328]第三匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0329]第三讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0330]所述修復(fù)處理模塊605具體可以包括:
[0331]修復(fù)壓縮子模塊,用于修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
[0332]在本發(fā)明實(shí)施例的另一種優(yōu)選實(shí)施例中,所述解壓后數(shù)據(jù)還可以包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔;
[0333]則所述解析模塊601還可以包括:用于以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu)的第五解析子模塊
[0334]則所述修復(fù)處理模塊605還可以包括:
[0335]刪除子模塊,用于在所述內(nèi)嵌目錄下的0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
[0336]在本發(fā)明實(shí)施例的再一種優(yōu)選實(shí)施例中,所述特定宏目錄的名稱具體可以包括:VBA_PROJECT_CUR和 / 或 Macros。
[0337]在本發(fā)明實(shí)施例中,優(yōu)選的是,所述裝置還可以包括:用于構(gòu)造所述行為代碼庫的構(gòu)造模塊;
[0338]所述構(gòu)造模塊具體可以包括:
[0339]收集子模塊,用于收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼;
[0340]保存子模塊,用于將所述行為代碼保存至行為代碼庫;
[0341]其中,所述收集子模塊進(jìn)一步包括:
[0342]樣本收集單元,用于收集各種計(jì)算機(jī)文檔的宏病毒樣本;
[0343]樣本解析單元,用于解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0344]樣本提取單元,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼;及
[0345]分析提取單元,用于依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼
[0346]如本發(fā)明實(shí)施例所述的裝置,其特征在于,所述待查殺文檔為EXCEL文檔;
[0347]則修復(fù)處理模塊還包括:
[0348]第三修改子模塊,用于在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中的描述字段,以不影響所述EXCEL文檔的正常打開。
[0349]如本發(fā)明實(shí)施例所述的裝置,其特征在于,所述待查殺文檔為PPT文檔;
[0350]則所述解析模塊包括:
[0351 ] 第二解析子模塊,用于解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)包括 POWERPOINT DOCUMENT 目錄項(xiàng);
[0352]第三解析子模塊,用于解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu);
[0353]解壓縮子模塊,用于對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括如下文檔中的一項(xiàng)或多項(xiàng)=PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng);
[0354]第四解析子模塊,用于以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu);[0355]所述提取模塊包括:
[0356]第二遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0357]第二匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0358]第二讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0359]所述修復(fù)處理模塊包括:
[0360]第一修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;和/或
[0361]第二修復(fù)子模塊,用于在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu);其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
[0362]如本發(fā)明實(shí)施例所述的裝置,其特征在于,所述待查殺文檔為0FFICE07文檔;
[0363]則所述解析模塊包括:
[0364]解壓縮子模塊,用于解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)包括內(nèi)嵌目錄;
[0365]第四解析子模塊,用于以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu);
[0366]則所述提取模塊包括:
[0367]第三遍歷子模塊,用于遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng);
[0368]第三匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;
[0369]第三讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼;
[0370]所述修復(fù)處理模塊包括:
[0371]修復(fù)壓縮子模塊,用于修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
[0372]如本發(fā)明實(shí)施例所述的裝置,其特征在于,所述解壓后數(shù)據(jù)還包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔;
[0373]則所述解析模塊還包括:用于以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu)的第五解析子模塊
[0374]則所述修復(fù)處理模塊還包括:
[0375]刪除子模塊,用于在所述內(nèi)嵌目錄下的0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
[0376]如本發(fā)明實(shí)施例所述的裝置,其特征在于,所述特定宏目錄的名稱包括:VBA_PR0JECT_CUR 和 / 或 Macros。
[0377]如本發(fā)明實(shí)施例所述的裝置,其特征在于,還包括:用于構(gòu)造所述行為代碼庫的構(gòu)造模塊;[0378]所述構(gòu)造模塊包括:
[0379]收集子模塊,用于收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼;
[0380]保存子模塊,用于將所述行為代碼保存至行為代碼庫;
[0381]其中,所述收集子模塊進(jìn)一步包括:
[0382]樣本收集單元,用于收集各種計(jì)算機(jī)文檔的宏病毒樣本;
[0383]樣本解析單元,用于解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu);
[0384]樣本提取單元,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼;及
[0385]分析提取單元,用于依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
[0386]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0387]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0388]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0389]本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
[0390]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0391 ] 本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0392] 應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種宏病毒查殺的方法,包括: 安全設(shè)備通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu); 依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼; 將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼; 依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒; 依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。
2.如權(quán)利要求1所述的方法,其特征在于,所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔; 則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括:解析得到待查殺文檔的樹形目錄結(jié)構(gòu); 則所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括: 遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng); 將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配; 針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼; 所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏`病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括: 修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱; 針對所述匹配成功的目錄項(xiàng),將其宏代碼清除; 針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
3.如權(quán)利要求2所述的方法,其特征在于,所述待查殺文檔為EXCEL文檔; 則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,還包括: 在所述EXCEL文檔感染宏病毒時(shí),修改其workbook目錄項(xiàng)的流數(shù)據(jù)中的描述字段,以不影響所述EXCEL文檔的正常打開。
4.如權(quán)利要求1所述的方法,其特征在于,所述待查殺文檔為PPT文檔; 則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括: 解析得到PPT文檔的目錄結(jié)構(gòu);所述PPT文檔的目錄結(jié)構(gòu)包括POWERPOINT DOCUMENT目錄項(xiàng); 解析所述POWERPOINT DOCUMENT目錄項(xiàng)下的流數(shù)據(jù),并從解析結(jié)果中查找復(fù)合對象結(jié)構(gòu); 對所述復(fù)合對象結(jié)構(gòu)中存放的數(shù)據(jù)進(jìn)行解壓縮,得到相應(yīng)的解壓縮數(shù)據(jù);所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括如下文檔中的一項(xiàng)或多項(xiàng):PPT文檔和PPT內(nèi)嵌文檔,所述PPT內(nèi)嵌文檔包括復(fù)合文檔、WORD文檔和EXCEL文檔中的一項(xiàng)或多項(xiàng); 以所述解壓縮后數(shù)據(jù)對應(yīng)的文檔作為待查殺文檔,解析得到相應(yīng)的目錄結(jié)構(gòu); 所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括: 遍歷所述待查殺文檔的目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng); 將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配;針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼; 所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括: 在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT內(nèi)嵌文檔時(shí),依據(jù)解析得到PPT內(nèi)嵌文檔的文檔結(jié)構(gòu)對感染宏病毒的PPT內(nèi)嵌文檔進(jìn)行修復(fù)處理,將修復(fù)處理后PPT內(nèi)嵌文檔壓縮,并填充到相應(yīng)的復(fù)合對象結(jié)構(gòu)中;和/或 在所述解壓縮后數(shù)據(jù)對應(yīng)的文檔包括PPT文檔時(shí),減小復(fù)合對象結(jié)構(gòu)中的length字段,并添加一新結(jié)構(gòu),其中,所述減小和添加的新結(jié)構(gòu)所對應(yīng)的長度為感染宏病毒的PPT文檔的宏代碼對應(yīng)的長度。
5.如權(quán)利要求1所述的方法,其特征在于,所述待查殺文檔為0FFICE07文檔; 則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,包括: 解壓縮0FFICE07文檔對應(yīng)的數(shù)據(jù),得到相應(yīng)的解壓縮后數(shù)據(jù);所述解壓縮后數(shù)據(jù)包括內(nèi)嵌目錄; 以所述內(nèi)嵌目錄下的文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu); 則所述依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼的步驟,包括: 遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng); 將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配; 針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼; 所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,包括: 修復(fù)感染宏病毒的所述內(nèi)嵌目錄下的文檔,并在所述內(nèi)嵌目錄下的文檔修復(fù)成功后將所述內(nèi)嵌文檔和所述解壓縮后數(shù)據(jù)中其它數(shù)據(jù)進(jìn)行壓縮得到修復(fù)后的0FFICE07文檔。
6.如權(quán)利要求5所述的方法,其特征在于,所述解壓后數(shù)據(jù)還包括0FFICE07宏文檔和內(nèi)容字段標(biāo)記文檔; 則所述解析待查殺文檔的文檔結(jié)構(gòu)的步驟,還包括:以所述0FFICE07宏文檔作為待查殺文檔,解析得到相應(yīng)的樹形目錄結(jié)構(gòu); 則所述依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理的步驟,還包括: 在所述0FFICE07宏文檔感染宏病毒時(shí),刪除所述0FFICE07宏文檔,解析得到所述內(nèi)容字段標(biāo)記文檔的內(nèi)容,并將所述內(nèi)容字段標(biāo)記文檔中引用所述0FFICE07宏文檔的相應(yīng)內(nèi)容刪除。
7.如權(quán)利要求2所述的方法, 其特征在于,所述特定宏目錄的名稱包括:VBA_PROJECT_CUR 和 / 或 Macros。
8.如權(quán)利要求1至7中任一項(xiàng)所述的方法,其特征在于,通過如下步驟構(gòu)造所述行為代碼庫: 收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼; 將所述行為代碼保存至行為代碼庫; 其中,所述收集實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼的步驟,進(jìn)一步包括: 收集各種計(jì)算機(jī)文檔的宏病毒樣本;解析所述宏病毒樣本的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)具體可以包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu); 依據(jù)解析得到的文檔結(jié)構(gòu)從所述宏病毒樣本中提取宏代碼; 依據(jù)宏代碼的語法,對所述宏病毒樣本的宏代碼的語義進(jìn)行分析,從中提取相應(yīng)的實(shí)現(xiàn)固定的宏病毒行為所需的行為代碼。
9.一種宏病毒查殺的裝置,應(yīng)用于安全設(shè)備,包括: 解析模塊,用于通過計(jì)算設(shè)備的處理器解析待查殺文檔的文檔結(jié)構(gòu);所述文檔結(jié)構(gòu)包括文檔的數(shù)據(jù)流對應(yīng)的目錄結(jié)構(gòu); 提取模塊,用于依據(jù)解析得到的文檔結(jié)構(gòu)從所述待查殺文檔中提取宏代碼; 匹配模塊,用于將處理器提取的宏代碼與行為代碼庫中的行為代碼進(jìn)行匹配;其中,所述行為代碼用于表示實(shí)現(xiàn)固定的宏病毒行為所需的宏代碼; 判別模塊,用于依據(jù)匹配結(jié)果判別所述待查殺文檔是否感染宏病毒;及 修復(fù)處理模塊,用于依據(jù)解析得到的文檔結(jié)構(gòu)對感染宏病毒的待查殺文檔進(jìn)行修復(fù)處理。
10.如權(quán)利要求9所述的裝置,其特征在于,所述待查殺文檔為復(fù)合文檔、WORD文檔或者EXCEL文檔; 則所述解析模塊包括:用于解析得到待查殺文檔的樹形目錄結(jié)構(gòu)的第一解析子模塊; 則所述提取模塊包括:` 第一遍歷子模塊,用于遍歷所述樹形目錄結(jié)構(gòu)中的每一個(gè)目錄項(xiàng); 第一匹配子模塊,用于將每一個(gè)目錄項(xiàng)的名稱與特定宏目錄的名稱進(jìn)行匹配; 第一讀取解壓縮子模塊,用于針對匹配成功的目錄項(xiàng),讀取其子目錄項(xiàng)的流數(shù)據(jù),并從中解壓縮出對應(yīng)的宏代碼; 所述修復(fù)處理模塊包括: 第一修改子模塊,用于修改所述感染宏病毒的待查殺文檔中宏病毒對應(yīng)匹配成功的目錄項(xiàng)的名稱; 填充子模塊針對所述匹配成功的目錄項(xiàng),將其宏代碼清除 '及 第二修改子模塊,用于針對所述匹配成功的目錄項(xiàng),將其刪除或改名。
【文檔編號(hào)】G06F21/56GK103500309SQ201310446768
【公開日】2014年1月8日 申請日期:2013年9月26日 優(yōu)先權(quán)日:2013年9月26日
【發(fā)明者】楊康 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1