![]() |
學(xué)校地址:湖南省 長沙市 雨花區(qū) 車站南路紅花坡路口 |
![]() |
學(xué)校地址:湖南省 長沙市 雨花區(qū) 車站南路紅花坡路口 |
很多朋友對于,硬盤的主引導(dǎo)扇區(qū)里的MBR(Main Boot Record)和DPT(Disk Partition Table)的區(qū)別有些分不太清。于是我想把它寫個簡短的介紹,希望能對這些朋友有點幫助。
引導(dǎo)扇區(qū)在每個分區(qū)里都存在,但是我們常說的*主引導(dǎo)扇區(qū)*是硬盤的第一物理扇區(qū)。它由兩個部分組成:即主引導(dǎo)記錄MBR和硬盤分區(qū)表DPT。在總共512字節(jié)的主引導(dǎo)分區(qū)里其中MBR占446個字節(jié)(偏移0--偏移1BDH),DPT占64個字節(jié)(偏移1BEH--偏移1FDH), 后兩個字節(jié)“55,AA”(偏移1FEH偏移1FFH)是分區(qū)的結(jié)束標(biāo)志。大致的結(jié)構(gòu)如下圖: 圖1
圖一:主引導(dǎo)扇區(qū)結(jié)構(gòu)圖
主引導(dǎo)記錄中含了硬盤的一系列參數(shù)和一段引導(dǎo)程序。引導(dǎo)程序主要是用來在系統(tǒng)硬件自檢完后引導(dǎo)具有激活標(biāo)志的分區(qū)上的操作系統(tǒng)。它執(zhí)行到 后的是一條JMP指令跳到操作系統(tǒng)的引導(dǎo)程序去。這里往往是引導(dǎo)型病毒的注入點,也是各種多系統(tǒng)引導(dǎo)程序的注入點。但是由于引導(dǎo)程序本身完成的功能比較簡單,所以我們可以完全地判斷該引導(dǎo)程序的合法性(看JMP指令的合法性),因而也易于修復(fù)。象命令fdisk/mbr可以修復(fù)MBR和KV300這類軟件可以查殺任意類型的引導(dǎo)型病毒,就是這個原因。
往下來是硬盤的分區(qū)表,由4個16字節(jié)的分區(qū)信息表組成。每個信息表的結(jié)構(gòu)如下:
偏移 長度 所表達(dá)的意義
0 字節(jié) 分區(qū)狀態(tài): 如0--非活動分區(qū)
80-- 活動分區(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ū)起始絕對分區(qū)
C 雙字 該分區(qū)扇區(qū)數(shù)
后的兩個標(biāo)志“55 AA”是分區(qū)表的結(jié)束標(biāo)志,如果這兩個標(biāo)志被修改(有些病毒就會修改這兩個標(biāo)志),則系統(tǒng)引導(dǎo)時將報告找不到有效的分區(qū)表。
由上面的所列出的結(jié)構(gòu)可以大致地了解主引導(dǎo)扇區(qū)的結(jié)構(gòu)和用途。下面,有一些關(guān)于主引導(dǎo)扇區(qū)的常見問題:
Q1、fdisk/mbr 會不會把硬盤的分區(qū)表破壞呀?
A: 從上面的土一我們可以看到fdisk/mbr是不會影響到DPT的。Fdisk/
mbr只是把主引導(dǎo)分區(qū)里的MBR部分重新寫過,而不會對DPT有任何破壞。
Q2、在Linux里有一種方法可以恢復(fù)MBR是用如下的命令:
dd if=/boot/boot.NNNN of=/dev/had bs=446 count=1
其中bs(buffer size)是指重寫的字節(jié)數(shù)。為什么不是512
呢?主引導(dǎo)扇區(qū)是一個扇區(qū)(512字節(jié)呀)?
A: 答案是因為我們用上面的命令是為了修復(fù)可能被病毒修改了的主引導(dǎo)記
錄MBR,或者想把LILO卸載掉,而不是恢復(fù)整個主引導(dǎo)扇區(qū)。所以我們
只把主引導(dǎo)扇區(qū)的備份文件boot.NNNN的前446個字節(jié)重寫入主引導(dǎo)扇區(qū)。
Boot.NNNN是我們在安裝Linux之前整個主引導(dǎo)分區(qū)的備份。如果我們把
512個字節(jié)全部寫入主引導(dǎo)扇區(qū)就可能會把安裝了Linux后改變了的硬盤
DPT表也破壞掉。那就壞事了。 :-)
linuxrat補充一些:=)…
MBR- Main/Master Boot Record, 有些書上是寫成Master的.我認(rèn)為可以分成三個部分吧, MBR+DPT+MagicNumber(446+64+2=512)這也就是為什么進行MBR備份的時候要指定bs=512 或者 bs=1k, count=1的原因.然后恢復(fù)時經(jīng)常看到HOWTO里面是bs=446 count=1. 這個446就是指令部分的恢復(fù)。
|
關(guān)于收錄1 |
關(guān)于收錄2 |
網(wǎng)站幫助 |
廣告合作 |
下載聲明 |
友情連接 |
網(wǎng)站地圖 |
| 共有文章: 12516 篇
今日新文: 0 篇
當(dāng)前在線: