引導扇區程式是位于啟動盤最前面的一個扇區中的一段小程式,其大小不超過512位元組即一個扇區的長度,也稱之為引導記錄。
引導記錄負責從PCBIOS的啟動代碼中接管PC的控制權,為加載特定的作業系統做準備。是以每種作業系統的引導記錄都是特定的
一個完整硬碟的資料應該包括五部分:MBR,DBR,FAT,DIR區和DATA區。其中隻有主引導扇區是唯一的,其它的随你的分區數的增加而增加。
主引導扇區位于整個硬碟的0磁道0柱面1扇區,包括硬碟主引導記錄MBR(Main Boot Record)和分區表DPT(Disk Partition Table)。其中主引導記錄的作用就是檢查分區表是否正确以及确定哪個分區為引導分區,并在程式結束時把該分區的啟動程式(也就是作業系統引導扇區)調入記憶體加以執行。
硬碟主引導扇區是一個敏感的區域, 它的安全與否直接決定硬碟是否能夠正常使用。 深入認識和靈活使用硬碟主引導扇區将有助于你的系統維護和許多特殊工作完成。
一、與DOS 引導扇區的差別
對于DOS系統來說, 有兩種不同的引導扇區,即DOS 引導扇區和硬碟主引導扇區。 DOS 引導扇區存在于軟碟的第一邏輯扇區或硬碟DOS分區的第一邏輯扇區,是用FORMAT指令對磁盤格式化時産生的, 是引導DOS 系統或正确使用磁盤的必要條件,在DOS下可用DEBUG友善地讀出:
C>DEBUG
-L 100 2 0 1
;讀C槽0扇區到記憶體目前段的100H處
-D ;顯示DOS 引導扇區内容
硬碟主引導扇區則指的是硬碟的實體位址0 面0 道1 扇區,是用FDISK 進行硬碟分區時産生的, 它屬于整個硬碟而不屬于某個獨立的DOS 分區, 是硬碟正确引導和使用的必要條件。由于它不在DOS分區範圍之内,是以無法用上述方法讀出, 隻有用相關的彙程式設計式代碼讀出:
-A
XXXX:0100 MOV AX,0201H ;指定扇區數
XXXX:0103 MOV BX,0800H ;指定記憶體位址
XXXX:0106 MOV CX,0001H ;指定磁道和扇區号
XXXX:0109 MOV DX,0080H ;指定磁頭和驅動器号
XXXX:010C INT 13H ;讀磁盤操作
XXXX:010E INT 3-d800 ;顯示讀出内容
二、扇區結構
硬碟主引導扇區占據一個扇區,共512(200H)個位元組,具體結構如下:
1.硬碟主引導程式,位于該扇區的0-1BDH處;
2.硬碟分區表,位于1BEH-1FDH處,每個分區表占用16個位元組,共4個分區表,16個位元組各位元組意義如下:
0:自舉标志,80H為可引導分區,00為不可引導分區;
1~3:本分區在硬碟上的開始實體位址;
4:分區類型,其中1表示為12位FAT表的基本DOS分區;4為16位FAT表的基本DOS分區;5為擴充DOS 分區;6為大于32M的DOS分區;其它為非DOS分區。
5~7:本分區的結束位址;
8~11:該分區之前的扇區數,即此分區第一扇區的絕對扇區号;
12~15:該分區占用的總扇區數。
3.引導扇區的有效标志,位于1FEH-1FFH處,固定值為AA55H。
三、硬碟主引導扇區的作用
硬碟主引導扇區在各個DOS版本下其内容基本一緻,主要完成的任務是:
1.存放硬碟分區表,這是硬碟正确讀寫的關鍵資料。
2.檢查硬碟分區的正确性,要求隻能且必須存在一個活動分區。
3.确定活動分區号,并讀出相應作業系統的引導記錄。
4.檢查作業系統引導記錄的正确性, DOS引導扇區末尾也存在着一個AA55H标志,供引導程式識别。
5.釋放引導權給相應的作業系統。例如,當确認DOS 作業系統引導記錄存在時, 則調出DOS引導程式并執行。
另外,當它發現引導故障時将給出部分提示資訊,如:
“Invalid partition table”表示硬碟分區表錯誤, 沒有或存在兩個以上活動分區;
“Error loading operating system”表示讀DOS引導記錄時出錯;
“Missing operating system”表示 DOS引導記錄無有效标志AA55H。
四、硬碟主引導扇區的應用
正是硬碟主引導扇區直接決定硬碟的安全性, 是以利用它可以完成很多特殊的功能操作, 簡單列舉如下:
1.清除硬碟引導功能。
由于硬碟引導必須使用引導程式, 并檢測活動分區的正确性, 是以人為的修改或破壞引導程式部分, 或者清除活動分區引導标志, 都将使硬碟無法啟動。
2.加密整個硬碟。
硬碟主引導扇區末尾的扇區有效标志AA55H是系統承認硬碟的前提,是以可以采取清除名修改此标志位達到加密硬碟的目的, 即使從A 驅引導系統也無法對硬碟進行操作, 恢複AA55H即可解密硬碟。
3.加密單個硬碟分區。
硬碟單個分區的加密可采取修改分區類型的方法,比如把擴充DOS 分區的類型标志 05H改為FFH,則DOS 認為此分區為非DOS分區,無法對其進行通路, 包括此分區中的所有邏輯盤。當然修改或清除某一分區表的所有資料同樣具有加密單個分區的作用, 但操作繁瑣并且具有危險性。
4.加入硬碟啟動密碼識别。
通過修改硬碟的主引導程式, 在引導DOS 作業系統之前,加入一段密碼識别程式段,如密碼正确則正常引導系統,否則拒絕引導,達到密碼識别的目的。
5.先于DOS 駐留記憶體程式。
在主引導程式中安裝某些中斷服務程式,如時鐘中斷等,通過對INT 21H或其它DOS關鍵資料的監視,完成病毒的實時檢測功能,因為此方法在引導DOS系統之前完成,是以其監視效果非常可靠。
6.實作同一硬碟多個作業系統的選擇啟動。
硬碟可以分成4個獨立的分區,裝入4個不同的作業系統,通過特殊的方法可以共享多個DOS版本,但各作業系統或各DOS版本間的切換是一件非常麻煩的事,通過修改硬碟主引導程式加入按鍵識别過程,可實作四個分區的自由選擇引導。
7.實作硬碟主引導扇區或DOS引導扇區的自我修複。
如果在硬碟其它空閑扇區保留一份完好的主引導扇區内容,而在主引導程式中每次啟動前進行主引導扇區的正确性檢查工作,當發現異常時,即調入原來完好的主引導扇區内容,就可以及時發現和清除病毒,對于系統有很好的保護作用