欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

提高殺毒引擎掃描速度的方法

文檔序號:6581674閱讀:154來源:國知局
專利名稱:提高殺毒引擎掃描速度的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)殺毒軟件領(lǐng)域,尤其涉及一種提高殺毒引擎掃 描速度的方法。
目前殺毒軟件掃描病毒的一般做法為A、遍歷掃描目標(biāo)中全部 文件,讀入每個文件的頭部一個固定大小的數(shù)據(jù)塊(例如每個文件讀
4KB) ; B、然后匹配病毒庫中的特征碼,進(jìn)行初步排查該文件是否 是病毒,如果初步判斷該文件是病毒,再讀入該文件其它部分進(jìn)行確 定其是否為病毒。
要實現(xiàn)讀入某個文件的頭部一個固定大小的數(shù)據(jù)塊,目前的做法 是,通過調(diào)用windows API,首先打開該文件,然后讀文件,關(guān)閉文 件。打開文件和關(guān)閉文件的過程都需要調(diào)用Windows API,雖然打開 和關(guān)閉單個文件的調(diào)用Windows API的時間不長,但是一旦文件眾 多,調(diào)用過程就比較耗時了。通過Windows API讀文件的過程需要 Windows文件系統(tǒng)進(jìn)行地址解析和訪問,遠(yuǎn)比直接操作磁盤進(jìn)行扇 區(qū)訪問要耗時。
綜上所述,目前殺毒軟件掃描病毒的過程相對耗時。

發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)中的不足,本發(fā)明的目的是提供一種提高 殺毒引擎掃描速度的方法,使用該方法可以使得殺毒引擎的掃描速度得到很大程度的提高。
為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案-
提高殺毒引擎掃描速度的方法,首先,判斷待掃描分區(qū)的文件系
統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16 或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程; NTFS分區(qū)掃描流程
A、 讀取該待掃描分區(qū)的引導(dǎo)扇區(qū),獲取SMFT文件位置,$MFT 即主控文件表文件,該文件是一個管理分區(qū)中所有文件的數(shù)據(jù)庫,它 由許多MFT組成,每個文件都至少對應(yīng)一個MFT,當(dāng)一個文件有多 個MFT時,只有一個MFT包含未命名SDATA屬性,轉(zhuǎn)B;
B、 依次訪問SMFT元數(shù)據(jù)文件中的MFT,當(dāng)SMFT中所有文件 的MFT都訪問完成后,轉(zhuǎn)G;
C、 判斷當(dāng)前所訪問MFT的類型,如果是目錄,或者是已經(jīng)刪 除文件,或者是不包含未命名SDATA屬性的MFT,則返回轉(zhuǎn)B;如 果是文件,轉(zhuǎn)到D;
D、 訪問步驟C中所述文件MFT的未命名SDATA屬性,如果該 未命名SDATA屬性是常駐屬性,轉(zhuǎn)E;如果是非常駐屬性,轉(zhuǎn)F;
E、 讀取該未命名SDATA屬性中的數(shù)據(jù),該數(shù)據(jù)即文件內(nèi)容,并 將該文件內(nèi)容與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;
F、 根據(jù)該未命名SDATA屬性中的運行列表,獲取文件數(shù)據(jù)在磁 盤中的位置,讀取該位置的一個固定大小的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病 毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;
G、 結(jié)束NTFS分區(qū)掃描流程,繼續(xù)判斷下一待掃描分區(qū)的文件 系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為 FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程,如果沒有待掃面 分區(qū),則結(jié)束;
FAT分區(qū)掃描流程a、 訪問該分區(qū)引導(dǎo)扇區(qū),即分區(qū)的邏輯0扇,獲取分 區(qū)簇大小、保留扇區(qū)數(shù)、FAT區(qū)個數(shù)、FAT區(qū)大小,如果是FAT16 分區(qū),獲取根目錄最大項信息,計算出根目錄起始位置大小信 息,如果是FAT32分區(qū),則從引導(dǎo)扇區(qū)數(shù)據(jù)結(jié)構(gòu)中獲取根目錄 起始簇號信息;并計算分區(qū)起始簇的起始扇區(qū)號;
b、 依次訪問根目錄下的所有目錄項,訪問完分區(qū)內(nèi)所 有目錄項后轉(zhuǎn)h;
c、 如果當(dāng)前所訪問的目錄項是己經(jīng)刪除文件的目錄 項、已經(jīng)刪除文件夾的目錄項、長文件名目錄項或者巻標(biāo)目錄 項,轉(zhuǎn)b;如果是未刪除文件的目錄項,轉(zhuǎn)d;是未刪除文件夾 的目錄項轉(zhuǎn)e;
d、 分析該未刪除文件的目錄項,得到該未刪除文件的
起始簇,通過該起始簇,訪問FAT表,得到FAT表鏈,即獲 取了該未刪除文件在磁盤中所占位置,讀取該位置的一個固定 大小的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處 理;
e、 分析該未刪除文件夾目錄項,獲得該未刪除文件夾 起始簇號,并訪問FAT表,得到該未刪除文件夾的FAT表鏈, 即獲取了該未刪除文件夾所在磁盤中的位置,讀取這些位置上 的數(shù)據(jù),得到該未刪除文件夾的內(nèi)容,完成后轉(zhuǎn)f;
f、 依次訪問該文件夾的所有目錄項;
g、 如果是已經(jīng)刪除文件的目錄項、已經(jīng)刪除文件夾的 目錄項、長文件名目錄項,轉(zhuǎn)f;如果是未刪除文件的目錄項轉(zhuǎn) d、是未刪除文件夾的目錄項,轉(zhuǎn)e;
h、 退出本流程結(jié)束FAT分區(qū)掃描流程,繼續(xù)判斷下一 待掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS 分區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程,如果沒有待掃面分區(qū),則結(jié)束。 與現(xiàn)有技術(shù)方案相比,本發(fā)明方法采用直接操作磁盤進(jìn)行扇區(qū)訪 問的方式。 一方面,去除了打開文件和關(guān)閉文件的過程,節(jié)省了打開
和關(guān)閉文件的調(diào)用Windows API時間。另一方面,不再通過Windows AH讀文件,也就不需要Windows文件系統(tǒng)進(jìn)行地址解析和訪問, 大大節(jié)省了讀文件的時間。由此可見,本發(fā)明方法可以有效提高殺毒 引擎掃描速度。


