陳培德,吳建平,王麗清,朱辰龍,鄧 劍
(1.云南省電子計(jì)算中心,云南 昆明 650223;2.云南大學(xué) 信息學(xué)院,云南 昆明 650223)
GPT是GUID partition table的縮寫,其含義是“全局唯一標(biāo)識(shí)磁盤分區(qū)表”[1]。它是Windows Server 2003中的一種新型磁盤架構(gòu),是一種基于Itanium計(jì)算機(jī)中的可擴(kuò)展固件接口使用的磁盤分區(qū)架構(gòu)[1]。GPT的出現(xiàn)替代了舊式的MBR(master boot record)[2-3],解決了MBR分區(qū)表不支持容量大于2 TB分區(qū)的問題[4]。
而NTFS文件系統(tǒng)則是Windows操作系統(tǒng)重要的組成部分,但是由于計(jì)算機(jī)病毒的破壞、掉電、用戶誤Ghost、GPT分區(qū)至MBR分區(qū)誤轉(zhuǎn)等各種原因,導(dǎo)致GPT分區(qū)表被破壞的情況時(shí)有發(fā)生。當(dāng)GPT分區(qū)表被破壞后,用戶通過查找的方式獲得GPT分區(qū)中各卷的容量,并通過重建GPT分區(qū)的來恢復(fù)。
然而在GPT分區(qū)的硬盤中,當(dāng)GPT分區(qū)表、NTFS_DBR和NTFS_DBR備份同時(shí)被破壞后,恢復(fù)數(shù)據(jù)的難度系數(shù)也就更大。鑒于目前國(guó)內(nèi)尚未有人展開同時(shí)恢復(fù)GPT分區(qū)、NTFS_DBR和NTFS_DBR備份的相關(guān)研究工作,文中針對(duì)這種情況進(jìn)行了開創(chuàng)性的探索與研究。
一個(gè)GPT磁盤主要由保護(hù)的MBR、GPT頭、GPT分區(qū)表、GPT分區(qū)區(qū)域等6個(gè)部分組成,大致結(jié)構(gòu)如圖1所示,6個(gè)部分說明如下:
在圖1中,n為GPT磁盤的總扇區(qū)數(shù),GPT磁盤的扇區(qū)號(hào)范圍為0 ~(n-1)。
第1部分為保護(hù)MBR,存儲(chǔ)在整個(gè)GPT磁盤的0號(hào)扇區(qū),該扇區(qū)由磁盤簽名[5]、1個(gè)MBR分區(qū)表和結(jié)束標(biāo)志3個(gè)部分組成。其中,MBR分區(qū)表固定如下:
00 00 02 00 EE FF FF FF 01 00 00 00 FF FF FF FF
從MBR分區(qū)表可知:分區(qū)標(biāo)志為0XEE,而相對(duì)扇區(qū)為1(存儲(chǔ)形式為01 00 00 00),總扇區(qū)數(shù)為4 294 967 295(存儲(chǔ)形式為FF FF FF FF),也就是該分區(qū)總數(shù)的最大值[6]。也就是說,該磁盤已經(jīng)沒有剩余空間再進(jìn)行MBR分區(qū),即該磁盤已經(jīng)成為GPT磁盤。
第2部分為GPT頭,存儲(chǔ)在整個(gè)GPT磁盤的1號(hào)扇區(qū)[7],在1號(hào)扇區(qū)中,只使用了92個(gè)字節(jié);主要描述了GPT頭簽名、版本號(hào)、GPT頭所占字節(jié)數(shù)(注:一般為92)、GPT頭CRC校驗(yàn)和、GPT頭所在扇區(qū)號(hào)(注:一般為1)、GPT頭備份所在扇區(qū)號(hào)、GPT分區(qū)區(qū)域開始扇區(qū)號(hào)(注:一般為34)、GPT分區(qū)區(qū)域結(jié)束扇區(qū)號(hào)、GPT磁盤的GUID、GPT分區(qū)表開始扇區(qū)號(hào)、每個(gè)GPT分區(qū)表所占字節(jié)數(shù)(注:一般為128)、GPT分區(qū)表的個(gè)數(shù)(注:固定為128)、GPT分區(qū)表的CRC校驗(yàn)和等信息。
第3部分為GPT分區(qū)表,存儲(chǔ)在GPT磁盤的2~33號(hào)扇區(qū),共占用32個(gè)扇區(qū)[8];從GPT頭可知,每個(gè)GPT分區(qū)表占128字節(jié)[9],所以,在這32個(gè)扇區(qū)中最多可以存放128個(gè)GPT分區(qū)表[9],而每個(gè)GPT分區(qū)表管理一個(gè)分區(qū);在每個(gè)分區(qū)表中記錄著該分區(qū)的開始扇區(qū)號(hào)、結(jié)束扇區(qū)號(hào)、分區(qū)類型的GUID、分區(qū)名、分區(qū)屬性和分區(qū)GUID。第1個(gè)分區(qū)表為系統(tǒng)保留,因此,用戶在GPT磁盤上最多還可以再建立127個(gè)分區(qū)。
第4部分為GPT分區(qū)區(qū)域,是GPT磁盤中最大的一塊區(qū)域[8],也是GPT磁盤最重要的組成部分;位于GPT磁盤的中間位置,其開始扇區(qū)號(hào)和結(jié)束扇區(qū)號(hào)在GPT頭已定義。一般情況下,該區(qū)域的開始扇區(qū)號(hào)為34,而結(jié)束扇區(qū)號(hào)為GPT磁盤總扇區(qū)數(shù)減去35。該區(qū)域由該GPT磁盤中各個(gè)具體的分區(qū)組成,各分區(qū)的開始扇區(qū)號(hào)和結(jié)束扇區(qū)號(hào)在各分區(qū)表中均有定義。
第5部分為GPT分區(qū)表備份,存儲(chǔ)在GPT磁盤的倒數(shù)33號(hào)扇區(qū)~倒數(shù)2號(hào)扇區(qū),也是占用32個(gè)扇區(qū)[8]。是第3部分,即GPT磁盤的2 ~ 33號(hào)扇區(qū)的備份。
第6部分為GPT頭備份,存儲(chǔ)在GPT磁盤的倒數(shù)2號(hào)扇區(qū)[10],但該扇區(qū)不是GPT頭的簡(jiǎn)單復(fù)制。在這個(gè)扇區(qū)中,也是使用了92個(gè)字節(jié);主要描述了GPT頭簽名、版本號(hào)、GPT頭所占字節(jié)數(shù)(注:一般為92)、GPT頭CRC校驗(yàn)和、GPT頭備份所在扇區(qū)號(hào)、GPT頭所在扇區(qū)號(hào)(注:一般為1)、GPT分區(qū)區(qū)域開始扇區(qū)號(hào)(注:一般為34)、GPT分區(qū)區(qū)域結(jié)束扇區(qū)號(hào)、GPT磁盤的GUID、GPT分區(qū)表開始扇區(qū)號(hào)、每個(gè)GPT分區(qū)表所占字節(jié)數(shù)(注:一般為128)、GPT分區(qū)表的個(gè)數(shù)(注:固定為128)、GPT分區(qū)表的CRC校驗(yàn)和等信息。
當(dāng)用戶將硬盤中的一個(gè)分區(qū)采用NTFS文件系統(tǒng)對(duì)其格式化后,在該分區(qū)上就建立了一個(gè)NTFS文件系統(tǒng)的結(jié)構(gòu),NTFS文件系統(tǒng)的結(jié)構(gòu)大致如圖2所示。
元文件SBOOT…某元文件…數(shù)據(jù)或文件某元文件數(shù)據(jù)或文件…DBR備份
圖2 某NTFS文件系統(tǒng)的總體布局
從圖2可知,NTFS文件系統(tǒng)主要由元文件、文件夾、數(shù)據(jù)和其他用戶文件等組成[11-12]。其中:一些信息對(duì)于NTFS文件系統(tǒng)來說是非常重要的,存儲(chǔ)這些重要信息所對(duì)應(yīng)的文件就是元文件[13]。元文件是NTFS系統(tǒng)最重要的組成部分,它主要負(fù)責(zé)管理整個(gè)NTFS文件系統(tǒng)。在NTFS文件系統(tǒng)中,元文件主要有$MFT、$MFTMirr、$LogFile、$Volume、$Attrdef、$Root、$Bitmap、$Boot等。
其中:元文件$Boot在NTFS卷中的位置是固定不變的,位于NTFS卷的0號(hào)簇[11],該元文件所占簇?cái)?shù)與每個(gè)簇的扇區(qū)數(shù)有關(guān),NTFS_DBR則是元文件$Boot的重要組成部分,位于NTFS卷的0號(hào)扇區(qū)。由于NTFS_DBR比較重要,所以,在NTFS卷的最后一個(gè)扇區(qū)存儲(chǔ)著NFTS_DBR備份。如果NTFS_DBR被破壞,可以通過NTFS_DBR備份來恢復(fù);但是如果NTFS_DBR和NTFS_DBR備份同時(shí)被破壞,只有通過計(jì)算NTFS_DBR中BPB參數(shù)的形式來恢復(fù)。
(1)實(shí)驗(yàn)環(huán)境。
操作系統(tǒng):Windows 7。
硬盤:虛擬硬盤。
數(shù)據(jù)恢復(fù)軟件:WinHex 15.08。
(2)制作實(shí)驗(yàn)素材的步驟。
步驟1:在Windows 7桌面上,右擊“計(jì)算機(jī)”圖標(biāo),從彈出的快捷菜單中選擇“管理”,出現(xiàn)“計(jì)算機(jī)管理”窗口,在導(dǎo)航窗格中選擇“存儲(chǔ)→磁盤管理”,選擇菜單欄上的“操作→創(chuàng)建VHD”后,在“創(chuàng)建和附加虛擬硬盤”窗口中指定虛擬硬盤位置為G盤的根目錄,虛擬硬盤文件名為a2.vhd,虛擬硬盤大小為2 GB。
步驟2:選擇菜單欄上的“操作→附加VHD”后,附加a2.vhd文件為虛擬磁盤1,將光標(biāo)移動(dòng)到磁盤1處,將磁盤1初始化成GPT磁盤。
步驟3:在磁盤1上建立1個(gè)分區(qū),分區(qū)大小為450 MB,文件系統(tǒng)選擇NTFS,將其進(jìn)行格式化。
步驟4:重復(fù)步驟3共計(jì)3次,在磁盤1上依次再建立3個(gè)分區(qū),分區(qū)大小分別為390 MB、630 MB和510 MB文件。
完成以上操作后,在磁盤1中4個(gè)分區(qū)對(duì)應(yīng)4個(gè)邏輯盤情況如下:
序號(hào)盤符文件系統(tǒng)容量(單位:MB)1H盤 NTFS4502I盤 NTFS3903J盤 NTFS6304K盤 NTFS510
分別復(fù)制一定數(shù)量的文件夾和文件到4個(gè)邏輯盤中;并記錄下4個(gè)邏輯盤的NTFS_DBR和NTFS_DBR備份所在扇區(qū)號(hào)。
分離虛擬磁盤1,使用Winhex軟件打開a2.vhd文件;將4個(gè)邏輯盤的NTFS_DBR和NTFS_DBR備份所在扇區(qū)號(hào)填充為00。
將a2.vhd文件附加為虛擬磁盤1,并刪除4個(gè)邏輯盤,然后再轉(zhuǎn)換成MBR磁盤。
至此,實(shí)驗(yàn)素材已制作完成。
重建GPT分區(qū)的基本思路:分別計(jì)算H盤、I盤、J盤和K盤的容量;重建GPT分區(qū)的方法如下:
(1)通過NTFS元文件$MFT或者元文件$MFTMirr的0號(hào)記錄80H非常駐屬性計(jì)算出NTFS文件系統(tǒng)每個(gè)簇的扇區(qū)數(shù)。
(2)通過NTFS元文件$MFT的8號(hào)記錄80H屬性計(jì)算NTFS總簇?cái)?shù)。
(3)通過NTFS卷總簇?cái)?shù)和每個(gè)簇的扇區(qū)數(shù),計(jì)算NTFS卷的容量。
重建GPT分區(qū)操作步驟如下:
步驟1:?jiǎn)?dòng)WinHex軟件。
步驟2:打開a2.vhd文件,并映象為磁盤。
步驟3:查找元文件$MFT或者$MFTMirr的0號(hào)記錄,在65 680號(hào)扇區(qū)找到,如圖3所示。
步驟4:計(jì)算每個(gè)簇的扇區(qū)數(shù)。
從圖3可知,NTFS文件系統(tǒng)分配給元文件$MFT的空間為524 288字節(jié),占512個(gè)簇;在元文件$MFT或者$MFTMirr的0號(hào)記錄80H屬性中的存儲(chǔ)形式分別為“00 00 08 00 00 00 00 00”和“00 02”。
根據(jù)元文件NTFS文件系統(tǒng)分配給元文件$MFT的空間和所占簇?cái)?shù),可以計(jì)算出第1個(gè)卷(即H盤)每個(gè)簇的扇區(qū)數(shù)。
圖3 第1個(gè)NTFS元文件$MFT或者$MFTMirr的0號(hào)記錄80H屬性
NTFS文件系統(tǒng)分配給元文件$MFT的空間=每個(gè)簇的扇區(qū)數(shù)×所占簇?cái)?shù)×512字節(jié)/簇
524 288字節(jié)=每個(gè)簇的扇區(qū)數(shù)×512簇×
512字節(jié)/簇
每個(gè)簇的扇區(qū)數(shù)=2
步驟5:查找元文件$MFT的8號(hào)記錄,在372 880號(hào)扇區(qū)找到,如圖4所示。
從圖4可知,NTFS文件系統(tǒng)的最后一個(gè)簇號(hào)為460 799,其存儲(chǔ)形式為“FF 07 07”。
步驟6:計(jì)算NTFS卷的容量。
NTFS文件系統(tǒng)的簇號(hào)范圍為0~460 799,即總簇?cái)?shù)為460 800。
圖4 第1個(gè)NTFS元文件$MFT的8號(hào)記錄80H屬性
步驟7:重復(fù)步驟3至步驟5,可以計(jì)算出第2個(gè)(即I盤)至第4個(gè)(即K盤)卷中NTFS系統(tǒng)的每個(gè)簇扇區(qū)數(shù)和容量。在GPT磁盤中,4個(gè)卷的基本情況如下:
序號(hào)每個(gè)簇的扇區(qū)數(shù)卷的容量(單位:MB) 12450212839033263042510
NTFS卷的容量=總簇?cái)?shù)×每個(gè)簇的扇區(qū)數(shù)×
512字節(jié)/扇區(qū)÷1 024÷1 024 MB=
460 800×2×512÷1 024÷1 024 MB=
450 MB步驟8:退出WinHex。
步驟9:進(jìn)入“計(jì)算機(jī)”管理窗口,選擇菜單欄上的“操作→附加VHD”后,附加G盤根目錄的a2.vhd文件為虛擬磁盤1,并轉(zhuǎn)換成GPT磁盤。
步驟10:在磁盤1上依次建立4個(gè)GPT分區(qū),磁盤1中4個(gè)分區(qū)依次對(duì)應(yīng)4個(gè)卷的容量分別為450 MB、390 MB、630 MB和510 MB。
注:千萬不要對(duì)4個(gè)卷進(jìn)行(快)格式化操作。
至此,4個(gè)卷的GPT分區(qū)已經(jīng)重建完成。
步驟11:分離a2.vhd,使用WinHex打開a2.vhd,并映象為磁盤,從主窗口可以得到分區(qū)2、分區(qū)3、分區(qū)4和分區(qū)5的開始扇區(qū)分別為65 664、987 264、1 785 984和3 076 224(注:分區(qū)1為微軟保留分區(qū))。
重建NTFS_DBR的基本思路:計(jì)算NTFS_DBR中的每個(gè)簇的扇區(qū)數(shù)、隱藏扇區(qū)數(shù)、總扇區(qū)數(shù)等七個(gè)BPB參數(shù)。基本方法如下:
(1)每個(gè)簇的扇區(qū)數(shù):通過NTFS元文件$MFT或者元文件$MFTMirr的0號(hào)記錄80H非常駐屬性計(jì)算出NTFS文件系統(tǒng)每個(gè)簇的扇區(qū)數(shù)。
(2)隱藏扇區(qū)數(shù):通過NTFS_DBR所在扇區(qū)號(hào)獲得,即建立GPT分區(qū)后,每個(gè)卷在整個(gè)硬盤中的開始扇區(qū)號(hào)。
注:系統(tǒng)對(duì)該參數(shù)的正確性不進(jìn)行校驗(yàn),也可以不計(jì)算該參數(shù),重建NTFS_DBR中沒有計(jì)算該參數(shù)。
(3)總扇區(qū)數(shù):總?cè)萘哭D(zhuǎn)換為扇區(qū)數(shù)后減1。
(4)元文件$MFT的開始簇號(hào):從元文件$MFT或$MFTMirr的0號(hào)記錄80H屬性數(shù)據(jù)運(yùn)行列表中的開始簇號(hào)獲得。
(5)元文件$MFTMirr的開始簇號(hào):從元文件$MFT或$MFTMirr的1號(hào)記錄80H屬性數(shù)據(jù)運(yùn)行列表中的開始簇號(hào)獲得。
(6)元文件$MFT每條記錄大小描述和索引節(jié)點(diǎn)大小描述[1]:以每個(gè)簇的扇區(qū)數(shù)為依據(jù)通過查詢表1獲得,見表1。
表1 每個(gè)簇的扇區(qū)數(shù)與$MFT記錄大小、索引節(jié)點(diǎn)大小對(duì)應(yīng)表
將同一版本的NTFS_DBR復(fù)制到每個(gè)NTFS_DBR所在扇區(qū)號(hào),并修改每個(gè)簇的扇區(qū)數(shù)、隱藏扇區(qū)數(shù)等這七參數(shù)[14]。
重建NTFS_DBR操作步驟如下:
步驟1:?jiǎn)?dòng)WinHex軟件。
步驟2:打開a2.vhd文件,并映象為磁盤。
步驟3:查找元文件$MFT或者$MFTMirr的0號(hào)記錄,在65680號(hào)扇區(qū)找到,如圖3所示。
步驟4:計(jì)算每個(gè)簇的扇區(qū)數(shù)。
NTFS文件系統(tǒng)分配給元文件$MFT的空間=每個(gè)簇的扇區(qū)數(shù)×所占簇?cái)?shù)×512字節(jié)/簇
524 288字節(jié)=每個(gè)簇的扇區(qū)數(shù)×512簇×
512字節(jié)/簇
每個(gè)簇的扇區(qū)數(shù)=2
步驟5:計(jì)算總扇區(qū)數(shù)。
總扇區(qū)數(shù)=總?cè)萘俊? 024×1 024÷512-1=
450×1 024×1 024÷512-1=
921 599
步驟6:元文件$MFT的開始簇號(hào):從圖3可知,元文件$MFT的開始簇號(hào)為153 600(注:存儲(chǔ)形式為00 58 02)。
步驟7:元文件$MFTMirr的開始簇號(hào):將光標(biāo)移動(dòng)到65 682號(hào)扇區(qū),即元文件$MFT或$MFTMirr的1號(hào)記錄開始扇區(qū)號(hào),可以得到元文件$MFTMirr的開始簇號(hào)為8(注:存儲(chǔ)形式為08)。
步驟8:以每個(gè)簇的扇區(qū)數(shù)為依據(jù),通過查詢表1獲得元文件$MFT每條記錄大小描述和索引節(jié)點(diǎn)大小描述。
第1個(gè)NTFS文件系統(tǒng)每個(gè)簇的扇區(qū)數(shù)為2,從表1可以查找到,元文件$MFT每條記錄大小描述為1,每個(gè)索引節(jié)點(diǎn)大小描述為4。
步驟9:綜合步驟4至步驟8,重建第1個(gè)NTFS_DBR需要計(jì)算的BPB參數(shù),如下所示。
字節(jié)偏移字節(jié)數(shù)含義值0X0D1每個(gè)簇的扇區(qū)數(shù)20X288扇區(qū)總數(shù)921 5990X308$MFT的開始簇號(hào)153 6000X388$MFTMirr的開始簇號(hào)80X401每個(gè)$MFT記錄大小描述1個(gè)簇0X441每個(gè)索引節(jié)點(diǎn)大小描述4個(gè)簇
轉(zhuǎn)換成在NTFS_DBR中的存儲(chǔ)形式,如下所示:
字節(jié)偏移含義在NTFS_DBR中的存儲(chǔ)形式0X0D每個(gè)簇的扇區(qū)數(shù)020X28扇區(qū)總數(shù)FF 0F 0E 00 00 00 00 000X30$MFT的開始簇號(hào)00 58 02 00 00 00 00 000X38$MFTMirr的開始簇號(hào)08 00 00 00 00 00 00 000X40每個(gè)$MFT記錄大小描述010X44每個(gè)索引節(jié)點(diǎn)大小描述04
步驟10:重復(fù)步驟4至步驟9,重建第2個(gè)NTFS_DBR需要計(jì)算的BPB參數(shù),如下所示:
字節(jié)偏移字節(jié)數(shù)含義值0X0D1每個(gè)簇的扇區(qū)數(shù)1280X288扇區(qū)總數(shù)798 7190X308$MFT的開始簇號(hào)2 0800X388$MFTMirr的開始簇號(hào)10X401每個(gè)$MFT記錄大小描述1 024字節(jié)0X441每個(gè)索引節(jié)點(diǎn)大小描述4 096字節(jié)
轉(zhuǎn)換成在NTFS_DBR中的存儲(chǔ)形式,如下所示:
字節(jié)偏移含義在NTFS_DBR中的存儲(chǔ)形式0X0D每個(gè)簇的扇區(qū)數(shù)800X28扇區(qū)總數(shù)FF2F 0C 00 00 00 00 000X30$MFT的開始簇號(hào)20 08 00 00 00 00 00 000X38$MFTMirr的開始簇號(hào)01 00 00 00 00 00 00 000X40每個(gè)$MFT記錄大小描述F60X44每個(gè)索引節(jié)點(diǎn)大小描述F4
步驟11:重復(fù)步驟4至步驟9,重建第3個(gè)NTFS_DBR需要計(jì)算的BPB參數(shù),如下所示:
字節(jié)偏移字節(jié)數(shù)含義值0X0D1每個(gè)簇的扇區(qū)數(shù)320X288扇區(qū)總數(shù)1 290 2390X308$MFT的開始簇號(hào)13 4400X388$MFTMirr的開始簇號(hào)10X401每個(gè)$MFT記錄大小描述1 024字節(jié)0X441每個(gè)索引節(jié)點(diǎn)大小描述4 096字節(jié)
轉(zhuǎn)換成在NTFS_DBR中的存儲(chǔ)形式,如下所示:
字節(jié)偏移含義在NTFS_DBR中的存儲(chǔ)形式0X0D每個(gè)簇的扇區(qū)數(shù)200X28扇區(qū)總數(shù)FF AF 13 00 00 00 00 000X30$MFT的開始簇號(hào)80 34 00 00 00 00 00 000X38$MFTMirr的開始簇號(hào)01 00 00 00 00 00 00 000X40每個(gè)$MFT記錄大小描述F60X44每個(gè)索引節(jié)點(diǎn)大小描述F4
步驟12:重復(fù)步驟4至步驟9,重建第4個(gè)NTFS_DBR需要計(jì)算的BPB參數(shù),如下所示:
字節(jié)偏移字節(jié)數(shù)含義值0X0D1每個(gè)簇的扇區(qū)數(shù)20X288扇區(qū)總數(shù)1 044 4790X308$MFT的開始簇號(hào)1740800X388$MFTMirr的開始簇號(hào)80X401每個(gè)$MFT記錄大小描述1簇0X441每個(gè)索引節(jié)點(diǎn)大小描述4簇
轉(zhuǎn)換成在NTFS_DBR中的存儲(chǔ)形式,如下所示:
字節(jié)偏移含義在NTFS_DBR中的存儲(chǔ)形式0X0D每個(gè)簇的扇區(qū)數(shù)020X28扇區(qū)總數(shù)FF EF 0F 00 00 00 00 000X30$MFT的開始簇號(hào)00 A8 02 00 00 00 00 000X38$MFTMirr的開始簇號(hào)08 00 00 00 00 00 00 000X40每個(gè)$MFT記錄大小描述010X44每個(gè)索引節(jié)點(diǎn)大小描述04
步驟13:將同一版本NTFS_DBR復(fù)制到65 664號(hào)扇區(qū),并修改第1個(gè)NTFS_DBR中的BPB參數(shù)并存盤,如圖5所示,至此,第1個(gè)卷的NTFS_DBR已經(jīng)恢復(fù)完成。
圖5 恢復(fù)第1個(gè)卷的NTFS_DBR
步驟14:將同一版本NTFS_DBR復(fù)制到987 264號(hào)扇區(qū),修改第2個(gè)NTFS_DBR中的BPB參數(shù);將同一版本NTFS_DBR復(fù)制到1 785 984號(hào)扇區(qū),并修改第3個(gè)NTFS_DBR中的BPB參數(shù);將同一版本NTFS_DBR復(fù)制到3 076 224號(hào)扇區(qū),并修改第4個(gè)NTFS_DBR中的BPB參數(shù)[14]。
至此,第2~4個(gè)卷的NTFS_DBR已經(jīng)恢復(fù)完成。
步驟15:通過NTFS_DBR恢復(fù)NTFS_DBR備份。由于NTFS_DBR備份位于每個(gè)NTFS卷的最后一個(gè)扇區(qū)[15],4個(gè)NTFS_DBR備份依次分別位于987 263、1 785 983、3 076 223和4 120 703號(hào)扇區(qū),分別將65 664號(hào)扇區(qū)復(fù)制到987 263號(hào)扇區(qū),將987 264號(hào)扇區(qū)復(fù)制到1 785 983號(hào)扇區(qū),將1 785 984號(hào)扇區(qū)復(fù)制到3 076 223號(hào)扇區(qū),將3 076 224號(hào)扇區(qū)復(fù)制到4 120 703號(hào)扇區(qū)。
注:由于NTFS文件系統(tǒng)對(duì)NTFS_DBR備份是否存在并不進(jìn)行校驗(yàn),步驟15也可以省略。
由于計(jì)算機(jī)病毒的破壞、用戶使用Ghost軟件對(duì)GPT磁盤誤操作、誤將GPT磁盤轉(zhuǎn)換為MBR磁盤、突然掉電等因素等,導(dǎo)致GPT分區(qū)、NTFS_DBR和NTFS_DBR備份同時(shí)被破壞的現(xiàn)象時(shí)有發(fā)生。通過實(shí)驗(yàn)的方式,依據(jù)NTFS文件系統(tǒng)元文件$MFT的0號(hào)記錄、1號(hào)記錄和6號(hào)記錄的80H屬性相關(guān)參數(shù),提出重建GPT分區(qū)、NTFS_DBR和NTFS_DBR備份的基本思路、方法與步驟。作者在該實(shí)驗(yàn)中過程中,只使用了15分鐘的時(shí)間,就恢復(fù)了GPT磁盤中的4個(gè)邏輯盤中的全部文件夾和文件。實(shí)踐證明:該方法具有方便、快捷、簡(jiǎn)單實(shí)用的特點(diǎn)。