??? 摘 要:計(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.