開源殺毒軟件ClamWin及其引擎ClamAV學(xué)習(xí)總結(jié)_第1頁
開源殺毒軟件ClamWin及其引擎ClamAV學(xué)習(xí)總結(jié)_第2頁
開源殺毒軟件ClamWin及其引擎ClamAV學(xué)習(xí)總結(jié)_第3頁
開源殺毒軟件ClamWin及其引擎ClamAV學(xué)習(xí)總結(jié)_第4頁
開源殺毒軟件ClamWin及其引擎ClamAV學(xué)習(xí)總結(jié)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2.4開源殺毒軟件ClamWin及其引擎ClamA泮習(xí)總結(jié)ClamWin 及其引擎 ClamAV紹ClamWinH一款用于 Microsoft Windows7/Vista/XP/Me/2000/98 及 Windows Sever 2008和2003操作系統(tǒng)的免費(fèi)反病毒程序,易于安裝且開源。Clamwin號稱最低功耗的“靜音殺毒軟件”,體積非常嬌小,不會占用太多計(jì)算機(jī)資源,不 像其它防毒軟件安裝之后會拖累整臺計(jì)算機(jī)的速度。而且除了強(qiáng)大的文件與電子 郵件防護(hù)能力之外,還擁有排程掃描、在線更新病毒碼、及時(shí)偵測等功能,而且 并不亞于許多市面上知名防毒軟件。ClamWin使用的殺毒引擎是開源的Cla

2、mAV ClamAV!十分優(yōu)秀的開源反病毒 程序,研究其架構(gòu)對反病毒引擎的設(shè)計(jì)及相關(guān)技術(shù)都有十分重要的意義。庫方面增加了多種形式,目錄支持的庫的形式有 *db、*db2、*db3、*.cvd、*hdb、 *ndb。cl_node為構(gòu)造特征碼的結(jié)構(gòu),cl_node不再是像以前版本,節(jié)點(diǎn)本身 存放特征碼。而是分別存放BM AC , MD5這些算法本身的結(jié)構(gòu)指針。掃描過程 中所用的特征結(jié)構(gòu)如下: struct cl_node unsigned int maxpatlen; /* maximal length of pattern in db */* 擴(kuò)展的BM算法*/ int *bm_shift;s

3、truct cli_bm_patt *bm_suffix;/* 擴(kuò)展的AC算法*/struct cli_ac_node *ac_root, *ac_nodetable; unsigned int ac_partsigs, ac_nodes;/* MD5 */struct cli_md5_node *md5_hlist; ;/ BM 結(jié)構(gòu)struct cli_bm_patt char *pattern, *virname, *offset; /特征、病毒名、偏移const char *viralias;/別名unsigned int length;/長度unsigned short target

4、;/該特征屬于的類型struct cli_bm_patt *next;);BM最小特征長度是10個(gè)字節(jié)。/ AC結(jié)構(gòu)struct cli_ac_patt short int *pattern;unsigned int length, mindist, maxdist;char *virname, *offset;const char *viralias;unsigned short int sigid, parts, partno, alt, *altn;unsigned short type, target;char *altc;struct cli_ac_patt *next;);AC算法

5、結(jié)構(gòu)有了一些修改,不過相對檢測方面改動不大。struct cli_md5_node char *virname, *viralias; /病毒名 / 別名unsigned char *md5;unsigned int size; /文本長度struct cli_md5_node *next;);ClamAV引擎中的主要掃描功能函數(shù)cli_scanpe :先是進(jìn)行PE合法性校驗(yàn),若遇到入口在不在節(jié)內(nèi),或小于各個(gè)節(jié)所在的大 小,及一系列非法PE格式文件情況,就都報(bào)“ Broken.Executable ”,然后檢測 退出。而后進(jìn)行殼情況的檢測,后面有這塊的具體分析說明,在調(diào)用相應(yīng)殼版本 驗(yàn)證后,調(diào)

6、用脫殼函數(shù),而后進(jìn)行特征匹配。cli_scanmschm :該函數(shù)用來對微軟的CHM&式文件進(jìn)行解碼處理cli_scanscrenc針對微軟的Script Encoder腳本加密的解密處理流程,解碼后按目錄文件 方式掃描。cli_scan_mydoom_log :該函數(shù)用來處理Worm.Mydoom.M.log ,走入該檢測流程分支依賴格式識別, 返回CL_TYPE_UNKNOWN_DATA顯然這樣的處理方式并不合理。Scanmanager所有檢測入口函數(shù)cl_loaddbdir加載本地所有格式病毒庫到內(nèi)存cl_build構(gòu)建掃描引擎cl_scandesc掃描分析cli_loaddb力口載*d

