卡巴斯基反病毒軟件(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出於習慣和簡單,這裡一律稱為AVP或KAV。
學習AVP的檢測辦法的意義一方面在於AVP的檢測方法是經過理論驗證和實踐考驗的科學合理的方法,另外DOS年代過來的朋友對於反病毒有過這樣的經驗:“機子感染病毒了?好,請用干淨無毒的系統盤啟動,然後全盤查殺。”,我記得CIH橫行那會,一個朋友讓我幫他清除病毒,說病毒是國內某知名AV報的,啟動該AV殺了一遍還有,而且該AV自己的監控報自己也感染了CIH,我聽了後告訴他用干淨的啟動盤啟動系統全盤查殺。雖然這是一個辦法,但事實上反病毒軟件為什麼不直接做到可以內存檢測並清除病毒呢。而這是完全可以做到的,對於內存檢測/清除駐留型病毒的方法,就我所知最早AVP開始使用。
一、檢測方法: 在AVP病毒庫中,有幾種特征記錄,其中一種是內存特征,這是AVP用來檢測查殺內存駐留型病毒的特征集,AVP對內存駐留的感染式病毒采用了一些單獨的檢測方法。
AVP通過在病毒庫中記錄的掃描方法和地址偏移來掃描內存中駐留的感染式病毒,從地址偏移開始進行逐字節匹配,當匹配到匹配字節的時候,即:Segm:Offset + byte offset=record:Byte,然後AVP開始計算由庫記錄指定長度的特征碼,如果恰好匹配庫中的記錄的話,將顯示對應的病毒消息,同時根據庫的修復記錄所指定的修復長度、和修復字節中的內容,進行內存修復,確保修復後,使得原病毒失去活性。
卡飯安軟交流中心
此記錄結構包含的字段主要有:
病毒名
搜索方法:絕對地址掃描、專用模塊...
地址偏移: 段+偏移
匹配字節
特征長度
特征
專用處理過程:Obj_Link
處理偏移地址
處理字節長度:一般小於10
修復字節
二、搜索方法: 有上面可以看出,AVP能否保證快速處理,一個關鍵因素是AVP的搜索方法,事實上,AVP內置了眾多的搜索辦法,這些辦法適用於MSDOS、WIN9X、WINNT/2000/XP等系統。AVP對一個病毒的處理可以采用多種內存搜索辦法,所不同的是哪種方法高效一些而已。
1、絕對地址:
AVP采用絕對地址的掃描辦法來掃描一些病毒,掃描器從庫記錄中讀出相應的地址記錄,到內存中進行匹配,匹配上後,進行修復處理過程。
2、段掃描:
AVP從一個內存段,單字節循環遞增,從開始掃描到段結束。
3、全部掃描:
AVP從內存地址0x00000000h開始,循環遞增,進行全內存匹配的掃描方法。
4、專用模塊:
這是針對一些特定的“狡猾”病毒的方法。當AVP自己定義的正常掃描和檢測辦法無法正確識別的時候,采用一個專用的處理模塊來檢測清除該病毒,該模塊編寫完成後,編譯為obj格式的文件,存儲在AVP的庫記錄中。
卡飯安軟交流中心
5、中斷跟蹤:
這主要是AVP For DOS的掃描方法,通過對系統的中斷INT21、INT13的來定位駐留內存的病毒代碼,通過對這些指令附近的代碼修改,使得病毒失去活性。