| 發(fā)信人: NightOwl (Owlet), 信區(qū): linux 標(biāo) 題: 主引導(dǎo)扇區(qū)釋疑 發(fā)信站: BBS 水木清華站 (Sat Nov 20 06:50:43 1999) 主引導(dǎo)扇區(qū)釋疑 關(guān)鍵詞:引導(dǎo)扇區(qū)、主引導(dǎo)扇區(qū)、主引導(dǎo)記錄、硬盤(pán)分區(qū)表。 NightOwl 1999.11 ------------------------------------------------------------------- 本文尚未完備,如有好的意見(jiàn)和建議歡迎與我聯(lián)系. ------------------------------------------------------------------- 很多朋友對(duì)于硬盤(pán)的主引導(dǎo)扇區(qū)里的MBR(Main Boot Record)和DPT (Disk Partition Table)的區(qū)別有些分不太清。于是我想把它寫(xiě)個(gè)簡(jiǎn)短的 介紹,希望能對(duì)這些朋友有點(diǎn)幫助。 引導(dǎo)扇區(qū)在每個(gè)分區(qū)里都存在,但是我們常說(shuō)的*主引導(dǎo)扇區(qū)*是硬盤(pán)的 第一物理扇區(qū)。它由兩個(gè)部分組成:即主引導(dǎo)記錄MBR和硬盤(pán)分區(qū)表DPT。在 總共512字節(jié)的主引導(dǎo)分區(qū)里其中MBR占446個(gè)字節(jié)(偏移0--偏移1BDH),DPT 占64個(gè)字節(jié)(偏移1BEH--偏移1FDH),最后兩個(gè)字節(jié)“55,AA”(偏移1FEH 偏移1FFH)是分區(qū)的結(jié)束標(biāo)志。大致的結(jié)構(gòu)如下圖: 0000 |------------------------------------------------| | | | | | Main Boot Record | | | | | | 主引導(dǎo)記錄(446字節(jié)) | | | | | | | 01BD | | 01BE |------------------------------------------------| | | 01CD | 分區(qū)信息 1(16字節(jié)) | 01CE |------------------------------------------------| | | 01DD | 分區(qū)信息 2(16字節(jié)) | 01DE |------------------------------------------------| | | 01ED | 分區(qū)信息 3(16字節(jié)) | 01EE |------------------------------------------------| | | 01FD | 分區(qū)信息 4(16字節(jié)) | |------------------------------------------------| | 01FE | 01FF | | 55 | AA | |------------------------------------------------| 圖一:主引導(dǎo)扇區(qū)結(jié)構(gòu)圖 主引導(dǎo)記錄中包含了硬盤(pán)的一系列參數(shù)和一段引導(dǎo)程序。引導(dǎo)程序主要 是用來(lái)在系統(tǒng)硬件自檢完后引導(dǎo)具有激活標(biāo)志的分區(qū)上的操作系統(tǒng)。它執(zhí)行 到最后的是一條JMP指令跳到操作系統(tǒng)的引導(dǎo)程序去。這里往往是引導(dǎo)型病 毒的注入點(diǎn),也是各種多系統(tǒng)引導(dǎo)程序的注入點(diǎn)。但是由于引導(dǎo)程序本身完 成的功能比較簡(jiǎn)單,所以我們可以完全地判斷該引導(dǎo)程序的合法性(看JMP 指令的合法性),因而也易于修復(fù)。象命令fdisk/mbr可以修復(fù)MBR和KV300 這類軟件可以查殺任意類型的引導(dǎo)型病毒,就是這個(gè)原因。 往下來(lái)是硬盤(pán)的分區(qū)表,由4個(gè)16字節(jié)的分區(qū)信息表組成。每個(gè)信息表的 結(jié)構(gòu)如下: 偏移 長(zhǎng)度 所表達(dá)的意義 0 字節(jié) 分區(qū)狀態(tài): 如0-->非活動(dòng)分區(qū) 80--> 活動(dòng)分區(qū) 1 字節(jié) 該分區(qū)起始頭(HEAD) 2 字 該分區(qū)起始扇區(qū)和起始柱面 4 字節(jié) 該分區(qū)類型:如82--> Linux Native分區(qū) 83--> Linux Swap 分區(qū) 5 字節(jié) 該分區(qū)終止頭(HEAD) 6 字 該分區(qū)終止扇區(qū)和終止柱面 8 雙字 該分區(qū)起始絕對(duì)分區(qū) C 雙字 該分區(qū)扇區(qū)數(shù) 最后的兩個(gè)標(biāo)志“55 AA”是分區(qū)表的結(jié)束標(biāo)志,如果這兩個(gè)標(biāo)志被修改 (有些病毒就會(huì)修改這兩個(gè)標(biāo)志),則系統(tǒng)引導(dǎo)時(shí)將報(bào)告找不到有效的分區(qū)表。 由上面的所列出的結(jié)構(gòu)可以大致地了解主引導(dǎo)扇區(qū)的結(jié)構(gòu)和用途。下面, 有一些關(guān)于主引導(dǎo)扇區(qū)的常見(jiàn)問(wèn)題: Q1、fdisk/mbr 會(huì)不會(huì)把硬盤(pán)的分區(qū)表破壞呀? A: 從上面的土一我們可以看到fdisk/mbr是不會(huì)影響到DPT的。fdisk/ mbr只是把主引導(dǎo)分區(qū)里的MBR部分重新寫(xiě)過(guò),而不會(huì)對(duì)DPT有任何破壞。 Q2、在Linux里有一種方法可以恢復(fù)MBR是用如下的命令: dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1 其中bs(buffer size)是指重寫(xiě)的字節(jié)數(shù)。為什么不是512 呢?主引導(dǎo)扇區(qū)是一個(gè)扇區(qū)(512字節(jié)呀)? A: 答案是因?yàn)槲覀冇蒙厦娴拿钍菫榱诵迯?fù)可能被病毒修改了的主引導(dǎo)記 錄MBR,或者想把LILO卸載掉,而不是恢復(fù)整個(gè)主引導(dǎo)扇區(qū)。所以我們 只把主引導(dǎo)扇區(qū)的備份文件boot.NNNN的前446個(gè)字節(jié)重寫(xiě)入主引導(dǎo)扇區(qū)。 boot.NNNN是我們?cè)诎惭bLinux之前整個(gè)主引導(dǎo)分區(qū)的備份。如果我們把 512個(gè)字節(jié)全部寫(xiě)入主引導(dǎo)扇區(qū)就可能會(huì)把安裝了Linux后改變了的硬盤(pán) DPT表也破壞掉。那就壞事了。 :-) linuxrat補(bǔ)充一些:=)... MBR-> Main/Master Boot Record, 有些書(shū)上是寫(xiě)成Master的. 我認(rèn)為可以分成三個(gè)部分吧, MBR+DPT+MagicNumber(446+64+2=512) 這也就是為什么進(jìn)行MBR備份的時(shí)候要指定bs=512 或者 bs=1k, count=1的原因. 然后恢復(fù)時(shí)經(jīng)常看到HOWTO里面是bs=446 count=1. 這個(gè)446就是指令部分的恢復(fù), 不是DPT的恢復(fù). 往往MBR里面的第一個(gè)指令是cli... 研究起來(lái)是比較有意思的. 有哪位大拿給大家把這446字節(jié)的指令給大家說(shuō)一說(shuō)吧. //bow, come on... |
新聞熱點(diǎn)
疑難解答
圖片精選