摘要:手工恢復分區(qū)表是一種比較可靠的恢復方法,使用這一方法必須首先掌握硬盤分區(qū)的劃分策略、分區(qū)數(shù)據(jù)的記錄位置、分區(qū)數(shù)據(jù)的記錄格式、分區(qū)數(shù)據(jù)之間的相互關系以及分區(qū)表組的相關知識;其次要能夠使用WINHEX軟件,去處理訪問硬盤有關扇區(qū)的數(shù)據(jù),并根據(jù)處理結果來推導出丟失的分區(qū)信息,進而實現(xiàn)分區(qū)表的恢復。
關鍵詞:MBR;EBR;扇區(qū)數(shù);分區(qū)記錄項
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2009)24-6610-03
How to Restore the Partition Table by Hand
JIN Tian-xin
(Wuxi Nanyang Vocational and Technical College,Wuxi 214081,China)
Abstract: Hand to restore the partition table is a relatively reliable method to restore the use of this method must first master the strategy division of the hard disk partition, partition the data records of the location, area of the recording format of data, area data of the inter-relationship between as well as the partition table of the relevant knowledge group; WINHEX followed by the use of software to be able to deal with access to hard data on the sector, and in accordance with the results derived to deal with the loss of the partition information, and to achieve the restoration of the partition table.
Key words: MBR; EBR; fan area number; subarea record an item
操作系統(tǒng)在硬盤中讀寫數(shù)據(jù)的操作,是根據(jù)地址進行的。因而硬盤的可用存儲空間必須都有地址記錄。那么,硬盤中的地址是如何記錄的呢?從硬盤出現(xiàn)開始,即采用了劃分區(qū)塊的策略,將整個可用空間首先劃分為若干個分區(qū),再在分區(qū)內(nèi)進一步進行存儲單元的地址標識,為以后的數(shù)據(jù)讀寫提供一個基礎。分區(qū)表就是記錄地址信息的一組表項,是硬盤中極其關鍵的數(shù)據(jù),當分區(qū)表損壞時,硬盤空間的目錄就丟失了,也就無法再進行數(shù)據(jù)讀寫了。所以恢復分區(qū)表是挽回數(shù)據(jù)的重要步驟之一。進行分區(qū)表恢復有手動恢復和使用軟件自動恢復兩種方法,本文將就手動恢復的原理及過程進行分析。
下面讓我們先來了解一下硬盤的物理結構。在密封的金屬殼體中,包含一片或幾片表面鍍有磁性物質的盤片,盤片兩面安裝有磁頭以及相應的控制電路。硬盤工作時,盤片以設計轉速高速旋轉,設置在盤片表面的磁頭則在電路控制下徑向移動到指定位置然后進行讀寫操作。當系統(tǒng)向硬盤寫入數(shù)據(jù)時,磁頭中“寫數(shù)據(jù)”電流產(chǎn)生磁場使盤片表面磁性物質狀態(tài)發(fā)生改變,并在寫電流磁場消失后仍能保持,這樣數(shù)據(jù)就存儲下來了;當系統(tǒng)從硬盤中讀數(shù)據(jù)時,磁頭經(jīng)過盤片指定區(qū)域,盤片表面磁場使磁頭產(chǎn)生感應電流或使線圈阻抗產(chǎn)生變化,經(jīng)相關電路處理后還原成數(shù)據(jù)。
我們再來了解一下硬盤分區(qū)的邏輯結構。硬盤出廠前已進行過低級格式化,將空白的磁盤盤面劃分成若干個同心圓磁道(邏輯上的),再將每根磁道劃分為若干個扇區(qū),扇區(qū)是硬盤上最小存儲單元 。硬盤內(nèi)有若干盤片,每個盤片的兩個面都各有一個讀寫磁頭。如果有N個盤片。就有2N個面,對應2N個磁頭(Heads),從0、1、2開始編號,形成磁頭號;每個盤面的劃分規(guī)則通常是一樣的。這樣每個盤片上半徑R值相同的同心圓,在邏輯上形成了一個以電機主軸為軸的柱面(Cylinders),從外至里編號為0、1、2……形成柱面號;而每個磁道又被劃分為幾十個扇區(qū)(Sector),通常的容量是512字節(jié),并按照一定規(guī)則編號1、2、3……形成扇區(qū)號。至此,硬盤上已經(jīng)有了許多的扇區(qū),而且,每個扇區(qū)都有自己的位置標記,其表達形式是Cylinders×Heads×Sector,稱為絕對地址。但是,由于記錄地址的字節(jié)數(shù)有限,采用這樣的方法,標記容量最多只有8G的空間,過去硬盤容量較小,是能滿足使用要求的,但是隨著硬盤容量發(fā)展到10G、20G時,就無法滿足要求了。
目前,對扇區(qū)的標記定位采用邏輯塊地址的方法(也叫線性尋址方式),即LBA,是一個相對地址。它將每一個扇區(qū)重新編號,每一個位置不再用過去的由三個數(shù)字表示,而是用一個數(shù)字表示。舉例說明,住宅樓某號門中,一樓的三戶人家一般標記為101、102、103;二樓的標記為201、202、203;如果采用相對地址模式標記,則是101記1,102記2,103記3,201記4,202記5,203記6。采用這一方法,只用很少的字節(jié)就可以記錄一個扇區(qū),從而使分區(qū)的分配變得十分靈活,所能支持的尋址空間也大大增加,硬盤的最大標記容量可以達到2000G。
對硬盤進行分區(qū),也就是將眾多扇區(qū)分片,形成我們在操作系統(tǒng)中看得見的C盤、D盤、E盤等,以方便使用。分區(qū)表就是記錄這個分片信息的表項,操作系統(tǒng)能否安裝、數(shù)據(jù)能否讀寫都是以此為前提的。
分區(qū)表嚴格的說不是一個表,而是一組表,由零磁道的主分區(qū)表和各個后續(xù)分區(qū)的次分區(qū)表共同組成。若一個硬盤分四個區(qū),則分區(qū)表組構成如表1:
MBR是主引導記錄,包含主分區(qū)表,記錄主分區(qū)(C盤)的位置信息及擴展分區(qū)的位置信息;EBR,也叫做擴展MBR(Extended MBR),是余下分區(qū)(邏輯分區(qū))的引導記錄,包含所在邏輯分區(qū)的分區(qū)位置信息和其下一個邏輯分區(qū)的位置信息;EBR3的分區(qū)表中就只有F盤的分區(qū)信息,而沒有下一個分區(qū)的信息,至此硬盤中分區(qū)的地址就這樣形成一個“分區(qū)鏈表”, 通過這個分區(qū)鏈表,操作系統(tǒng)就可以識別到所有的分區(qū),并能夠訪問分區(qū)內(nèi)的每一個地址。
通常情況下EBR是不會被破壞的,或者破壞的幾率極低,倒是位于零磁道的主引導記錄MBR因為病毒攻擊、分區(qū)調(diào)整失敗、多系統(tǒng)引導菜單出現(xiàn)錯誤、安裝非MS操作系統(tǒng)等容易遭到損壞,造成“分區(qū)鏈表”第一項的丟失。所以,我們就是針對這一特點,利用各個EBR留存的信息,來恢復MBR中的分區(qū)表。
分區(qū)表是由分區(qū)工具建立的。第一分區(qū)表的存儲位置在整個硬盤的最前端,絕對地址Cylinders×Heads×Sector是0柱面/0磁頭/1扇區(qū),該磁道的后62個扇區(qū)不使用;后續(xù)分區(qū)表位于各個邏輯分區(qū)的最前端,其數(shù)據(jù)結構與第一分區(qū)表完全相同。
前面提到,每扇區(qū)的大小是512字節(jié),在這個空間中,前446字節(jié)是主引導代碼,后64個字節(jié)是分區(qū)記錄項,可以記錄4個分區(qū)的分區(qū)信息,每個分區(qū)的信息占用16個字節(jié),不使用的記錄項則添0(大多數(shù)情況下只使用前面兩個記錄項,只有存在多個操作系統(tǒng)需要引導時才會使用更多的記錄項),最后兩個字節(jié)是結束標志55AA。分區(qū)表內(nèi)部結構如表2:
分區(qū)記錄項的數(shù)據(jù)結構及16個字節(jié)每字節(jié)的含義如表3(16進制表示)。
如表4所示,以目前常見的80G硬盤分4個20G的分區(qū)為例,來看一下分區(qū)表組中各分區(qū)表的具體內(nèi)容,以便直觀地了解記錄項中各個數(shù)據(jù)的意義和數(shù)據(jù)之間的關系,進而搞清楚分區(qū)表是如何記錄分區(qū)信息的。
表4是硬盤零磁道第一個扇區(qū)的內(nèi)容,共32行,每行16字節(jié),合計512字節(jié)。從第1行(000)第1個字節(jié)到28行(1B0)第14個字節(jié)是主引導記錄的代碼,從第28行(1B0)第15字節(jié)“80”開始至第32行(1F0)第14字節(jié)為止是總分區(qū)表,第32行(1F0)的15、16字節(jié)是結束標志55AA。從80到55AA就是分區(qū)表的記錄項,是所有分區(qū)記錄的開始,也是我們所討論的要恢復的部分。
根據(jù)前面介紹的每偏移量含義,從28行(1B0)15字節(jié)到29行(1C0)14字節(jié)是關于第一分區(qū)C盤的,這16字節(jié)中字節(jié)1是80,表示該分區(qū)是活動分區(qū);2、3、4、字節(jié)是01 01 00,表示該分區(qū)開始的絕對地址,即1磁頭1扇區(qū)0柱面(通用值);5字節(jié)是07,表示該分區(qū)是NTFS文件系統(tǒng);6、7、8字節(jié)是FE FF FF ,表示本分區(qū)結束的絕對地址(通用值,無實際意義);9、10、11、12字節(jié)是3F 00 00 00,表示本分區(qū)之前已使用的扇區(qū)數(shù),由于C盤之前只有零磁道被使用,所以已使用數(shù)應該是63扇區(qū),而將3F 00 00 00換算過來正是63(注:此處的記錄將高低字節(jié)位置互換了,計算時應按00 00 00 3F進行,以此類推);13、14、15、16字節(jié)是02 68 54 02,代表本分區(qū)的扇區(qū)數(shù),將02 68 54 02換算過來是39086082個扇區(qū),再換算成字節(jié)為20012073984=20G。
分區(qū)表第一項記錄介紹完了,下面來看一下第二項關于擴展分區(qū)的記錄。上表中1C0行第15字節(jié)是1字節(jié),00表示此分區(qū)是非活動分區(qū);2、3、4字節(jié)是00 C1 FF,表示此扇區(qū)開始的絕對地址,(通用值,每個分區(qū)表中第二記錄項此處均填寫該數(shù)據(jù));5字節(jié)是0F,表明該分區(qū)的分區(qū)類型是擴展分區(qū);6、7、8字節(jié)是FE FF FF ,表示本分區(qū)結束的絕對地址(通用值,無實際意義);9、10、11、12字節(jié)是41 68 54 02,表示本分區(qū)之前已使用的扇區(qū)數(shù),換算后是39086145個扇區(qū)(此分區(qū)之前已用的是C盤和零磁道,即63+39086082=39086145個扇區(qū),與換算結果吻合);13、14、15、16字節(jié)是80 7C FC 06,代表本分區(qū)的扇區(qū)數(shù),將80 7C FC 06換算過來是117210240個扇區(qū),再換算成字節(jié)為60011642880=60G,是整個擴展分區(qū)的大小。
下面再看一下D盤的分區(qū)表(EBR1)的內(nèi)容。該分區(qū)表位于C盤最后扇區(qū)的下一個磁道的第一個扇區(qū),見表5(用WINHEX可以方便的找到此處)。
從55AA向上數(shù)5行,劃線處為此分區(qū)表第一項記錄的第1字節(jié),00表示該分區(qū)為非活動分區(qū);2、3、4字節(jié)為通用內(nèi)容,只要不是主引導記錄MBR中的分區(qū)表,則第一記錄項該處都添01 C1 FF;5字節(jié)為07,表示該分區(qū)為NTFS分區(qū);6、7、8字節(jié)也是通用內(nèi)容FE FF FF;9、10、11、12字節(jié)也添通用內(nèi)容3F 00 00 00(擴展分區(qū)內(nèi)D盤之前使用的空間是該分區(qū)第一個磁道,63個扇區(qū),分配給引導記錄);13、14、15、16字節(jié)表示本分區(qū)大小,換算后是39086082個扇區(qū),大小也是20G(D盤)。如果本分區(qū)是硬盤的最后一個分區(qū),則后面不再有記錄。
緊接著,是本分區(qū)第二記錄項,是關于下一分區(qū)(E盤)的信息。1字節(jié)表示下一分區(qū)是非活動分區(qū),2、3、4字節(jié)填寫通用內(nèi)容00 C1 FF(每個分區(qū)第二記錄項該處都添此數(shù)據(jù));5字節(jié)為05,表示下一分區(qū)仍是擴展分區(qū);6、7、8字節(jié)不變;9、10、11、12表示在擴展分區(qū)內(nèi)下面的這個分區(qū)(E盤)之前已使用的分區(qū),換算結果是20G。本例中后面還有兩個分區(qū)表,記錄E盤和F盤,記錄項與此相同,不再累述。
至此,我們已經(jīng)了解了一塊硬盤的分區(qū)信息是如何記錄的,那么,當零磁道的內(nèi)容被破壞時,我們就可以運用WINHEX進行恢復。要恢復的內(nèi)容有主引導記錄、第一記錄項、第二記錄項、結束標志。基本應按以下步驟進行:
第一步,恢復主引導記錄MBR:在計算機上只掛接故障硬盤,啟動到DOS狀態(tài),運行FDISK /MBR,這個命令是用來恢復零磁道的主引導記錄MBR,這不會引起分區(qū)改變;或者將故障硬盤作為從盤掛接在裝有WINHEX的計算機中,用WINHEX將MBR復制到故障硬盤的相應扇區(qū);
第二步,填寫主分區(qū)表第一記錄項:1字節(jié)填80;2、3、4字節(jié)填01 01 00;5字節(jié)根據(jù)破壞前的格式對照分區(qū)類型表填寫;6、7、8字節(jié)填寫FE FF FF;9、10、11、12字節(jié)填寫3F 00 00 00;13、14、15、16字節(jié)填寫C盤大小;由于C盤后面緊接著的是EBR,所以用EBR所在的第一個扇區(qū)數(shù)減去63就是C盤的大小。要獲得該扇區(qū)數(shù),要用WINHEX搜索,找到第一個EBR時,WINHEX窗口左下角顯示的就是該扇區(qū)的扇區(qū)數(shù),用它減去63,再換算成16進制,倒置填寫即可;(說明:由于現(xiàn)在硬盤都較大,80G有大約1億6千萬個扇區(qū),為了提高效率,不必從頭搜索,比如C盤20G,大概是4000萬個扇區(qū),那么你可以用轉到扇區(qū)命令直接轉到3900萬扇區(qū),從那個地方再開始查找就可以節(jié)約許多時間)。
第三步,填寫主分區(qū)表第二記錄項:1字節(jié)填00,2、3、4字節(jié)填00 C1 FF;5字節(jié)填05H或0FH,表示是擴展分區(qū);6、7、8字節(jié)填FE FF FF;9、10、11、12字節(jié)填剛才找到的EBR1第一扇區(qū)的扇區(qū)數(shù);13、14、15、16字節(jié)填寫擴展分區(qū)總大小;這一步比較耗時,因為需要將各個EBR分區(qū)表都查找出來,并將各個EBR中第一記錄項的第13、14、15、16字節(jié)的數(shù)值換算成扇區(qū)數(shù)后相加,以計算出擴展分區(qū)的大小,再換算成16進制,并將數(shù)值倒置,最后用WINHEX手工填寫到第二記錄項的13、14、15、1 6字節(jié),完成該記錄項的恢復;
第四步,填寫結束標志55AA在該扇區(qū)最后兩個字節(jié)處。重新啟動計算機。
至此,主引導記錄的恢復工作就宣告完成。目前一些恢復軟件的恢復機理也是如此,只是通過編程自動完成這些過程罷了。需要說明的是,手工操作,手工恢復數(shù)據(jù)雖然成功率比較高、比較有挑戰(zhàn)性,但是對操作者要求較高,必須要有耐心,必須極其細心,并且一定要保持清醒,清楚自己正在操作什么,操作完了會改變什么。
參考文獻:
[1] 老葉.硬盤的DOS管理結構.[2007-02-03].[DB/OL].http://hi.baidu.com/yeyun87/blog/item/462910e9ca4c963fb80e2dec.html.
[2] computer.硬盤修復專輯.[2005-01-16].[DB/OL].www.jxrzzs.com/dispbbs.asp?boardid=26rep.http://www.xici.net/b396942/d33889385.htm.
[3] cLinuxer.數(shù)據(jù)恢復基礎知識.[2001-05-09].[DB/OL]. http://tech.china.com/zh_cn/netschool/softwares/system/621/20010509/174516.html.
[4] 電腦俠客.反黑行動之數(shù)據(jù)恢復. [2005-06-15].[DB/OL].http://www.oioj.net/blog/user1/14566/archives/2005/97466.shtml.
[5] 沂山茶客.WinHEX使用教程.[2006-07-20].[DB/OL].http://blog.sina.com.cn/u/4a31974d010004ej.