圖1為FAT分區(qū)形式的文件目錄架構(gòu)下面結(jié)合附圖和具體實例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)描述。
具體實施例方式
提高殺毒引擎掃描速度的方法,首先,判斷待掃描分區(qū)的文件系 統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16 或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程;
NTFS分區(qū)掃描流程
A、 讀取該待掃描分區(qū)的引導(dǎo)扇區(qū),即分區(qū)的邏輯0扇,獲取SMFT 文件位置,$MFT即主控文件表文件,該文件是一個管理分區(qū)中所有 文件的數(shù)據(jù)庫,它由許多MFT組成,每個文件都至少對應(yīng)一個MFT, 當(dāng)一個文件有多個MFT時,只有一個MFT包含未命名SDATA屬性, 轉(zhuǎn)B;
B、 依次訪問SMFT元數(shù)據(jù)文件中的MFT,當(dāng)SMFT中所有文件 的MFT都訪問完成后,轉(zhuǎn)G;
C、 判斷當(dāng)前所訪問MFT的類型,如果是目錄,或者是已經(jīng)刪 除文件,或者是不包含未命名SDATA屬性的MFT,則返回轉(zhuǎn)B;如 果是文件,轉(zhuǎn)到D;
D、 訪問步驟C中所述文件MFT的未命名SDATA屬性,如果該 未命名SDATA屬性是常駐屬性,轉(zhuǎn)E;如果是非常駐屬性,轉(zhuǎn)F;E、 讀取該未命名SDATA屬性中的數(shù)據(jù),該數(shù)據(jù)即文件內(nèi)容,并 將該文件內(nèi)容與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;
F、 根據(jù)該未命名SDATA屬性中的運行列表,獲取文件數(shù)據(jù)在磁 盤中的位置,讀取該位置的一個固定大小的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病 毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;
G、 結(jié)束NTFS分區(qū)掃描流程,繼續(xù)判斷下一待掃描分區(qū)的文件 系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為 FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程,如果沒有待掃面 分區(qū),則結(jié)束;
FAT分區(qū)掃描流程
a、 訪問該分區(qū)引導(dǎo)扇區(qū),即分區(qū)的邏輯0扇,獲取分區(qū)簇 大小、保留扇區(qū)數(shù)、FAT區(qū)個數(shù)、FAT區(qū)大小,如果是FAT16 分區(qū),獲取根目錄最大項信息,計算出根目錄起始位置大小信 息,如果是FAT32分區(qū),則從引導(dǎo)扇區(qū)數(shù)據(jù)結(jié)構(gòu)中獲取根目錄 起始簇號信息;并計算分區(qū)起始簇的起始扇區(qū)號;
b、 依次訪問根目錄下的所有目錄項,訪問完分區(qū)內(nèi)所有目 錄項后轉(zhuǎn)h;
c、 如果當(dāng)前所訪問的目錄項是已經(jīng)刪除文件的目錄項、已 經(jīng)刪除文件夾的目錄項、長文件名目錄項或者巻標(biāo)目錄項,轉(zhuǎn)
b;如果是未刪除文件的目錄項,轉(zhuǎn)d;是未刪除文件夾的目錄
項轉(zhuǎn)e;
d、 分析該未刪除文件的目錄項,得到該未刪除文件的起始
簇,通過該起始簇,訪問FAT表,得到FAT表鏈,即獲取了 該未刪除文件在磁盤中所占位置,讀取該位置的一個固定大小 的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病毒庫進(jìn)行匹配,進(jìn)行査殺毒處理。需 要指出的是,在該步驟中,并未指出該步驟完成后再進(jìn)行哪一 步,原因是,如果該步驟d是由步驟c轉(zhuǎn)入,則根據(jù)步驟b所述"依次訪問根目錄下的所有目錄項","依次訪問"即表明 了完成該步驟d后再訪問根目錄下的下一個目錄項。而如果該 步驟d是由步驟g轉(zhuǎn)入,則根據(jù)步驟f所述"依次訪問該文件 夾的所有目錄項","依次訪問"即表明了完成該步驟d后再 訪問步驟f所述文件夾下的下一個目錄項。簡單的說"依次訪 問"本身就表明了一種遍歷的過程,因此,在該步驟d中不需 要再說明完成后轉(zhuǎn)向哪一步驟。通過后續(xù)結(jié)合圖1的實施例可 以有助于理解本過程。
e、 分析該未刪除文件夾目錄項,獲得該未刪除文件夾起始 簇號,并訪問FAT表,得到該未刪除文件夾的FAT表鏈,即 獲取了該未刪除文件夾所在磁盤中的位置,讀取這些位置上的 數(shù)據(jù),得到該未刪除文件夾的內(nèi)容,完成后轉(zhuǎn)f;
f、 依次訪問該文件夾的所有目錄項;需要指出的是,這里 所說的"該文件夾"并不是指固定的某個文件夾,根據(jù)循環(huán)的 進(jìn)行,"該文件夾"所指代的文件夾也是在變化的。
g、 如果是己經(jīng)刪除文件的目錄項、已經(jīng)刪除文件夾的目錄 項、長文件名目錄項,轉(zhuǎn)f;如果是未刪除文件的目錄項轉(zhuǎn)d、 是未刪除文件夾的目錄項,轉(zhuǎn)e;
h、 退出本流程結(jié)束FAT分區(qū)掃描流程,繼續(xù)判斷下一待 掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分 區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū) 掃描流程,如果沒有待掃面分區(qū),則結(jié)束。
上述FAT分區(qū)掃描流程簡單的說,就是從根目錄開始依次訪問分
區(qū)中的全部目錄項。目錄項主要有兩種,即文件的目錄項和文件夾的 目錄項。如果訪問至文件目錄項,則得到文件的起始簇,通過該起始 簇,訪問FAT表,得到FAT表鏈,即獲取了該未刪除文件在磁盤中所占位置,讀取該位置的一個固定大小的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病毒庫 進(jìn)行匹配,進(jìn)行査殺毒處理。而如果訪問至文件夾目錄項,則進(jìn)一步 訪問該文件夾下層的目錄項,依次類推,直至訪問完分區(qū)中的全部文 件目錄項,也就實現(xiàn)了對分區(qū)中全部文件的讀取工作。下面結(jié)合圖1,
說明根據(jù)上述FAT分區(qū)掃描流程對各個目錄項的掃描過程。圖1中的 矩形代表文件夾目錄項,圓形代表文件目錄項。
首先執(zhí)行步驟a,然后訪問根目錄下的目錄項1,目錄項1為文 件夾目錄項,轉(zhuǎn)e;分析目錄項l,依次訪問文件夾的目錄項ll、目 錄項12和目錄項13;由于目錄項ll為文件目錄項,轉(zhuǎn)d,完成一個 文件(目錄項11所對應(yīng)文件)的讀取工作;目錄項12為文件夾目錄 項,轉(zhuǎn)e;分析目錄項12,依次訪問文件夾目錄項121、 122;文件 夾目錄項121下目錄項1211為文件目錄項,轉(zhuǎn)d,完成第二個文件 的讀取工作;文件夾目錄項121下目錄項1212為文件目錄項,轉(zhuǎn)d, 完成第三個文件的讀取工作;文件夾目錄項122下目錄項1221為文 件目錄項,轉(zhuǎn)d,完成第四個文件的讀取工作;目錄項13為文件夾 目錄項,轉(zhuǎn)e;分析目錄項13,訪問目錄項131;目錄項131為文件
目錄項,轉(zhuǎn)d,完成第五個文件的讀取工作;至此,目錄項l下的所
有子目錄項均訪問完畢。訪問根目錄下的目錄項2,目錄項2為文件 目錄項,轉(zhuǎn)d,完成第六個文件的讀取工作;訪問根目錄下的目錄項
3,目錄項3為文件夾目錄項,轉(zhuǎn)e;分析目錄項3,依次訪問子目錄 項31、 32;目錄項31為文件目錄項,轉(zhuǎn)e;分析目錄項31,依次訪 問它的子目錄項311、 312;目錄項311為文件目錄項,轉(zhuǎn)d,完成第六個文件的讀取工作;目錄項312為文件目錄項,轉(zhuǎn)d,完成第七個 文件的讀取工作;再訪問目錄項32,目錄項32為文件目錄項,轉(zhuǎn)d, 完成第八個文件的讀取工作。至此,分區(qū)的所有目錄項訪問完畢,同 時,分區(qū)中所有文件讀取完畢,轉(zhuǎn)h。
以上實施例描述僅用以說明而非限制本發(fā)明的技術(shù)方案。不脫離 本發(fā)明精神和范圍的任何修改或局部替換,應(yīng)涵蓋在本發(fā)明的權(quán)利要 求范圍當(dāng)中。
權(quán)利要求
1、提高殺毒引擎掃描速度的方法,其特征在于,首先,判斷待掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程;NTFS分區(qū)掃描流程A、讀取該待掃描分區(qū)的引導(dǎo)扇區(qū),獲取$MFT文件位置,轉(zhuǎn)B;B、依次訪問$MFT元數(shù)據(jù)文件中的MFT,當(dāng)$MFT中所有文件的MFT都訪問完成后,轉(zhuǎn)G;C、判斷當(dāng)前所訪問MFT的類型,如果是目錄,或者是已經(jīng)刪除文件,或者是不包含未命名$DATA屬性的MFT,則返回轉(zhuǎn)B;如果是文件,轉(zhuǎn)到D;D、訪問步驟C中所述文件MFT的未命名$DATA屬性,如果該未命名$DATA屬性是常駐屬性,轉(zhuǎn)E;如果是非常駐屬性,轉(zhuǎn)F;E、讀取該未命名$DATA屬性中的數(shù)據(jù),該數(shù)據(jù)即文件內(nèi)容,并將該文件內(nèi)容與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;F、根據(jù)該未命名$DATA屬性中的運行列表,獲取文件數(shù)據(jù)在磁盤中的位置,讀取該位置的一個固定大小的數(shù)據(jù)塊,將該數(shù)據(jù)塊與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處理,完成后轉(zhuǎn)B;G、結(jié)束NTFS分區(qū)掃描流程,繼續(xù)判斷下一待掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程,如果沒有待掃面分區(qū),則結(jié)束;FAT分區(qū)掃描流程a、訪問該分區(qū)引導(dǎo)扇區(qū),獲取分區(qū)簇大小、保留扇區(qū)數(shù)、FAT區(qū)個數(shù)、FAT區(qū)大小,如果是FAT16分區(qū),獲取根目錄最大項信息,計算出根目錄起始位置大小信息,如果是FAT32分區(qū),則從引導(dǎo)扇區(qū)數(shù)據(jù)結(jié)構(gòu)中獲取根目錄起始簇號信息;并計算分區(qū)起始簇的起始扇區(qū)號;b、依次訪問根目錄下的所有目錄項,訪問完分區(qū)內(nèi)所有目錄項后轉(zhuǎn)h;c、如果當(dāng)前所訪問的目錄項是已經(jīng)刪除文件的目錄項、已經(jīng)刪除文件夾的目錄項、長文件名目錄項或者卷標(biāo)目錄項,轉(zhuǎn)b;如果是未刪除文件的目錄項,轉(zhuǎn)d;是未刪除文件夾的目錄項轉(zhuǎn)e;d、分析該未刪除文件的目錄項,得到該未刪除文件的起始簇,通過該起始簇,訪問FAT表,得到FAT表鏈,即獲取了該未刪除文件在磁盤中所占位置,讀取該位置的一個固定大小的塊,將該數(shù)據(jù)與病毒庫進(jìn)行匹配,進(jìn)行查殺毒處理;e、分析該未刪除文件夾目錄項,獲得該未刪除文件夾起始簇號,并訪問FAT表,得到該未刪除文件夾的FAT表鏈,即獲取了該未刪除文件夾所在磁盤中的位置,讀取這些位置上的數(shù)據(jù),得到該未刪除文件夾的內(nèi)容,完成后轉(zhuǎn)f;f、依次訪問該文件夾的所有目錄項;g、如果是已經(jīng)刪除文件的目錄項、已經(jīng)刪除文件夾的目錄項、長文件名目錄項,轉(zhuǎn)f;如果是未刪除文件的目錄項轉(zhuǎn)d、是未刪除文件夾的目錄項,轉(zhuǎn)e;h、退出本流程結(jié)束FAT分區(qū)掃描流程,繼續(xù)判斷下一待掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程,如果沒有待掃面分區(qū),則結(jié)束。
2、 根據(jù)權(quán)利要求1所述的提高殺毒引擎掃描速度的方法,其特征在 于,所述分區(qū)引導(dǎo)扇區(qū)即分區(qū)的邏輯0扇。
3、 根據(jù)權(quán)利要求1所述的提高殺毒引擎掃描速度的方法,其特征在 于,所述SMFT即主控文件表文件,該文件是一個管理分區(qū)中所有文件的數(shù)據(jù)庫,它由許多MFT組成,每個文件都至少對應(yīng)一個MFT,當(dāng)一個 文件有多個MFT時,只有一個MFT包含未命名SDATA屬性。
全文摘要
本發(fā)明涉及提高殺毒引擎掃描速度的方法。提高殺毒引擎掃描速度的方法,首先,判斷待掃描分區(qū)的文件系統(tǒng)類型,如果為NTFS則執(zhí)行下述NTFS分區(qū)掃描流程,如果為FAT16或者FAT32則執(zhí)行下述FAT分區(qū)掃描流程。與現(xiàn)有技術(shù)方案相比,本發(fā)明方法采用直接操作磁盤進(jìn)行扇區(qū)訪問的方式。一方面,去除了打開文件和關(guān)閉文件的過程,節(jié)省了打開和關(guān)閉文件的調(diào)用Windows API時間。另一方面,不再通過Windows API讀文件,也就不需要Windows文件系統(tǒng)進(jìn)行地址解析和訪問,大大節(jié)省了讀文件的時間。由此可見,本發(fā)明方法可以有效提高殺毒引擎掃描速度。
文檔編號G06F17/30GK101673302SQ200910192530
公開日2010年3月17日 申請日期2009年9月22日 優(yōu)先權(quán)日2009年9月22日
發(fā)明者涂彥暉 申請人:珠海市安德網(wǎng)絡(luò)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
太原市| 甘孜县| 合山市| 芦山县| 合山市| 天祝| 隆安县| 邳州市| 铁力市| 宁河县| 阿克| 平昌县| 广元市| 江都市| 黔西| 会宁县| 墨脱县| 镇安县| 诏安县| 田东县| 平阳县| 修水县| 枝江市| 海口市| 萍乡市| 从江县| 佳木斯市| 永春县| 长白| 太仓市| 滁州市| 乐业县| 霍城县| 黄山市| 永登县| 三明市| 西华县| 北川| 固阳县| 连平县| 连山|