深入瞭解硬碟分區表與邏輯鎖

來源:互聯網
上載者:User

    最近幫朋友裝系統時涉及到分區表的問題,雖然以前曾多次用KV3000手工推算更改分區表解決過很多問題,但現在這些基礎的東西卻記得不是很清楚了,所以網上找了幾篇文章,保留到這裡以供後用。

    本文原文地址:http://news.pcnow.com.cn/2005/01/19/14409.shtml

-------------------------------------------------------------------------------------------------------

   相信聽說過硬碟MBR、硬碟分區表、DBR的朋友一定都不少。可是,你清楚它們分別起什麼作用嗎?它們的具體位置又在哪裡呢?硬碟上的MBR只有一份嗎?什麼是硬碟邏輯鎖?如何製造和破解它呢??本文轉載自家緣網,文中內容不代表本站觀點,僅供參考。

一、必備基礎知識:

● 有關扇區編號的基本知識:

    介紹一下有關硬碟扇區編號規則的3個易混淆的術語“物理扇區編號“、“絕對扇區編號“和“邏輯扇區編號“。

    我們都知道硬碟扇區的定位有兩種辦法:

    1. 直接按柱面、磁頭、扇區3者的組合來定位(按這種編號方式得到的扇區編號稱為物理扇區編號);

    2. 按扇區編號來定位(又分“絕對扇區編號“和“邏輯扇區編號“兩種)。

    這兩種定位辦法的換算關係如:(設圖中所示硬碟每道扇區數均為63)

   

 

      ,由於目前大多數硬碟採用的是一種“垂直資料分割結構“,故左圖一磁頭數為2、碟片數為1的硬碟,圖中0磁頭所對扇區的表示方法就有2種,即:0柱面0磁頭1扇區=絕對0扇區,而1磁頭所對扇區的表示方法也有2種,即:1柱面0磁頭1扇區=絕對63扇區。如果是如右圖所示磁頭數為4、碟片數為2的硬碟,那麼則順著垂直於碟片的箭頭線方向進行的絕對扇區的編號。

    上面,我們說了物理扇區、絕對扇區的編號方式,而邏輯扇區編號由於是作業系統採用的扇區編號方式,而作業系統只能讀取分區內部的資料內容,故邏輯扇區是從各分區內的第一個扇區開始編號,如我們下文對mbr的說明可以知道:mbr這個扇區所在硬碟磁軌是不屬於分區範圍內的,緊接著它後面的才是分區的內容,因此一般來說絕對63扇區= c:分區邏輯1扇區。

    好,讓我們列個表總結一下3種編號方式的不同:

   

      需要說明的是:本文假設所使用的硬碟每道扇區數都為63。各位手頭上所使用的硬碟具體的每道扇區數則可以在BIOS設定內有關硬碟參數的設定內查到。

 

● 有關MBR、分區表、DBR的基本知識:

☆ 硬碟MBR(硬碟主引導記錄)及硬碟分區表介紹

    硬碟MBR就是我們經常說的“硬碟主引導記錄”,簡單地說,它是由FDISK等磁碟分割命令寫在硬碟

    絕對0扇區的一段資料,它由主引導程式、硬碟分區表及扇區結束標誌字(55AA)這3個部分組成,如下表:

   

     這3部分的大小加起來正好是512位元組=1個扇區(硬碟每扇區固定為512個位元組),因此,人們又形象地把MBR稱為“硬碟主開機磁區”。

    這個扇區所在硬碟磁軌上的其它扇區一般均空出,且這個扇區所在硬碟磁軌是不屬於分區範圍內的,緊接著它後面的才是分區的內容(也就是說假如該盤每磁軌扇區數為63,那麼從絕對63扇區開始才是分區的內容)。

 

