一.簡介
硬盤中的數據與計算機的引導和運行過程密切相關,其中的信息可以很明顯地分成兩類:第一類是完全不對用戶透明的數據,只可以被計算機讀取和使用,主要包括:主引導記錄(Master Boot Record (MBR))、分區表和引導扇區。這類信息在硬盤中占據的空間不大,數據量也很小,但所起的作用卻非常重要,此處數據一旦出現損壞,對整個計算機來說,往往是致命性的故障。第二類信息是一般的文件或數據,對用戶是透明的,或者即使隱含的也可以通過修改文件屬性看到。
主引導記錄位於硬盤的第一個物理扇區,一個物理扇區是512個字節。從第一個字節開始就是真正的引導記錄代碼,引導記錄到結束。接著是分區表,分區表如果以80開頭,這個分區就是所謂可激活分區,即可以充當引導分區。這512個字節的最後兩個字節是55AA,這是引導成功的標志。在這三部分之間的空閒部分,都以0來填充。
一個物理硬盤可以分成一個或多個區域,稱為分區。一個分區之下可以再劃分成一個或多個邏輯驅動器。由於第一類硬盤信息極其重要但又不為用戶所見,所以要對這裡進行修改就必須借助於特定的工具軟件,能夠完成這樣操作的軟件工具有微軟自己開發的,也有第三方開發的。例如著名的諾頓工具中的磁盤編輯器就是一個典型例子。
本次介紹的Dskprobe.exe是一個微軟自己開發的、應用於windows 2000環境下的磁盤扇區編輯工具,主要用於硬盤扇區的編輯。這個工具允許使用者以本地管理員的身份或權限直接對硬盤的物理扇區進行:讀取、編輯、修改、保存及備份。這是用別的方法難以實現的操作。是微軟支持工具中的一個。
大概你也會聽說過,這類工具的威力大破壞性也大,如果你確實熟悉硬盤的信息結構,Dskprobe就是你手中的利器。如果盲目亂動,結果無疑是災難性的。所以,給你提出以下強烈建議:如果要為練手獲得經驗的話,最好有行家在場指導,或找一塊空閒的、沒有什麼關緊數據的硬盤試驗。就是出問題,也不致給你帶來嚴重後果。
Dskprobe的應用有以下限制和適用范圍:1. 這個工具與諾頓工具的最大區別就是引入了對工具使用者權限的要求,當執行Dskprobe的時候,它會先要求你輸入管理員的登錄密碼。2.由於每台計算機配備的硬盤都可能不一樣,所安裝的操作系統的類型、版本也參差不一;如果利用了多系統引導安裝,則還存在怎樣組合問題,凡此種種,都會影響主引導記錄和分區表乃至引導扇區的內容。所以,進行對比的時候,決不能照搬書本上的例子。3.該工具不能在FAT32上使用,即不支持FAT32系統。4.該工具不能用在動態磁盤上。
該工具在使用時可分成兩個階段:
1.備份階段,這是指系統尚屬正常的時候,事先使用Dskprobe來將重要信息讀出、並保存為一個或多個文件。需要保存的有:主引導記錄、分區表和引導扇區。
2.排除故障,當發現引導故障後,如果確認是主引導記錄、分區表和引導扇區的問題。就可以用Dskprobe先將原來備份的文件讀出來,然後進行替換並保存到相應的物理扇區。進一步說:由於Dskprobe工具實際可以對硬盤的任意物理扇區進行編輯修改,所以,它也決不限於只能完成上面三部分替換。
二.如何進行針對主引導記錄的操作?
硬盤上電後,系統首先訪問硬盤控制電路中保存的諸如廠商、型號等等基本信息備用。隨後系統執行BIOS中的一段例行代碼,首先讀取的硬盤的主引導記錄(Master Boot Record (MBR))到內存中,然後執行引導記錄中的代碼,就可以完成引導過程並最終將整個系統的控制權交給操作系統。這就是計算機引導過程的粗略描述。如果要配置多個操作系統,希望在引導過程中可以被用戶選擇,就需要修改引導記錄中的代碼來實現這些功能。當然,這種情況下的主引導記錄要比單一引導更為復雜。
要訪問主引導記錄,可以先啟動程序:Dskprobe.exe
然後可以按照下列步驟:
1.先指定要讀取(主引導記錄所在)的驅動器,可用鼠標點擊菜單中的:Drives->Physical Drive,會顯示一個用來指定物理驅動器的對話框。
2.這個對話框的編輯欄中默認顯示一個"Physical Drive 0",這就是第一個物理驅動器――硬盤。
3.鼠標點擊"Physical Drive 0",再點擊按鈕Set Active,就完成了指定物理驅動器的任務了。4.然後指定要讀取的物理扇區位置。可以點擊圖1菜單中的Sectors->Read Sectors。又出現的對話框可以用來指定扇區的起始位置和要連續讀取的扇區數。
如Starting Sector(起始扇區)=0,Number of Sectors(扇區數)=1,點擊OK按鈕後,立即顯示出來的內容如圖1窗口中所示。這就是物理硬盤0柱面0磁盤面第一扇區的信息,也就是主引導記錄的內容(包含分區表信息)。如果將這些信息單獨截取出來,以文本方式顯示,基本上與下面的類似:之所以說成基本類似,是因為這些內容中有些部分不是每台計算機都相同的,例如分區表會隨分區數多少而不同,引導記錄代碼也會因是否加入多引導選擇而不同。
5.將顯示結果保存為一個文件:上面已經說過物理硬盤0柱面0磁盤面第一扇區的信息非常重要,我們何不趁現在計算機正常時將這些信息保存起來呢?你可以點擊"File->Save as…",指定一個文件的保存路徑和名稱,就可以予以保存,默認的後綴是.dsk。
6.用完好的主引導記錄替換當前(損壞)的這個:如果你自己的計算機存在引導問題並確認是主引導扇區的問題,況且以前保存有完好的引導記錄文件,那麼,你就可以進行這個操作了。首先點擊"File->Open",找到引導記錄文件並打開,如果核對一下沒有問題,就可以再點擊"Write -> Write Sector",然後會有對話框讓你指定(要寫入的)起始扇區,選好後點擊"OK",就可以完成改寫。必須說明的是:這種操作非常關鍵,一步也不能錯。否則後果是非常嚴重的,為防萬一,動手之前重要數據先作好備份。
能導致主引導記錄損壞的原因主要有:a.病毒,許多病毒都修改這裡,因為主引導記錄被執行的時候,操作系統還沒有在內存中完全取得系統控制權,這種修改的結果是病毒先取得了系統控制權。如果真是這種情況,病毒代碼往往還會接著存放在後續的扇區中,而正常情況下,0柱面0磁面上應當是除了主引導記錄外什麼也沒有的。假設,你的硬盤是每面63個扇區,如果你發現0柱面0磁盤面第一扇區之後的哪些扇區上並不是以0填充的,而是有別的非0值,就可以肯定你的硬盤存在問題。b.分區表損壞。這也是常見的問題,我們留在後面詳細討論。c.分區操作不當,這主要發生在沒有安裝操作系統之前,所以也用不上本次所介紹的工具。
三.引導記錄結構。
下面是一個主引導記錄區的內容:最左邊的:號前的數字是相對的物理地址;中間的那些16進制數字是記錄內容(限於藍色的部分);粉紅色的字體是磁盤簽名,在以前的dos中是沒有這一項的;以80開頭的紅色字體部分是分區表;末尾的55AA是引導結束標志。
Physical Sector: Cyl 0, Side 0, Sector 1
00000000: 33 C0 8E D0 BC 00 7C FB - 50 07 50 1F FC BE 1B 7C 3.....|.P.P...|
00000010: BF 1B 06 50 57 B9 E5 01 - F3 A4 CB BD BE 07 B1 04 ...PW...........
00000020: 38 6E 00 7C 09 75 13 83 - C5 10 E2 F4 CD 18 8B F5 8n.|.u..........
00000030: 83 C6 10 49 74 19 38 2C - 74 F6 A0 B5 07 B4 07 8B ...It.8,t.......
00000040: F0 AC 3C 00 74 FC BB 07 - 00 B4 0E CD 10 EB F2 88 ..<.t...........
00000050: 4E 10 E8 46 00 73 2A FE - 46 10 80 7E 04 0B 74 0B N..F.s*.F..~..t.
00000060: 80 7E 04 0C 74 05 A0 B6 - 07 75 D2 80 46 02 06 83 .~..t....u..F...
00000070: 46 08 06 83 56 0A 00 E8 - 21 00 73 05 A0 B6 07 EB F...V...!.s.....
00000080: BC 81 3E FE 7D 55 AA 74 - 0B 80 7E 10 00 74 C8 A0 ..>.}U.t..~..t..
00000090: B7 07 EB A9 8B FC 1E 57 - 8B F5 CB BF 05 00 8A 56 .......W.......V
000000A0: 00 B4 08 CD 13 72 23 8A - C1 24 3F 98 8A DE 8A FC .....r#..$?.....
000000B0: 43 F7 E3 8B D1 86 D6 B1 - 06 D2 EE 42 F7 E2 39 56 C..........B..9V
000000C0: 0A 77 23 72 05 39 46 08 - 73 1C B8 01 02 BB 00 7C .w#r.9F.s......|
000000D0: 8B 4E 02 8B 56 00 CD 13 - 73 51 4F 74 4E 32 E4 8A .N..V...sQOtN2..
000000E0: 56 00 CD 13 EB E4 8A 56 - 00 60 BB AA 55 B4 41 CD V......V.`..U.A.
000000F0: 13 72 36 81 FB 55 AA 75 - 30 F6 C1 01 74 2B 61 60 .r6..U.u0...t+a`
00000100: 6A 00 6A 00 FF 76 0A FF - 76 08 6A 00 68 00 7C 6A j.j..v..v.j.h.|j
00000110: 01 6A 10 B4 42 8B F4 CD - 13 61 61 73 0E 4F 74 0B .j..B....aas.Ot.
00000120: 32 E4 8A 56 00 CD 13 EB - D6 61 F9 C3 49 6E 76 61 2..V.....a..Inva
00000130: 6C 69 64 20 70 61 72 74 - 69 74 69 6F 6E 20 74 61 lid partition ta
00000140: 62 6C 65 00 45 72 72 6F - 72 20 6C 6F 61 64 69 6E ble.Error loadin
00000150: 67 20 6F 70 65 72 61 74 - 69 6E 67 20 73 79 73 74 g operating syst
00000160: 65 6D 00 4D 69 73 73 69 - 6E 67 20 6F 70 65 72 61 em.Missing opera
00000170: 74 69 6E 67 20 73 79 73 - 74 65 6D 00 00 00 00 00 ting system.....
00000180: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000190: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000001A0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000001B0: 00 00 00 00 00 2C 44 63 - 32 31 37 31 35 0C 80 01 .....,Dc21715...
000001C0: 01 00 07 FE 7F 7D 3F 00 - 00 00 BF A3 5D 00 00 00 ....}?.....]...
000001D0: 41 7E 06 FE BF 62 FE A3 - 5D 00 A5 22 38 00 00 00 A~...b..].."8...
000001E0: 81 63 0B FE FF 7A A3 C6 - 95 00 18 A3 44 00 00 00 .c...z......D...
000001F0: C1 7B 05 FE FF FF BB 69 - DA 00 E2 48 D4 00 55 AA .{.....i...H..U.