主開機記錄(Master Boot Record, MBR)位於硬碟第 0 柱面、第 0 磁頭、第 1 扇區(LBA 0),大小 512 位元組。BIOS POST 完成後,將其載入記憶體 0000:7C00h 並跳轉執行。MBR 責任:掃描分區表、尋找啟動分區、讀取該分區的啟動扇區(VBR)到 7C00h 並轉移控制權。
0000:7C00 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3...|.{P.P...|
0000:7C10 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ...PW.........
0000:7C20 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B 8,|.u.........
0000:7C30 EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC ....It.8,t..N.
0000:7C40 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 <.t........F%
0000:7C50 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 ..F.4.<.t.4.<.t
0000:7C60 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 :.u+@.F%.u$.UP.
0000:7C70 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 A..Xr...U.u...t
0000:7C80 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF ....V$.....f..
0000:7C90 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E .......3.....N
0000:7CA0 25 03 4E 02 CD 13 72 29 BE 46 07 81 3E FE 7D 55 %.N..r).F..>.}U
0000:7CB0 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 27 07 EB .tZ......u..'.
0000:7CC0 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB ...R..F..V...Z.
0000:7CD0 D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 00 00 00 00 .Ot.3.........
0000:7CE0 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 V3.VVRP.SQ..V..
0000:7CF0 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r
0000:7D00 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 49 .@u.B......^..tI
0000:7D10 6E 76 61 6C 69 64 20 70 61 72 74 69 74 69 6F 6E nvalid partition
0000:7D20 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 table.Error loa
0000:7D30 64 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 ding operating s
0000:7D40 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 ystem.Missing op
0000:7D50 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 erating system..
0000:7D5E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000:7D6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000:7D7E 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 ....{.W.uK......
0000:7D8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000:7D9E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000:7DAE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 ................
0000:7DBE 01 00 0B 7F 7F C8 3F 00 00 00 41 3B 38 00 00 00 ....H?...A;8...
0000:7DCE 41 C9 05 7F FF 13 80 3B 38 00 80 BA 28 00 00 00 A.....;8...(...
0000:7DDE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000:7DEE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U.
此 36 位元組區域預留給多語言版本的錯誤訊息(如中文版「無效分區表」、「載入作業系統失敗」等)。但 BIOS 此時仍在實模式,未載入中文字型,若直接顯示中文會變亂碼。這反映早期微軟設計的疏漏——同樣問題也出現在 VxD 載入階段的錯誤訊息顯示。
位址 7D83h 的字節 CB 對應指令 RETF(遠程返回)。此處返回到 0000:7C00h,即已載入的啟動扇區(VBR)。若要在 MBR 植入自定義代碼,必須避開此指令及其後續關鍵資料區。
約 50 位元組的零填充區,可用於植入自定義啟動代碼(如 Bootkit、多重啟動管理器)。
每項 16 位元組,共 64 位元組,結構如下:
| 偏移 | 大小 | 說明 |
|---|---|---|
| 00h | 1 Byte | 啟動指示符(80h=啟動中,00h=非啟動) |
| 01h | 1 Byte | 起始磁頭 |
| 02h | 1 Byte | 起始扇區(bit 0-5)+ 柱面高 2 位(bit 6-7) |
| 03h | 1 Byte | 起始柱面低 8 位 |
| 04h | 1 Byte | 系統 ID(0Bh/0Ch/0Eh=FAT32 LBA,07h=NTFS,83h=Linux 等) |
| 05h | 1 Byte | 結束磁頭 |
| 06h | 1 Byte | 結束扇區/柱面(編碼同起始) |
| 07h | 1 Byte | 結束柱面 |
| 08h | 4 Bytes | 相對起始扇區(LBA) |
| 0Ch | 4 Bytes | 分區總扇區數 |
範例中第一項(7DBEh):啟動中、系統 ID=0Bh (FAT32)、相對起始 LBA=3Fh、總扇區數=383B41h。
55 AA(小端序儲存為 AA 55)。BIOS 檢查此標誌決定該扇區是否為有效 MBR,無效則不載入執行。
理解 MBR 結構與代碼流程,是開發開機管理工具、分析 Bootkit、進行資料救援的基礎。本文提供的註解版十六進位碼可作為進一步逆向工程的參考地圖。