☆ 硬碟DBR(硬碟分區引導記錄)介紹

    DBR是各個分區自己的引導記錄,又稱“分區引導記錄”,它是由FORMAT進階格式化命令寫在各個分區開始處第一個扇區(比如說:主要磁碟分割C:從1磁頭0柱面1扇區=邏輯1扇區=絕對63扇區)開始,那麼C:區邏輯1扇區就是DBR所存放的位置)的一段資料.這段資料主要由以下幾個部分組成:

    1.佔3個位元組的跳轉指令;

    2.佔8個位元組的作業系統廠商標識及版本號碼;

    3. 佔19個位元組的分區參數表(又稱BPB),裡面存放著對該分區進行讀寫操作時所必備的參數(如該分區內每扇區所包含的位元組數、每簇扇區數、每個磁軌的扇區數、該分區FAT份數等);

    4.佔480個位元組的DOS引導代碼,它負責把DOS引導檔案IO.SYS、MSDOS.SYS裝入記憶體;

    5.佔2個位元組的結束標誌字”55AA”.

    以上5個部分也正好佔1個扇區;和MBR有所不同的是:DBR扇區後面一般就緊接著存放該分區的FAT(檔案配置表,共2份)。

    綜上所述,我們知道硬碟MBR負責總管硬碟分區,只有分區工具才能對它進行讀寫(如FDISK);而DBR則負責管理某個具體的分區,它是用作業系統的進階格式化命令(如FORMAT)來寫入硬碟的。在系統啟動時,最先讀取的硬碟資訊是MBR,然後由MBR內的主引導程式讀出DBR,最後才由DBR內的DOS引導代碼讀取作業系統的引導程式,其中任何一個環節出了問題,作業系統都無法正常啟動成功,如果是MBR部分出了問題,即使只是”55AA”標誌字丟失或被改為其他值,通常都會出現“無效分區表“、邏輯盤丟失、啟動死機等現象;而如果是DBR部分出了問題,通常會出現“未格式化的分區”的錯誤提示。

☆ 基本知識的延伸

    實際上,在每一個分區的前面,都有一份MBR,在每一個分區的開始處,都有一份DBR。通常我們把存放在絕對0扇區的那份MBR稱為主MBR或C分區MBR。這樣我們就能畫出如下的MBR、DBR的存放位置表:市面上很多分區表儲存軟體(如KV3000的分區表儲存功能)實際上儲存的就是表中各個分區前MBR區的資料。

       

● 近距離觀察MBR、DBR:

    口說無憑,眼見為實。還是讓我們用工具來具體觀察一下吧:)我們要觀察的盤全部分作DOS區,在DOS區內共分C:、D:、E:三個盤。

1、觀察主MBR:

    首先得準備工具,這裡我們推薦DISKEDIT相容FAT32的版本。該程式啟動後介面如下:

       

  選“PHYSICAL DEVICE”按OK進入。這時候,DISKEDIT首先顯示的就是硬碟絕對0扇區的MBR資訊,如:   

        

 

    我們可以看到MBR的0~01BD位元組為主引導程式;01BE~01FD這64位元組為硬碟分區表資訊,每項分區表佔16位元組;最後是結束標誌字55AA。下面我們詳細分析一下分區表各個位元組所表示的意思:

 

    注1:此處第一個位元組存放磁頭號(01、0B),第二位元組低六位存放扇區號01=00(00 0001)=00(01)、FE=11(11 1110)=11(3F),第二位元組高2位+第三位元組為柱面號00(00)=000、11(7F)=37F。

    還需要說明的是01BF—01C1這3個位元組在分區表裡面,視後面01C2位元組所示分區類型的不同而代表不同的含義。如果01C2是代表主要磁碟分割的01、04、06或0B,那麼01BF—01C1所表示的就是該分區DBR所在的位置,如果01C2是代表擴充分區的05或0F,那麼01BF—01C1所表示的就是該分區MBR所在的位置。

    看完上面我們給出的第一份MBR,不知道大家注意到沒有,在硬碟分區表資料區裡面只有兩個分區表項,而我們的盤明明是分成C:、D:、E:三個盤的,怎麼回事呢?再仔細觀察一下分區表,我們還會發現在這份MBR裡,第一個分區表項(01BE—01CD)描述的是C:盤的資訊,第二個分區表項(01CE—01DD)描述的是整個擴充分區的資訊,它把剩下的D:、E:全部包含在裡面了!未免太籠統了點吧。那麼,如果我們要查看D:、E:各自詳細的分區情況怎麼辦呢?參考上一段我們給出的01BF—01C1這3個位元組所代表的不同含義,我們發現,第二個分區表項的分區類型符為0F,也就是說是擴充分區,那麼分區類型符前面3個位元組所代表的應該是擴充分區MBR所在的位置。可見不光是全盤最前面的0磁頭0柱面1扇區有一份主MBR,擴充分區的最前面也有一份MBR!

    還是讓我們順著系統啟動的順序先到1磁頭 0柱面1扇區去看看主要磁碟分割DBR,然後再看擴充分區的MBR是什麼樣的吧!

 

