??? 摘 要:計算機病毒發(fā)展日新月異,而殺毒軟件的產生存在滯后性,。也就是說,,借助現(xiàn)有的殺毒軟件檢測系統(tǒng)是否感染了新現(xiàn)病毒是件比較棘手的事,。本文基于加,、解殼原理和病毒運行流程,,提出了一種新的判斷方法。首先對干凈文件加防病毒保護殼,,待運行該文件時,,文件自動解殼判斷是否已感染病毒,并進行相應處理,,最后用Delphi編程實現(xiàn),,同時利用該WinHex查看加殼后的結果。實踐證明,,該保護殼具有可用性。
??? 關鍵詞:加,、解殼原理,;病毒運行流程;防病毒保護殼,;Delphi
?
??? 自然界中植物用殼來保護種子,,動物用殼來保護身體。同樣,,在一些計算機軟件里也有一段專門負責保護軟件不被非法修改或反編譯的程序,。它們一般都是先于程序運行,拿到控制權,。就像動植物的殼一般都是在身體外面一樣理所當然,。從功能上看,軟件的殼和自然界中的殼相差無幾,,無非是保護,、隱蔽殼內的東西,而從技術的角度出發(fā),,殼是一段執(zhí)行于原始程序前的代碼,。本設計所涉及的防病毒保護殼,就其本質來看就是一種“良性病毒”,,它保護軟件,,提醒用戶“可能感染了某種病毒”。
1 設計思路
??? 校驗法是對正常文件的內容,計算其校驗和,,將該校驗和寫入文件中或寫入其他文件中保存,。在文件使用過程中,定期地或每次使用文件前檢查文件現(xiàn)在內容算出的校驗和與原來保存的校驗和是否一致,,因而可以發(fā)現(xiàn)文件是否感染,。但是由于病毒感染,修改了文件的某些信息,,可能導致文件不能正常運行,。所以,校驗法僅能較好地檢測病毒,,而不能保護正常文件,。
??? 本文設計的防病毒保護“殼”,其基本思想和校驗法相似,,并在某些方面進行了改進,。
??? 防病毒保護“殼”的本質是一種良性“病毒”。它和病毒在某些方面有點類似,,都在宿主程序運行之前獲取控制權,。但是,它對宿主程序沒有破壞性,。而病毒感染文件主要表現(xiàn)為文件的文件名,、路徑名或文件大小(病毒附著在被感染文件上)的改變或其他相關變化,。為此,,設計了一種防病毒保護殼,它能判斷文件相關屬性的變化,,能完成自動脫“殼”功能,。
2 具體實現(xiàn)步驟
??? 當文件(PE文件)未被感染前,就給它加防病毒保護“殼”,。
??? 設保護殼大小C,,加殼標記和感染標記均為4個字節(jié),加殼前文件路徑和文件名為A1,、大小為A2,。
??? 當運行加殼后的文件(路徑和文件名為E1、大小為E2)時,,若被病毒體感染,,該病毒體剝離出文件(如圖1、圖2所示),,并運行之,。剝離出的文件運行時,保護殼首先獲得控制權,比較E1與A1,E2與(A2+C+4)是否相等,。倘若E1與A1不等,,可能是某種病毒對加殼文件進行了移動操作;倘若,E2與(A2+C+4)不等,,可能是因為其他的病毒將加殼后的文件進行“包裹”,,這時彈出“發(fā)現(xiàn)可疑病毒”;若相等,,則剝離出原文件,,然后創(chuàng)建一個新的進程運行之,運行完畢后自動終止自己,。
?
3 具體測試
3.1 防病毒保護殼測試
??? 對“F:calc.exe”加殼后運行,。
??? 測試中需要使用16進制觀察器WinHex.查看加殼后的結果。
??? 從圖3可以得出被加殼的文件名為F:calc.exe,,大小為0001C000H(即114 688字節(jié)),,加殼標記為66666666H。加殼后的文件大小為7CC6BH字節(jié),。
?
?
??? 雙擊運行加殼后文件的截圖如圖4所示,,若加殼后文件的路徑、名字改變,,雙擊運行時會提示“發(fā)現(xiàn)可疑病毒”,,可能是被某些病毒“搬移”了。為了看到效果,,我便人為地改變了加殼后的文件路徑,如圖5所示,。
?
?
?
3.2 UPX壓縮文件測試
??? 選用UPX壓縮工具的主要目的是壓縮防病毒保護殼(AddShell.exe),。另外,在一定程度上能保護該“殼”,,防止被惡意竊取或修改,。防病毒保護殼壓縮前、后截如圖6,、圖7所示,,圖8、圖9分別為利用壓縮后的“殼”處理文件及利用未壓縮“殼”處理文件后情況,。
?
?
?
?
?
??? 從圖9觀察得出,,使用未壓縮殼處理calc.exe后文件大小為207 KB,而使用壓縮殼處理后卻變?yōu)榱?55 KB,,達到了預期的效果,。
??? 防病毒保護殼的優(yōu)點為它既可以發(fā)現(xiàn)已知病毒又可以發(fā)現(xiàn)未知病毒,在一定程度上起到保護軟件不被非法修改、提醒用戶及時查殺病毒等作用,。
??? 缺點是病毒感染并非文件相關信息(路徑名,、文件名、大小)改變的惟一的非他性原因,,有可能是正常程序引起的,,所以,該防病毒保護“殼”會出現(xiàn)誤報警的情況,。另外,,考慮到病毒的多樣性,對于出現(xiàn)“可疑病毒”的情況,,尚未進行相應處理,。
參考文獻
[1]?陳健偉,朱梅.計算機病毒與反病毒技術研究[J].電子與電信,,2006, 12(34).
[2]?張桂勇,,陳芳瓊.APIforWindows2000/XP詳解[M]. 北京:清華大學出版社,2003.
[3]?楊華民,梁水.Delphi函數(shù)參考大全[M]. 北京:人民郵電出版社,,2006.