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