2、觀察C分區DBR:

    在DISKEDIT介面輸入“ALT+S”,在出現的菜單內選“GOTO。。。”,如:

   

 

     接下來,按表1內01BF—01C1位元組所示的主要磁碟分割DBR位置,在出現的菜單內依次輸入DBR所在的柱面數(CYLINDER)=0,磁頭數(HEAD)=1,扇區數(SECTOR)=1,如:

                

 

     哈哈,第一份DBR的資料就調出來啦:)

   

 

3、觀察D分區MBR:

    按照表1擴充分區01CF—01D1位元組所示分區MBR位置,進入圖4的菜單內輸入281(119h)柱面、0磁頭 、1扇區;D分區MBR就出來了:)

   

    哈哈,正如大家所看到的,這第二份MBR其實只是一個分區表而已。同第一份MBR一樣,也只是描述了當前主盤(D:盤)和剩餘空間的分區狀況。按照和第3步中同樣的辦法,我們同樣能夠定位出D:盤的DBR和E分區MBR(最後一份MBR)所在的位置並用DISKEDIT進行觀察。

    通過觀察,我們證實了每一個硬碟分區,都有各自的MBR和DBR;作業系統啟動時,不論是從硬碟還是從磁碟片啟動,都需要先由BIOS讀絕對0扇區的主MBR,找到標誌為80的可引導分區,然後由MBR負責讀出該分區內的DBR,再由DBR負責讀出存在該分區的系統啟動程式(IO.SYS等),最後在DOS系統程式IO.SYS的指揮下遍曆所有的MBR和DBR,從而獲知完整的硬碟分區結構。使用FDISK分區時也需要進行同樣的過程。而IO.SYS遍曆所有的MBR和DBR的時候,是按照如下表的順序進行:

    

 

三、分區表知識實際應用

● 我是無聊的小鎖匠。。。

    看了這麼多圖表文字,讀者老爺們是不是煩了?那麼我們來折磨一下自己的硬碟,製作一個硬碟邏輯鎖玩玩如何:)

    觀察上面我們給出的遍曆流程表,參考一中關於01C2位元組的說明,如果我們在描述D分區MBR位置的01CF—01D1位元組處作點手腳,把這裡本來存放D:盤MBR位置的位元組改成00 01 00(就是C分區MBR所在的位置)那麼遍曆流程不就變成下表所示了嗎:

 

     哈哈,表面上看,應該這樣就可以做成一個邏輯鎖了吧。可是實際情況一定會讓你失望,98根本一點反應也沒有,居然給我一切正常!!

    哎,再試試動動其它歪腦筋好了。咦。。。總覺得01D2位元組表示D:盤分區類型的0F怪怪的,把它改成05看看!!哈哈,這下硬碟總算在出現98歡迎畫面的時候陷入上表所示的死迴圈了:)好,現在我們換磁碟片啟動看看。。。咦。。。怎麼出現一大堆E文後居然還能引導成功!

    天哪!這什麼破遊戲,一點也不好玩!!!走走,搓雷神去了,不玩了!嗯。。。如果把表示C:盤分區類型的01C2位元組的0B改成其它數會怎樣???把它改成0A吧!

    嘿嘿嘿,終於大功告成了,無論是磁碟片或者是硬碟啟動,統統給我死翹翹了:)下面就給出一種完美的硬碟邏輯鎖主MBR樣本:(圖中黃色字型的為改動的部分,只需要改區區4個位元組哦!)

  

 

    好了,我們來總結一下製作邏輯鎖的必要步驟吧!

    1. 先把C:盤MBR的01CF—01D1位元組處表示的D:盤MBR位置改成00 01 00;

    2. 然後把緊接著的表示D:盤分區類型的01D2位元組改成05;

    3. 最後改C:盤MBR中表示C:盤分區類型的01C2位元組,把它改成0A、04、03、02或者
00這5種位元組都可以。

    這樣一來,不論是從磁碟片或者硬碟用DOS7.0版本啟動,甚至加掛正常的可引導硬碟,都難逃死機的惡運了至於為什麼還要改兩個盤的分區類型,這個本鳥也還沒有完全想通。不過有一點可以肯定的是:即使不改分區類型,在使用FDISK時也是必死無疑的.

    哎呀,差點忘了說了,中了鎖怎麼解呢??

    別急,前面我們不是說到:”不論是從硬碟還是從磁碟片啟動,都需要在DOS系統程式IO.SYS的指揮下遍曆所有的MBR和DBR”嗎,既然如此不如在IO.SYS上動動腦筋好了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.