硬盤主引導扇區 = 硬盤主引導記錄(MBR)+ 硬盤分區表(DPT)
--------------------------------------------------------------
物理位置:0面0道1扇區(clindyer 0, side 0, sector 1)
大小: 512字節
其中:MBR 446字節(0000--01BD),DPT 64字節(01BE--01FD),結束標志2字節(55 AA)
功能:MBR通過檢查DPT分區信息引導系統跳轉至DBR;
讀取: 使用NORTON DISKEDIT, 在OBJECT菜單中選擇DRIVE——>PHYSICAL DISK-—HARD DISK,
然後, 在OBJECT菜單中選擇DISK PARTITION TABLE即可讀取, 並使用TOOLS菜單中的WRITE OBJECT TO 選項存入指定文件備份;
寫入: 使用NORTON DISKEDIT, 在OBJECT菜單中選擇DRIVE——>FLOOPY DISK, 選擇備份的DPT
文件, 然後使用TOOLS菜單中的WRITE OBJECT TO——>PHYSICAL SECTOR 選項寫入001
(clindyer 0, side 0, sector 1);
詳解:
000H--08AH MBR啟動程序(尋找開機分區)
08BH--0D9H MBR啟動字符串
0DAH--1BCH 保留("0")
1BEH--1FDH 硬盤分區表
1FEH--1FFH 結束標志(55AA)
活動分區主引導扇區(DBR)
--------------------------
物理位置:1面0道1扇區(clindyer 0, side 1, sector 1)
大小: FAT16 1扇區 512字節
FAT32 3扇區 1536字節
功能:包含機器CMOS等信息(0000--0059), 核對該信息並引導指定的系統文件, 如NTLDR等;
讀取: 使用NORTON DISKEDIT, 在OBJECT菜單中選擇DRIVE——>LOGICAL DISK-—DISK C,
然後, 在OBJECT菜單中選擇BOOT RECORD即可讀取, 並使用TOOLS菜單中的
WRITE OBJECT TO 選項存入指定文件備份;
寫入: 使用NORTON DISKEDIT, 在OBJECT菜單中選擇DRIVE——>FLOOPY DISK, 選擇備份的DBR
文件, 然後使用TOOLS菜單中的WRITE OBJECT TO——>PHYSICAL SECTOR 選項寫入011
(clindyer 0, side 1, sector 1);
詳解:
000H--002H 3 BYTE的跳轉指令(去啟動程序, 跳到03EH)
003H--03DH BIOS參數區
03EH--19DH DOS啟動程序
19EH--1E5H 開機字符串
1E6H--1FDH 文件名(IO.SYS, MSDOS.SYS)
1FEH--1FFH 結束標記(55AA)
硬盤分區表(DPT)
---------------------
偏移地址 字節數 含義分析
01BE 1 分區類型:00表示非活動分區:80表示活動分區;其他為無效分區。
01BF~01C1 3 *分區的起始地址(面/扇區/磁道),通常第一分區的起始地址開始
於1面0道1扇區,因此這三個字節應為010100
01C2 1 #分區的操作系統的類型。
01C3~01C5 3 *該分區的結束地址(面/扇/道)
01C6~01C9 4 該分區起始邏輯扇區
01CA~01CD 4 該分區占用的總扇區數
注釋: * 注意分區的起始地址(面/扇區/磁道)和結束地址(面/扇/道)中字節分配:
00000000 01000001 00010101
~~~~~~~~ ==^^^^^^ ========
~ 面(磁頭) 8 位
^ 扇區 6 位
= 磁道 10 位
# 分區的操作系統類型(文件格式標志碼)
4---DOS FAT1632M
7---NTFS(OS/2)
83---LINUX>64M
DPT 總共64字節(01BE--01FD), 如上所示每個分區占16個字節, 所以可以表示四個分區, 這也
就是為什麼一個磁盤的主分區和擴展分區之和總共只能有四個的原因.
邏輯驅動器
-----------
擴展分區的信息位於以上所示的硬盤分區表(DPT)中, 而邏輯驅動器的信息則位於擴展分區的
起始扇區, 即該分區的起始地址(面/扇區/磁道)所對應的扇區, 該扇區中的信息與硬盤主引導
扇區的區別是不包含MBR, 而16字節的分區信息則表示的是邏輯驅動器的起始和結束地址等.
所以, 在磁盤僅含有一個主分區, 一個擴展分區(包含多個邏輯驅動器)的情況下, 即使由於病毒
或其他原因導致硬盤主引導扇區的數據丟失(包括DPT), 也可以通過邏輯驅動器的數據來恢復整個硬盤.
例如: 以下是一個硬盤的分區情況.
道 面 扇 道 面 扇 起始扇(邏輯) 結束扇 總共扇區
MBR 0 0 1 - - - - - -
C 0 1 1 276 239 63 63 4,188,239 4,188,177
擴 277 0 1 554 239 63 4,188,240 8,391,599 4,203,360
D 277 1 1 554 239 63 4,188,303 8,391,599 4,203,297
如果主分區表損壞, 則可以通過手工查找擴展分區表中所包含的邏輯驅動器數據, 在本例中就是D盤所對應的數據, 然後將其起始扇(邏輯)減去63就是所對應的擴展分區的起始扇(邏輯), 將其起始地址(面/扇區/磁道)改為0面就是擴展分區的起始地址. 然後通過擴展分區就可以得到主分區C的信息, 然後就可以使用FDISK/MBR命令和手工填寫分區表恢復整個硬盤.
實際使用這種方法比較麻煩, 如果知道每個分區的大小, 則可以通過使用PQ MAGIC 5 將磁盤重新分區為原來大小(注意: 千萬不能應用, 我們只是通過它來獲得數據), 並查看INFO來獲得以上
數據, 記錄以後取消該分區操作, 然後使用NORTON DISK2000手工修改DPT表, 恢復整個硬盤.
該例所對應的分區表數據:
80 01
01 00 06 EF 7F 14 3F 00 00 00 11 E8 3F 00 00 00
41 15 05 EF BF 2A 50 E8 3F 00 60 23 40 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
擴展分區表數據:
00 01
41 15 07 EF BF 2A 8F E8 3F 00 21 23 40 00
注意: 邏輯起始扇區和總共分區數是左邊為低位, 如該例的擴展分區的起始地址為50 E8 3F 00轉換十進制時要先變為00 3F E8 50, 總共占用分區數60 23 40 00要先變為00 40 23 60, 同理當手工填寫該值時也要進行高低位轉換.
李家芳 2K.7.22 哈爾濱
------------------------------------------------------------------