7、b,*db2,*db3,* Mdb等格式的病毒庫cli_parse_add添加病毒庫特征到結(jié)構(gòu)cli_ac_addsig添加特征到AO法結(jié)構(gòu)cli_bm_addpatt添加特征到BM(法結(jié)構(gòu)ClamAV引擎宏觀結(jié)構(gòu)說明從V0.15 - v.093 , ClamAWl擎的整體上一直都保持統(tǒng)一的風(fēng)格,不斷增加 的僅是內(nèi)部功能更加細(xì)致的分類,與一些重要數(shù)據(jù)結(jié)構(gòu)的增加和修改或相應(yīng)算法 的修正。當(dāng)然就引擎調(diào)用來看ClamAVJ為簡單,這方面沒有什么變化,引擎所處 的環(huán)境也始終是以文件或目錄為單位輸入的情況,不涉及網(wǎng)絡(luò)部分。對ClamAW擎歸納來說有2個(gè)特點(diǎn):一、通過配置信息指明檢測目標(biāo);二、 靠流程來驅(qū)

8、動檢測。ClamaU門為配置信息的處理寫了 一個(gè)管理結(jié)構(gòu),通過鏈表把它們存儲起來。當(dāng)引擎檢測處于眾多分支當(dāng)中時(shí),利用檢測配置可選擇其中一 個(gè)多或做個(gè)進(jìn)行檢測,這些配置有些是為了調(diào)試,有些是為了設(shè)置檢測粒度,如 解壓縮層數(shù),掃描文件大小限定等。對于第 2個(gè)特點(diǎn),ClamA,沒有一個(gè)十分清 晰的檢測調(diào)度函數(shù)。更多是靠很多小的檢測流程聚合而成,依靠順序調(diào)度來完成 檢測。而很多新加入的函數(shù)為了能順利加入的檢測行列中來, 而帶了很多個(gè)參數(shù)(為了兼容該函數(shù)所在上下文的調(diào)度環(huán)境) 最多的達(dá)到了 11個(gè)參數(shù),這樣當(dāng)外部 大量調(diào)用該流程函數(shù)時(shí),多參數(shù)的循環(huán)入棧,特別是涉及目錄、解壓等需要遞歸 操作時(shí),該方式對效

9、率影響估計(jì)會比明顯。從整體上看,ClamAW擎工作流程是:圖2-1 ClamAWI擎工作流程圖先獲取檢測配置 進(jìn)行病毒庫加載,因?yàn)閹焓菈嚎s的,所以先創(chuàng)建一個(gè)臨時(shí)目錄用釋放解 壓后的庫文件,MD和BM勺庫記錄會在測試加載完畢,ACT法的庫在此時(shí) 僅是添加到結(jié)構(gòu)當(dāng)中,因?yàn)樵撍惴ㄟ€要涉及調(diào)整內(nèi)部記錄的病毒特征的 指針,同時(shí)也初始化了一個(gè)動態(tài)配置結(jié)構(gòu)。構(gòu)建引擎,至少從函數(shù)名字上看是這樣,但實(shí)際上該步驟僅是調(diào)整AO法的內(nèi)部記錄的特征的指針,保留該步驟應(yīng)該是歷史版本遺留下來的問 題。再次進(jìn)行配置信息的獲得,包括掃描文件的最大值,解壓縮的比率,是 否檢測PE,是否開啟算法掃描等等。之所以分兩次獲取,可能是配

10、置本身 過于復(fù)雜耗時(shí),如果步驟3失敗,則直接退出,沒必要開始時(shí)初始所以配 置信息。對掃描對象的按目錄和文件進(jìn)行分類處理,當(dāng)處理的對象是目錄時(shí),遍 歷后仍然按單個(gè)文件方式處理。對單獨(dú)的文件,ClamAg檢測一些是否有和配置信息不符的情況,如解 包的遞歸層數(shù),在超出了給條件的情況下,會報(bào)告 “Archive.ExceededRecursionLimit ”病毒,而后進(jìn)行格式識別,依據(jù)格式識別的返回結(jié)果調(diào)用不同的處理函數(shù)進(jìn)行庫匹配。最為關(guān)鍵的是第6步,前幾個(gè)步驟都是為最后一步掃描構(gòu)建基礎(chǔ)環(huán)境,在檢測中最為關(guān)鍵的是cli_scanpe函數(shù),該函數(shù)長達(dá)2000多行代碼。從 V0.93版中看更加細(xì)致的驗(yàn)證PEt件的合法性的操作,在驗(yàn)證通過后才會 進(jìn)入算法掃描(主要用于檢測多態(tài)病毒)、殼識別、脫殼、普通文件掃 描的流程。但該處理過程沒有太清晰的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論