![]() |
學校地址:湖南省 長沙市 雨花區 車站南路紅花坡路口 |
![]() |
學校地址:湖南省 長沙市 雨花區 車站南路紅花坡路口 |
一、序言
不知道你是否曾碰到過從軟盤和硬盤都啟動不了計算機的情形?一般計算機的硬盤分區表被病毒感染后,若不能啟動機子,通常從軟盤可以啟動。但在嚴重的情形下,不但從硬盤不能啟動機子,就是從軟盤也不能啟動。有的惡毒的病毒就能使硬盤被死鎖。筆者一次在自己機子上玩弄硬盤鎖時,就被鎖住過一次。結果在硬盤下選擇DOS或WIN95模式啟動機子都死機,在軟盤下用DOS啟動也死機;在COMS中將硬盤類型選擇None,雖然可以從軟盤啟動,但啟動后沒有硬盤,使用軟盤上的FDISK命令,想重新分區或格式化都沒門。弄得我一籌莫展。
本來,硬盤被鎖住時,可以采用3.0以下的DOS版本啟動機子,機子啟動后雖然也不認硬盤,但其不認的原因在于其管理不了現在的大硬盤,因此可以用Debug修改硬盤分區表,修改后可以啟動。但在已進入WINDOWS的年代,3.0以下的DOS實難找到,即使找到,你的機子上恐怕也因沒有5寸軟驅而不能使用。因此, 好的辦法是編制一個程序來解決這個問題。筆者通過嘗試和思考,找到一種比較實用的方法,可以輕松解開死鎖的硬盤,當然也把自己的硬盤解開了。下面,我將這種方法介紹出來。
二?硬盤鎖住原理
硬盤鎖住通常是對硬盤的分區表做手腳,因此首先應該了解硬盤的分區表。硬盤分區表位于0柱面0磁頭1扇區,這個扇區的前面200多個字節是主引導程序,后面從01BEH開始的64個字節是分區表。分區表共64字節,分為4欄,每欄16字節,用來描述一個分區。如果是用DOS的FDISK程序分區后, 多只用兩欄,第一欄描述基本的DOS分區, 二欄描述擴展的DOS分區。 分區表一欄的結構與各字節的含義如下:
00H―標志活動字節,活動DOS分區為80H,其它為00H。
01H―本分區邏輯0扇區所在的磁頭號。
02H―邏輯0扇區所在柱面中的扇區號。
03H―邏輯0扇區所在的柱面號。
04H―分區類型標志。
05H―本分區 后一個扇區的磁頭號。
06H― 后一個扇區的扇區號。
07H― 后一個柱面的柱面號。
08H―硬盤上在本分區之前的扇區總數,用雙字表示。
0CH―本分區的扇區總數,從邏輯0扇區計數,不含隱藏扇區,用雙字表示。
在上面的介紹中給出的柱面號與扇區號雖然各占一個字節,但實際上扇區號用6位表示,柱面號用10位表示,扇區號所在字節的 高兩位實際上是柱面號的 高兩位。 分區表的 后兩個字節是分區表的有效標志,如果將其改變,將不能從硬盤啟動,這是一種簡單的鎖住硬盤的方法。解決的辦法是從軟盤啟動,啟動后硬盤仍然可以使用。用Debug或Noratn中的Diskedit軟件將硬盤該分區表中的標志恢復,則從硬盤啟動也沒有問題了。鎖住硬盤的另一種方法是對分區參數做手腳,如果將分區參數全部變為0,則啟動時由于找不到分區參數,從硬盤是沒法啟動,從軟盤啟動后也不認硬盤,如果你敲入盤符C并回車,將出現提示Invalid driver specification。
但所幸的是,畢竟可以啟動機子,不認硬盤沒關系,在A盤上用DOS的Debug仍然可以讀出硬盤0柱面0磁頭1扇區的內容,修改后再寫入0柱面0磁頭1扇區,重新啟動機子又沒問題了。如果將分區表參數隨意改為其它參數,則有可能不能用可以安裝DOS的DOS系統盤啟動,按F3退出后將出現內存分配錯誤,不能裝載DOS的命令解釋器COMMAND的提示,系統就死機了,筆者就曾碰見過這種情形。但用一張格式化成系統盤的軟盤則可以順利啟動,只要有Debug,你仍然可以將分區表參數修改回去。
可怕的事情是,如果你不幸將分區表參數改成一個循環鏈,即C盤的下一個分區指向D驅,D驅的下一個分區又指向C區,這樣循環下去,DOS啟動或WIN95啟動時由于無休止的讀取邏輯驅動器,就只有死機的份了。這是只要有硬盤存在,不管你用軟盤還是硬盤都沒法啟動機子了,由于不能啟動是由于硬盤造成的,即使你將硬盤下到其它計算機上,也沒法使用,這樣硬盤就徹底被鎖死了,筆者所遭遇就是此情形。不信,你只需將硬盤0柱面0磁頭1扇區的1D0H處改為1(如果你的D驅開始柱面號不夠大,此處本來就為1),將1D1H處改為0,表示D盤的開始柱面號跟C盤一樣,看看你的計算機還能不能啟動,不過你在沒有充分的準備前絕不要試。
一個完整的硬盤鎖程序,不過是重新改寫0柱面0磁頭1扇區的引導程序,并將分區表破壞或故意制造一個循環分區表,而將真正的硬盤分區表參數和引導程序放在其它隱藏扇區并保護起來,如果啟動時口令不對,則不能啟動機子,口令對了則順利啟動。這種硬盤鎖程序,情形好的還可以用軟盤啟動;情形嚴重的就是連軟盤也不能啟動,硬盤真被鎖住
|