金年会 金字招牌诚信至上,金年会 金字招牌诚信至上,金年会 金字招牌诚信至上,金年会 金字招牌诚信至上

 找回密碼
 注冊

QQ登錄

只需一步,快速開(kāi)始

查看: 24616|回復: 156
打印 上一主題 下一主題

[數據恢復] 數據恢復知識必看

跳轉到指定樓層
1#
lool 發(fā)表于 2010-7-15 13:18:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式 來(lái)自 中國四川瀘州

馬上注冊,結交更多好友,享用更多功能。

您需要 登錄 才可以下載或查看,沒(méi)有帳號?注冊

x
1、 系統工作機理的簡(jiǎn)單介紹(本節由lowpower縮寫(xiě))
這一部分在原作中是最重要的一章,考慮到篇幅關(guān)系,進(jìn)行了大量的刪節。
①、 DOSDOS兼容系統)硬盤(pán)數據的構成
DOS
磁盤(pán)系統,可以按照邏輯分區的概念管理物理空間,不同分區可以裝載不同的OS系統。
示意如下:
                 硬盤(pán)空間
第一扇區|分區1     |分區2   |分區3   |分區4
主引導扇區|引導扇區|引導扇區|引導扇區|引導扇區|
各分區公用|各個(gè)分區相對獨立,可安裝不同操作系統。


FAT結構的分區每一分區都有獨立的引導記錄,FDT表,FAT表等。同時(shí),系統還有一個(gè)最為重要的主引導記錄。在001扇區,今后我們用CYL代表柱、SIDE代表面,SEC代表扇區。以下一個(gè)FAT結構分區的簡(jiǎn)圖。

保留區- 磁盤(pán)參數表、DOS引導記錄
控制區-FAT1、FAT2根目錄區
數據區-數據區

以下簡(jiǎn)單介紹一下重要的部分:
主引導記錄又稱(chēng)主分區表、MBR等等:MBR占一個(gè)扇區,在CYL 0、SIDE 0、SEC 1,由代碼區和數據區構成。其中代碼區是一端標準的程序,完成BIOS自舉到OS BOOT之間的工作,為OS啟動(dòng)做最后的準備。標準代碼區可以由FDISK/MBR重建,但對于多系統引導的不標準MBR,將被這一操作破壞。MBR的數據區記錄了分區情況。
系統扇區:CYL 0、SIDE 0 、SEC 1-CYL 0、SIDE 0 、SEC 63,共62個(gè)扇
區引導區又稱(chēng)BOOT區:CYL 0、SIDE 1 、SEC 1 這是我們過(guò)去稱(chēng)的DOS
導區。也占一個(gè)扇區。
文件分配表又稱(chēng)FAT:是記錄文件占用簇的情況和連接關(guān)系的地方。一般有兩個(gè)FAT表,起到備份的作用。FAT12、FAT16的第一FAT表一般均在0-1-2,FAT32的第一FAT表在0-1-33。由于FAT表記錄文件占用扇區連接的地方,如果兩個(gè)FAT表都壞了,后果不堪設想。
由于FAT表的長(cháng)度與當前分區的大小有關(guān)所以FAT2的地址是需要計算的。根目錄區(ROOT、FDT):這里記錄了根目錄里的目錄文件項等,ROOT區跟在FAT2后面。
數據區:跟在ROOT區后面,這才是數據內容。其實(shí), MBR、隱含扇區、BOOT區,重建都比較容易。數據恢復的關(guān)鍵在于恢復數據文件。由于FAT表記錄了文件在硬盤(pán)上占用扇區的鏈表,如果2個(gè)FAT表都完全損壞了。那么恢復文件,特別是占用多個(gè)不連續扇區文件就相當困難了。
②、 主引導記錄簡(jiǎn)單說(shuō)明:
主引導記錄是硬盤(pán)引導的起點(diǎn),關(guān)于代碼區不多說(shuō)了,其數據區,比較重要的是2個(gè)標志,80H55AA,80H一般在偏移1BE處,80是分區激活的標志的標記表示系統可引導,且整個(gè)分區表只能有一個(gè)80標記。另一個(gè)就是結尾的55 AA標記,用來(lái)表示主引導記錄是一個(gè)有效的記錄。另外,各個(gè)分區自身的引導記錄,也是以55AA結束,這是我們查找分區的標志。我們后面在介紹如何主引導記錄中,給出了一個(gè)完整的分區表的例子,大家可對照查看。數據區中,用10H字節表示一個(gè)分區,最多可表示4個(gè)分區,分別從1BE、1CE、1DE、1EE開(kāi)始,我們后面給出了分區表項對應地址的含義。大家可以對應分析一下以下分區的情況。
80
  01  01  00  0B  FE  BF  FC  3F  00-00 00 7E 86 BB 00
①     、凇     、邸      、堋           、荨       、
①:激活標記,80表示可引導分區
②:分區開(kāi)始的磁頭號為01、開(kāi)始的扇區號為01、開(kāi)始的柱面號為00,由于開(kāi)始的扇區號為2進(jìn)制6位,而開(kāi)始的柱面號為2進(jìn)制10位,因此扇區號所用字節的高兩位要加在柱面號高兩位。
③:分區的系統類(lèi)型FAT320B),01FAT12,04FAT16,06BIGDOS,07NTFS,
其他參見(jiàn)分區類(lèi)型表。
④:分區結束磁頭號254、分區結束扇區號63、分區結束柱面號764
⑤:首扇區的相對扇區號63
⑥:總扇區數12289622
2
、常見(jiàn)手工處理工具與DOS外部命令介紹
DEBUG
:古老和最為常見(jiàn)的調試跟蹤軟件,始終捆綁在微軟的DOS/WIN9X操作系統中。有19個(gè)子命令。有編寫(xiě)執行匯編指令,直接讀寫(xiě)絕對扇區和內存單元等功能,可以在最艱苦的條件下工作。DOS6.22以下的系統,DEBUG.EXEDOS目錄下,WIN9X系統中它在WINDOWS\COMMAND目錄下,它
也出現在WIN9X所生成的應急盤(pán)中。DISKEDIT:常見(jiàn)16進(jìn)制編輯軟件,字符界面,可以以文件方式和扇區方式讀寫(xiě)邏輯內容,可以讀寫(xiě)絕對扇區,可以方便的查找編輯分區表、FAT表、ROOT區等重要扇區。這一點(diǎn)要比DEBUG更方便。但在一些重要扇區損壞的情況下,DISKEDIT可能無(wú)法啟動(dòng)。DISKEDIT軟件可以在著(zhù)名的Norton Utilities軟件包中找到。最新的DISKEDIT出現在NU4中。
NDD
:常見(jiàn)的FAT文件結構磁盤(pán)修復工具,就是著(zhù)名的NORTON磁盤(pán)醫生,可以自動(dòng)修復分區丟失等情況,可以搶救軟盤(pán)壞區中的數據,強制讀出后搬移到其他空白扇區。希望大家不要再使用NORTON FOR DOS78NDD,這個(gè)版本由于不支持大分區、FAT32、長(cháng)文件名等技術(shù),會(huì )給你帶來(lái)大量的麻煩。建議大家使用Norton Utilities4或更高版本中的NDD.EXE,這是純DOS下的工具。在硬盤(pán)崩潰或異常的情況下,他可能可以帶給用戶(hù)以希望。WIN9X下的磁盤(pán)醫生調用的并不是這個(gè)程序,而
NDD32.EXE.
FDISK
FDISK當然是個(gè)危險的命令,很多人非?謶,事實(shí)上,FDISK命令的運行并不影響任何分區內的硬盤(pán)數據,他對分區的設置操作,只改變主分區表的數據區。而特別是FDISK異常重要的隱含參數/MBR,可以重建主分區表的代碼區,清除主引導型病毒等。這是非常有用的操作。DOS6.22以下的系統,FDISK.EXEDOS目錄下,WIN9X系統中它在WINDOWS\COMMAND目錄下,它也出現在WIN9X所生成的應急盤(pán)中。
FORMAT
:在一些人眼中,FORMAT是最可怕的命令,但他并不是對硬盤(pán)清零,特別值得注意的是,很多文件恢復工具都建議你恢復前先FORMAT該分區起到保護的餓作用。DOS6.22以下的系統,FORMAT.COMDOS目錄下,WIN9X系統中它在WINDOWS\COMMAND目錄下,它也出現在WIN9X所生成的應急盤(pán)中。
HD-COPY
:傳統的軟盤(pán)COPY工具,2.0版本以后加入了強制讀的功能,可以讀出一些損壞扇區的內容。
SYS
SYS命令是重建BOOT區的最簡(jiǎn)潔的手段,也可以殺除BOOT區病毒。DOS6.22以下的系統,sys.COMDOS目錄下,WIN9X系統中它在WINDOWS\COMMAND目錄下,它也出現在WIN9X所生成的應急盤(pán)中。

令我非常遺憾的是,至今我沒(méi)有發(fā)現比較出色的扇區級備份鏡象工具,我曾寫(xiě)過(guò)一個(gè)HD-MIRROR,但由于錯誤較多,我提供下載的第二天就停止了發(fā)布,另外fixc的作者noz寫(xiě)過(guò)一個(gè)clone.exe,但可惜只適合相同的硬盤(pán)。我也曾以為GHOST可以做到這點(diǎn),事實(shí)上,你目前還不能指望他為你備份一塊深度破損的硬盤(pán)。。如果有一個(gè)有效的能以按扇區機制(而不是文件機制)壓縮備份一塊硬盤(pán)將之做成一個(gè)鏡象文件的話(huà),那么我們的恢復工作就擁有了更多的保證和余地。我們可以更大膽的做恢復的嘗試。
3
、 一些自動(dòng)處理工具或軟件包
首先介紹國內的一些免費修復工具
FIXMBR
:何公道先生寫(xiě)的一個(gè)修復MBR的工具,適合處理邏輯分區丟失的情況, 有一些可選參數,支持 FAT32、FAT16,不支持NTFS、LINUX等分區,支持8.4G以上硬盤(pán)?尚迯CIH發(fā)作后的擴展邏輯分區。
VRVFIX
:北信源公司的推出的修復硬盤(pán)共享工具,適合處理邏輯分區丟失的情況,處理的基本比較準確。支持FAT32、FAT16,不支持NTFS、LINUX等分區。也不支持8。4G以上硬盤(pán)。
FIXC
:國內最早出現的可以修復部分被CIH破壞的C盤(pán)的工具,作者是NOZ,新版本也加入了修復分區信息的功能,支持FAT32、FAT16,有限支持NTFS,不支持8。4G以上硬盤(pán)。目前的版本已經(jīng)比較完善。
FIXHDPT
TBSOFT工作室的分區信息修復工具。支持FAT32、FAT16,不支持NTFSLINUX,不支持8。4G以上硬盤(pán),是歷史比較長(cháng)的工具之一。
RE(ReapirEasy)
:本人早期寫(xiě)的分區表修復工具,支持FAT32、FAT16,有限支持NTFS,不支持8.4G
以上硬盤(pán),和某些BIOS不兼容。其整體水準低于前面列舉的工具。
國外一些系統維護的工具目前已經(jīng)達到了非常強大的程度。
Norton
 Utilities:歷史最悠久的系統維護工具。不僅可以數據恢復,還可以系統加速和修補內存錯誤。目前最新的版本是NU 4.5FOR 9X、NU2 FOR NT等。
Tiramint
:最為出色的災難恢復工具之一,有NTFS、FAT32、FAT16、NOVELL4種版本。生成急救軟盤(pán),可以對深度破壞的磁盤(pán)進(jìn)行交叉恢復。
4
、常用的基本操作
① 讀出主引導記錄:這是系統級數據恢復可能涉及最多的程序之一。
例:
DEBUG
-a100
;從此處開(kāi)始匯編
126C:0100
 mov ax,201; 讀操作一個(gè)扇區
126C:0103
 mov bx,300; 送入地址300
126C:0106
 mov cx,1;01
126C:0109
 mov dx,80;80H為硬盤(pán),頭為0
126C:010C
 int 13
126C:010E
 int 3
126C:010F
-g=100
;執行
AX=0050
  BX=0300  CX=0001  DX=0080  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=126C
  ES=126C  SS=126C  CS=126C  IP=010E   NV UP EI PL NZ NA PO NC
這里用了I/O中斷13,涉及的寄存器含義為
ah,
操作方式,02H為讀,03H為寫(xiě)
al,
送扇區數
bx,
送準備裝入扇區的內存偏移地址
cx
送從哪一道哪一扇區開(kāi)始,我們一般依靠改換CX來(lái)讀寫(xiě)不同邏輯盤(pán)某個(gè)邏輯扇區。dx,送盤(pán)符和頭數
INT
 3是斷點(diǎn)中斷,使程序運行到此停止。
② 顯示引導區內容:我們把扇區讀到某個(gè)內存地址并不是目的。而是為了看到他的內容,在DEBUGD命令可以方便的查看內存單元的內容。續前例,如果我們要看到主引導區的內容的話(huà),既然裝載到300。
-d
300 l200
就可以查看了,一個(gè)引導區的映象類(lèi)似如下,可以直觀(guān)的看到我們前面所提到的代碼區和數據區。是否正常請大家自行分析一下
126C:0300
  33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C   3.....|.P.P....|
126C:0310
  BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04   ...PW...........
126C:0320
  38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B   8,|.u...........
126C:0330
  EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC   ....It.8,t....N.
126C:0340
  3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25   <.t...........F%
126C:0350
  96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05   ..F...<.t...<.t.
126C:0360
  3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4   :.u+@.F%.u$..UP.
126C:0370
  41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74   A..Xr...U.u....t
126C:0380
  0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF   ....V$.......f..
126C:0390
  0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E   .......3.......N
126C:03A0
  25 03 4E 02 CD 13 72 29-BE 46 07 81 3E FE 7D 55   %.N...r).F..>.}U
126C:03B0
  AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 27 07 EB   .tZ.......u..''..
126C:03C0
  8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB   ...R..F..V....Z.
126C:03D0
  D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 00 00 00 00   .Ot.3...........
126C:03E0
  56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4   V3.VVRP.SQ...V..
126C:03F0
  50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72   PR..B.V$..ZX.d.r
126C:0400
  0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 49   .@u.B......^..tI
126C:0410
  6E 76 61 6C 69 64 20 70-61 72 74 69 74 69 6F 6E   nvalid partition
126C:0420
  20 74 61 62 6C 65 00 45-72 72 6F 72 20 6C 6F 61    table.Error loa
126C:0430
  64 69 6E 67 20 6F 70 65-72 61 74 69 6E 67 20 73   ding operating s
126C:0440
  79 73 74 65 6D 00 4D 69-73 73 69 6E 67 20 6F 70   ystem.Missing op
126C:0450
  65 72 61 74 69 6E 67 20-73 79 73 74 65 6D 00 00   erating system..
126C:0460
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
126C:0470
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
126C:0480
  00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00   ......W.........
126C:0490
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
126C:04A0
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
126C:04B0
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01   ................
126C:04C0
  01 00 0B FE BF FC 3F 00-00 00 7E 86 BB 00 00 00   ......?...~.....
126C:04D0
  81 FD 0F FE FF FF BD 86-BB 00 E0 A9 75 00 00 00   ............u...
126C:04E0
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
126C:04F0
  00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA   ..............U.
③ 反匯編主引導區內容:判定MBR的代碼區是否正常,對于數據區的基本情況,我們可以通過(guò)直觀(guān)觀(guān)察得出,但對于存在引導型病毒,或者引導區出現異常代碼的情況,我們可能需要分析MBR中代碼區的指令。這一般要對已經(jīng)讀入內存的引導區進(jìn)行反匯編。
反匯編用指令U
續前例:
-u
300 l15D
;反匯編主引導扇區代碼區內容
126C:0300
 33C0          XOR AX,AX
126C:0302
 8ED0          MOV SS,AX
…………
126C:045C
 65            DB 65
126C:045D
 6D            DB 6D
④ 寫(xiě)內存單元,在我們的前例中,主分區類(lèi)型是0BFAT32的,假定這個(gè)類(lèi)型實(shí)際是NTFS的,我們該如何修改呢?由于主分區類(lèi)型的偏移是4C3H,我們可以用E命令寫(xiě)到內存單元中,從附表中查得NTFS的類(lèi)型為07。因此 -e4c3 7再比如說(shuō),假定我們想把無(wú)效的分區表清零,那么,我們應當用另一個(gè)命令F,這個(gè)命令可以用填充一個(gè)內存地址范圍。清零分區表的操作就是 -f4be 4ff 00,以下兩個(gè)操作也比較常見(jiàn)。
重置80標記,-e4be 80
重置55AA標記,-f4ff 4fe 55 aa
不要忘記了,此時(shí)僅僅是改動(dòng)了內存中的數據,并未寫(xiě)到硬盤(pán)上。因此需要用int 13中斷把改寫(xiě)的結果,寫(xiě)回硬盤(pán)。
  續前例,
-a100
126C:0100
 mov ax,301; 寫(xiě)操作一個(gè)扇區
-g=100
;執行
  其實(shí),我們相當于修改了剛才輸入的讀主引導扇區程序,使程序變?yōu)椤?/font>
126C:0100
 mov ax,301; 寫(xiě)操作一個(gè)扇區
126C:0103
 mov bx,300;從內存地址300
126C:0106
 mov cx,1  ;01
126C:0109
 mov dx,80 ;80H為硬盤(pán),頭為0
126C:010C
 int 13
126C:010E
 int 3     ;斷點(diǎn)
⑤ 絕對磁盤(pán)內容的讀出與寫(xiě)入
類(lèi)似操作在FAT32結構硬盤(pán)被CIH破壞的修復中比較常見(jiàn),我們后面將講到恢復的基本思路就是用第二FAT表覆蓋第一FAT表。那么無(wú)疑要讀出第二FAT表的內容,再回寫(xiě)到第一FAT表的位置上。一般的來(lái)說(shuō),大量連續扇區的讀出寫(xiě)入DISKEDIT進(jìn)行非常方便,如果用DEBUG做則要寫(xiě)一段子程序,不過(guò)程序的主要技巧就是利用int 25絕對磁盤(pán)讀中斷讀出的內容,而用int 26絕對磁盤(pán)寫(xiě)做內容寫(xiě)入。
4
、數據可恢復的前提
  有人覺(jué)得這個(gè)題目說(shuō)法比較奇特,但數據恢復,作為一個(gè)數據再現的過(guò)程,一定要解決兩個(gè)問(wèn)題,第一是從哪里恢復的問(wèn)題,第二是怎么恢復的問(wèn)題。解決了這兩個(gè)問(wèn)題,我們事實(shí)上就把握了數據恢復的全部思想脈絡(luò )。而這一部分就是從哪里恢復的問(wèn)題。
①、 有效而及時(shí)的備份中是數據恢復最可靠的來(lái)源,在許多人倡導備份到秒的今天,恐怕不會(huì )有人懷疑這點(diǎn)。而有些備份機制則是系統內建的,比如兩份FAT表。
②、 數據的實(shí)際有效性的判定是關(guān)鍵,對我們來(lái)說(shuō),硬盤(pán)無(wú)法自舉、文件找不到、文件打不開(kāi)等現象,其實(shí)并不與數據丟失畫(huà)等號。因為此時(shí)往往數據只是從操作系統的角度是一種邏輯丟失,而從物理扇區意義上,它仍然存在或部分存在。最明顯的就是文件刪除的例子,事實(shí)上,這只是把文件首字節,改為0E而已。而此時(shí)文件體依然存在。
③、 數據損壞過(guò)程的可逆性分析:對數據的改變無(wú)非兩種,取代和變換,前者是不可逆的,而后者則是可逆的。我們以殺毒為例,對于大多文件性病毒來(lái)說(shuō),那些以附加而非代換方式感染的文件型病毒,理想的殺毒過(guò)程就是感染的逆過(guò)程。這種分析也常見(jiàn)與重要信息被隱藏搬移或者被加密的情況,但分析將比較復雜。
④、 數據本身是否是標準信息:有些信息實(shí)際是通用或局部通用的,你無(wú)須考慮如何從本機搶救。只要相同或相近的系統版本就可以了,比如BOOT區、隱含扇區、WINDOWSDLL文件等等。典型的例子如分區表的代碼區,這是一段標準代碼,事實(shí)上,它就放在你的FDISK程序里面,你可以用DEBUG把他提取出來(lái)。
⑤、 數據本身是否可以由其他信息統計再生:有些信息盡管丟失了,也沒(méi)有備份。但它實(shí)際可以從其他數據中間接求得。最典型的就是主分區表中的分區信息,即使你把他清零也不必害怕,因為你可以從你幾個(gè)分區中計算再生。
⑥、 破壞的完成程度:事實(shí)上,FDISK、FORMAT都不會(huì )徹底破壞數據,一般只有低格和扇區覆蓋操作才會(huì )徹底破壞數據。但有時(shí),破壞過(guò)程或者誤操作過(guò)程會(huì )因人工終止、死機等原因不能完成。最明顯的就是CIH病毒的例子,由于CIH是以1024字節為單位覆蓋扇區,這當然是不可逆過(guò)程,于是我們最初都認為,破壞是很難恢復的,除非人工終止。事實(shí)上,當病毒覆蓋某些扇區時(shí)會(huì )與9X系統發(fā)生沖突,從而造成死機,使數據得到了保護。
硬盤(pán)數據恢復知識1

1
、 硬件或介質(zhì)問(wèn)題的情況
①、 硬盤(pán)壞:硬盤(pán)自檢不到的情況一般是硬件故障,又可分為主版的 硬盤(pán)控制器(包括IDE口)故障和硬盤(pán)本身的故障。如果問(wèn)題在主板上 ,那么數據應當沒(méi)有影響。如果出在硬盤(pán)上,也不是一定不能修復!∮脖P(pán)可能的故障又可能在控制電路、電機和磁頭以及盤(pán)片。如果是控 制電路的問(wèn)題,一般修好它,就可以讀出數據。但如果電機、磁頭和盤(pán)片故障,即使修理也要返回原廠(chǎng),數據恢復基本沒(méi)有可操作性。
②、 軟盤(pán)壞:當軟盤(pán)數據損壞時(shí),可以有幾種處理,一種是用NDD修 復,他會(huì )強制讀出你壞區中的東西,MOVE到空白扇區中,這就意味著(zhù) 如果你的磁盤(pán)很滿(mǎn)操作是沒(méi)法進(jìn)行的。你也可以用HDCOPY2.0以上版本 READ軟盤(pán),他也會(huì )進(jìn)行強讀,使讀入緩沖區的數據是完好的,你再寫(xiě) 入一張好磁盤(pán)就可以了。當然這些方式,要看盤(pán)壞的程度。如果0磁道壞,數據也并非無(wú)法搶救,早先可以通過(guò)扇區讀的方式,把后面的數 據讀出,不過(guò)一般來(lái)說(shuō),你依然可以HDCOPY來(lái)實(shí)驗。
2
、系統問(wèn)題的情況
①、 在硬盤(pán)崩潰的情況下,我們經(jīng)常要和一些提示信息打交道。我們 要了解他典型提示信息的含義,注意這些原因僅僅分析邏輯損壞而不是 硬盤(pán)物理壞道的情況。
提示信息
可能原因
參考處理
Invalid
 Partition Table
分區信息中1BE、1CE、1DE處不符合只有一個(gè)80而其他兩處為0 用工具設定,操作在前面已經(jīng)講了。
Error
 Loading Operating System
主引導程序讀BOOT5次沒(méi)成功。
重建BOOT
Missing
 Operating System DOS
引導區的55AA標記丟失
用工具設定,把前面讀寫(xiě)主引導區程序的DX=80改為180即可
Non-System
 Disk or Disk Error
BOOT
區中的系統文件名與根目錄中的前兩個(gè)文件不同
SYS
命令重新傳遞系統,
Disk
 Boot Failure
讀系統文件錯誤 SYS命令重新傳遞系統,
Invalid
 Driver Specifcationg
如果試圖切換到一個(gè)確實(shí)存在的邏輯分區出現以下信 息,說(shuō)明主分區表的分區記錄被破壞了。
根據各分區情況重建分區表,或者用自動(dòng)修復工具修 復。注意分區丟失是最常見(jiàn)的故障之一,此時(shí)不要緊 張,一般的說(shuō)此時(shí)數據并沒(méi)有問(wèn)題,如果你不了解處理 的方法。你可以選擇我前面介紹的自動(dòng)修復分區工具進(jìn) 行處理,他們大多只改寫(xiě)主分區表的數據區,不會(huì )影響 你的其他數據。特別提醒大家,這些工具有的不支持 8.4G硬盤(pán),有的與BIOS對硬盤(pán)的識別有關(guān)系。如果你 在一臺機器上不行,可以換臺BIOS不同的機器實(shí)驗一下。
Bad
 or missing command interpreter
這是說(shuō)找不到COMMAND.com,或者COMMAND文件壞了。
如果你COPY過(guò)去COMMAND文件還是如此,一般來(lái)說(shuō)是 感染了某種病毒。
Invalid
 media type reading drive X ,Abort,Retry,Fail?
該盤(pán)沒(méi)有高級格式化,或BOOT區中I/O參數表被破壞。
這里情況較多,手工處理比較復雜,特別指出,此時(shí) DISKEDIT可能無(wú)法運行,建議用工具修復。
Incorrect
 DOS Version
可能是文件版本不統一,對9X來(lái)說(shuō),有95 95osr/2,98,98 oem/2等版本,重新SYS 時(shí),不要弄錯 了。
用正確版本的啟動(dòng)盤(pán)重新SYS系統
另外說(shuō)明一下,對于比較老的機器還有1071not found rom basic、ROM BASIC OK等提示,在目前機器中以消失。另外,當 代碼區完全被破壞的情況下,系統關(guān)于無(wú)系統的提示是來(lái)自BIOS 的,這條提示與BIOS的種類(lèi)有關(guān)。另外,FDISK/MBR對代碼區的 重建是我們經(jīng)常采用的。再介紹一種比較極端的情況,就是硬盤(pán) 自檢正常,而用軟盤(pán)和硬盤(pán)都無(wú)法正常啟動(dòng)的情況,這可能是, 病毒或惡意程序利用,DOS3以上版本啟動(dòng)中都要檢索分區表這一 特點(diǎn),把分區表置為死循環(huán)。造成啟動(dòng)中死機。網(wǎng)上曾經(jīng)流傳過(guò) DOS6.22k修改方案,其實(shí)是修改西文MS-DOS6.22的 IO.SYS,把 C2 03 06 E8 0A 00 07 72 03替換為:C2 03 90 E8 0A 00 72 80 90就可以啟動(dòng)被類(lèi)似情況鎖住的硬盤(pán)。
②、 9X無(wú)法正常進(jìn)入或工作:以下僅僅是對可能的軟故障分析 ,沒(méi)有考慮硬件故障.進(jìn)入圖形界面前死機情況比較復雜,可能與加載的某些驅動(dòng)有關(guān) 可以在START MS WINDOWS時(shí),用F8激活菜單,設置為step by step ,看是哪項使系統死機。而后從CONFIG或者SYSTEM。INI中刪除進(jìn)入圖形界面后死機一般這與開(kāi)機加載的程序有關(guān)進(jìn)入安全模式(此時(shí)自動(dòng) 運行的程序將不能加載),對注冊表中的 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run* 中的鍵值和啟動(dòng)組中加載的程序進(jìn)行分析。必要的予以刪除。顯示IEXPLORE.EXE錯誤,不能進(jìn)行任何操作
可能有某個(gè)系統的動(dòng)態(tài)連接庫損壞覆蓋安裝WIN9X,或從 其他機器上COPY損壞的連接庫。(確定哪個(gè)庫損壞一般 比較困難)
頻繁出現出錯各種信息
一般是虛擬內存不足造成的看C盤(pán)是否剩余空間過(guò)少, 或者打開(kāi)的應用程序和窗口太多。
2
、 全盤(pán)崩潰和分區丟失
首先重建MBR代碼區,再根據情況修正分區表。修正分區 表的基本思路是查找以55AA為結束的扇區,再根據扇區結構 和后面是否有FAT等情況判定是否為分區表,最后計算填回, 主分區表,由于需要計算,過(guò)程比較煩瑣,就不仔細介紹了 ,希望大家用前面介紹的工具,比如NDD處理。如果文件仍然 無(wú)法讀取,要考慮用TIRAMINT等工具進(jìn)行修復。如果在FAT 表徹底崩潰的情況下,恢復某個(gè)指定文件,可以用DISKEDIT 或DEBUG查找已知信息。比如文件為文本,文件中包含“軟件 狗”,那么我我們就要把他們轉換為內碼C8 ED BC FE B9 B7 進(jìn)行查找。
3
、 文件丟失、誤格式化的情況
一般的來(lái)說(shuō),文件刪除僅僅是把文件的首字節,改為E5H,而并 不破壞本身,因此可以恢復。但由于對不連續文件要恢復文件 鏈,由于手工交叉恢復對一般計算機用戶(hù)來(lái)說(shuō)并不容易,在這 篇縮略版中就不講了,建議用工具處理,如果已經(jīng)安裝了Norton Utilities,可以用他來(lái)查找。另外,RECOVERNT 等工具,都是 恢復的利器。特別注意的是,千萬(wàn)不要在發(fā)現文件丟失后,在 本機安裝什么恢復工具,你可能恰恰把文件覆蓋掉了。特別是 你的文件在C盤(pán)的情況下,如果你發(fā)現主要文件被你失手清掉了 ,(比如你按SHIFT刪除),你應該馬上直接關(guān)閉電源,用軟盤(pán) 啟動(dòng)進(jìn)行恢復或把硬盤(pán)串接到其他有恢復工具的機器處理。誤格 式化的情況可以用等工具處理。
4
、 文件損壞的情況
一般的說(shuō),恢復文件損壞需要清楚的了解文件的結構,并不是很 容易的事情,而這方面的工具也不多。不過(guò)一般的說(shuō),文件如果 字節正常,不能正常打開(kāi)往往是文件頭損壞。
就文件恢復舉幾個(gè) 簡(jiǎn)單例子。
類(lèi)型 特征 處理
ZIP
、TGZ等壓縮包無(wú)法解壓
ZIP
文件損壞的情況下可以用一個(gè)名為ZIPFIX的工具 處理。不過(guò)如果你的文件是從FTP站點(diǎn)上下載的,那么 有可能是你沒(méi)有定義下載模式為BIN。
自解壓文件無(wú)法解壓
可能是可執行文件頭損壞,可以用對應壓縮工具按一般 壓縮文件解壓。
DBF
文件死機后無(wú)法打開(kāi)
典型的文件頭中的記錄數與實(shí)際不匹配了,把文件頭中 的記錄數向下調整,遺憾的是公式我找不到了。
5
、 硬盤(pán)被加密或變換:
此時(shí)千萬(wàn)不要FDISK/MBR,SYS等處理,否則可 能數據再也無(wú)法找回,一定要反解加密算法,或找到被移走的重要扇區!τ谀切┘用苡脖P(pán)數據的病毒,清除時(shí)一定要選擇能恢復加密數據的可 靠殺毒軟件。
6
、 文件加密后密碼遺忘:
對于很多字處理軟件的文件加密和ZIP等壓 縮包的加密,你是不能靠加密逆過(guò)程來(lái)完成的,因為那從理論上是異!±щy的。目前有一些相關(guān)的軟件,他們的思想一般都是用一個(gè)大字典集 中的數據循環(huán)用相同算法加密后與密碼的密文匹配,直到一致時(shí)則說(shuō)明 找到了密碼。你可以去尋找這些軟件,當然,有些軟件是有后門(mén)的,比 如DOS 下的WPS,Ctrl+qiubojun就是通用密碼。Undiskp的作者馮志宏 是解文件密碼的個(gè)中高手,大家不妨去他的主頁(yè)看看。
7
、 系統用戶(hù)密碼遺忘的處理:
最簡(jiǎn)單的方法就是用軟盤(pán)啟動(dòng)(NT的你也 可以把盤(pán)掛接在其他NT上),找到支持該文件系統結構的軟件(比如針對 NTNTFSDOS),利用他把密碼文件清掉、或者是COPY出密碼檔案,用破解 軟件套字典來(lái)處理。前者時(shí)間短但所有用戶(hù)信息丟失,后者時(shí)間長(cháng),但!∪怂杏脩(hù)信息。對UNIX系統,我建議你一定先做一張應急盤(pán)
硬盤(pán)數據恢復教程
前言:
此文章從google搜索經(jīng)鄙人整理而來(lái),并非本人的造詣至此,請勿聯(lián)系筆者。
硬盤(pán)數據恢復很大程度依靠運氣,無(wú)必勝把握,并且不與投入時(shí)間成正比,不要寄予太大的希望。
請勿輕易拿自己硬盤(pán)做實(shí)驗。
建議數據恢復前先用硬盤(pán)保護卡對拷到其他硬盤(pán)上做一個(gè)備份,然后修理備份。(用ghost不行)
●硬盤(pán)數據恢復,一概論
   
初買(mǎi)來(lái)一塊硬盤(pán),我們是沒(méi)有辦法使用的,你需要將它分區、格式化,然后再安裝上操作系統才可以使用。一個(gè)完整硬盤(pán)的數據應該包括五部分:MBR,DBR,FAT,DIR區和DATA區。其中只有主引導扇區是唯一的,其它的隨你的分區數的增加而增加。
   
主引導扇區
   
主引導扇區位于整個(gè)硬盤(pán)的0磁道0柱面1扇區,包括硬盤(pán)主引導記錄MBRMain Boot Record)和分區表DPTDisk Partition Table)。其中主引導記錄的作用就是檢查分區表是否正確以及確定哪個(gè)分區為引導分區,并在程序結束時(shí)把該分區的啟動(dòng)程序(也就是操作系統引導扇區)調入內存加以執行。至于分區表,很多人都知道,以80H00H為開(kāi)始標志,以55AAH為結束標志,共64字節,位于本扇區的最末端。值得一提的是,MBR是由分區程序(例如DOS Fdisk.exe)產(chǎn)生的,不同的操作系統可能這個(gè)扇區是不盡相同。如果你有這個(gè)意向也可以自己去編寫(xiě)一個(gè),只要它能完成前述的任務(wù)即可,這也是為什么能實(shí)現多系統啟動(dòng)的原因(說(shuō)句題外話(huà):正因為這個(gè)主引導記錄容易編寫(xiě),所以才出現了很多的引導區病毒)。
   
操作系統引導扇區
     OBR
OS Boot Record)即操作系統引導扇區,通常位于硬盤(pán)的0磁道1柱面1扇區(這是對于DOS來(lái)說(shuō)的,對于那些以多重引導方式啟動(dòng)的系統則位于相應的主分區/擴展分區的第一個(gè)扇區),是操作系統可直接訪(fǎng)問(wèn)的第一個(gè)扇區,它也包括一個(gè)引導程序和一個(gè)被稱(chēng)為BPBBIOS Parameter Block)的本分區參數記錄表。其實(shí)每個(gè)邏輯分區都有一個(gè)OBR,其參數視分區的大小、操作系統的類(lèi)別而有所不同。引導程序的主要任務(wù)是判斷本分區根目錄前兩個(gè)文件是否為操作系統的引導文件(例如MSDOS或者起源于MSDOSWin9x/MeIO.SYSMSDOS.SYS)。如是,就把第一個(gè)文件讀入內存,并把控制權交予該文件。BPB參數塊記錄著(zhù)本分區的起始扇區、結束扇區、文件存儲格式、硬盤(pán)介質(zhì)描述符、根目錄大小、FAT個(gè)數、分配單元(Allocation Unit,以前也稱(chēng)之為簇)的大小等重要參數。OBR由高級格式化程序產(chǎn)生(例如DOS Format.com)。
   
文件分配表
    FAT(File Allocation Table)
即文件分配表,是DOS/Win9x系統的文件尋址系統,為了數據安全起見(jiàn),FAT一般做兩個(gè),第二FAT為第一FAT的備份, FAT區緊接在OBR之后,其大小由本分區的大小及文件分配單元的大小決定。關(guān)于FAT的格式歷來(lái)有很多選擇,Microsoft DOSWindows采用我們所熟悉的FAT12、FAT16FAT32格式,但除此以外并非沒(méi)有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。
   
目錄區
    DIR
Directory即根目錄區的簡(jiǎn)寫(xiě),DIR緊接在第二FAT表之后,只有FAT還不能定位文件在磁盤(pán)中的位置,FAT還必須和DIR配合才能準確定位文件的位置。DIR記錄著(zhù)每個(gè)文件(目錄)的起始單元(這是最重要的)、文件的屬性等。定位文件位置時(shí),操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在磁盤(pán)的具體位置及大小了。在DIR區之后,才是真正意義上的數據存儲區,即DATA區。
   
數據區
    DATA
雖然占據了硬盤(pán)的絕大部分空間,但沒(méi)有了前面的各部分,它對于我們來(lái)說(shuō),也只能是一些枯燥的二進(jìn)制代碼,沒(méi)有任何意義。在這里有一點(diǎn)要說(shuō)明的是,我們通常所說(shuō)的格式化程序(指高級格式化,例如DOS下的Format程序),并沒(méi)有把DATA區的數據清除,只是重寫(xiě)了FAT表而已,至于分區硬盤(pán),也只是修改了MBROBR,絕大部分的DATA區的數據并沒(méi)有被改變,這也是許多硬盤(pán)數據能夠得以修復的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破壞的話(huà),也足夠咱們那些所謂的DIY老鳥(niǎo)們忙乎半天了……需要提醒大家的是,如果你經(jīng)常整理磁盤(pán),那么你的數據區的數據可能是連續的,這樣即使MBR/FAT/DIR全部壞了,我們也可以使用磁盤(pán)編輯軟件(比如DOS下的DiskEdit),只要找到一個(gè)文件的起始保存位置,那么這個(gè)文件就有可能被恢復(當然了,這需要一個(gè)前提,那就是你沒(méi)有覆蓋這個(gè)文件……)。
   
硬盤(pán)分區方式
   
我們平時(shí)說(shuō)到的分區概念,不外乎三種:主分區、擴展分區和邏輯分區。
   
主分區是一個(gè)比較單純的分區,通常位于硬盤(pán)的最前面一塊區域中,構成邏輯C磁盤(pán)。在主分區中,不允許再建立其它邏輯磁盤(pán)。
   
擴展分區的概念則比較復雜,也是造成分區和邏輯磁盤(pán)混淆的主要原因。由于硬盤(pán)僅僅為分區表保留了64個(gè)字節的存儲空間,而每個(gè)分區的參數占據16個(gè)字節,故主引導扇區中總計可以存儲4個(gè)分區的數據。操作系統只允許存儲4個(gè)分區的數據,如果說(shuō)邏輯磁盤(pán)就是分區,則系統最多只允許4個(gè)邏輯磁盤(pán)。對于具體的應用,4個(gè)邏輯磁盤(pán)往往不能滿(mǎn)足實(shí)際需求。為了建立更多的邏輯磁盤(pán)供操作系統使用,系統引入了擴展分區的概念。
   
所謂擴展分區,嚴格地講它不是一個(gè)實(shí)際意義的分區,它僅僅是一個(gè)指向下一個(gè)分區的指針,這種指針結構將形成一個(gè)單向鏈表。這樣在主引導扇區中除了主分區外,僅需要存儲一個(gè)被稱(chēng)為擴展分區的分區數據,通過(guò)這個(gè)擴展分區的數據可以找到下一個(gè)分區(實(shí)際上也就是下一個(gè)邏輯磁盤(pán))的起始位置,以此起始位置類(lèi)推可以找到所有的分區。無(wú)論系統中建立多少個(gè)邏輯磁盤(pán),在主引導扇區中通過(guò)一個(gè)擴展分區的參數就可以逐個(gè)找到每一個(gè)邏輯磁盤(pán)。
   
需要特別注意的是,由于主分區之后的各個(gè)分區是通過(guò)一種單向鏈表的結構來(lái)實(shí)現鏈接的,因此,若單向鏈表發(fā)生問(wèn)題,將導致邏輯磁盤(pán)的丟失。
   
數據存儲原理
   
既然要進(jìn)行數據的恢復,當然數據的存儲原理我們不能不提,在這之中,我們還要介紹一下數據的刪除和硬盤(pán)的格式化相關(guān)問(wèn)題……
   
文件的讀取
   
操作系統從目錄區中讀取文件信息(包括文件名、后綴名、文件大小、修改日期和文件在數據區保存的第一個(gè)簇的簇號),我們這里假設第一個(gè)簇號是0023。
   
操作系統從0023簇讀取相應的數據,然后再找到FAT0023單元,如果內容是文件結束標志(FF),則表示文件結束,否則內容保存數據的下一個(gè)簇的簇號,這樣重復下去直到遇到文件結束標志。
   
文件的寫(xiě)入
   
當我們要保存文件時(shí),操作系統首先在DIR區中找到空區寫(xiě)入文件名、大小和創(chuàng )建時(shí)間等相應信息,然后在Data區找到閑置空間將文件保存,并將Data區的第一個(gè)簇寫(xiě)入DIR區,其余的動(dòng)作和上邊的讀取動(dòng)作差不多。
   
文件的刪除
    Win9x
的文件刪除工作卻是很簡(jiǎn)單的,簡(jiǎn)單到只在目錄區做了一點(diǎn)小改動(dòng)——將目錄區的文件的第一個(gè)字符改成了E5就表示將改文件刪除了。
附錄:
--------------------------------------------------------------------------------
    Fdisk
Format的一點(diǎn)小說(shuō)明
   
和文件的刪除類(lèi)似,利用Fdisk刪除再建立分區和利用Format格式化邏輯磁盤(pán)(假設你格式化的時(shí)候并沒(méi)有使用/U這個(gè)無(wú)條件格式化參數)都沒(méi)有將數據從DATA區直接刪除,前者只是改變了分區表,后者只是修改了FAT表,因此被誤刪除的分區和誤格式化的硬盤(pán)完全有可能恢復……

   
系統啟動(dòng)流程
   
各種不同的操作系統啟動(dòng)流程不盡相同,我們這里以Win9x/DOS的啟動(dòng)流程為例。
   
第一階段:系統加電自檢POST過(guò)程。POSTPower On Self Test的縮寫(xiě),也就是加電自檢的意思,微機執行內存FFFF0H處的程序(這里是一段固化的ROM程序),對系統的硬件(包括內存)進(jìn)行檢查。
   
第二階段:讀取分區記錄和引導記錄。當微機檢查到硬件正常并與CMOS設置相符后,按照CMOS設置從相應設備啟動(dòng)(我們這里假設從硬盤(pán)啟動(dòng)),讀取硬盤(pán)的分區記錄(DPT)和主引導記錄(MBR)。
   
第三階段:讀取DOS引導記錄。微機正確讀取分區記錄和主引導記錄后,如果主引導記錄和分區表校驗正確,則執行主引導記錄并進(jìn)一步讀取DOS引導記錄(位于每一個(gè)主分區的第一個(gè)扇區),然后執行該DOS引導記錄。
   
第四階段:裝載系統隱含文件。將DOS系統的隱含文件IO.SYS入內存,加載基本的文件系統FAT,這時(shí)候一般會(huì )出現Starting Windows 9x...的標志,IO.SYSMS.SYS讀入內存,并處理System.datUser.dat文件,加載磁盤(pán)壓縮程序。
   
第五階段:實(shí)DOS模式配置。系統隱含文件裝載完成,微機將執行系統隱含文件,并執行系統配置文件(Config.sys),加載Config.sys中定義的各種驅動(dòng)程序。
第六階段:調入命令解釋程序(Command.com)。系統裝載命令管理程序,以便對系統的各種操作命令進(jìn)行協(xié)調管理(我們所使用的Dir、Copy等內部命令就是由Command.com提供的)。
   
第七階段:執行批處理文件(Autoexec.bat)。微機將一步一步地執行批處理文件中的各條命令。
   
第八階段:加載Win.com。Win.com負責將Windows下的各種驅動(dòng)程序和啟動(dòng)執行文件加以執行,至此啟動(dòng)完畢。
●硬盤(pán)數據恢復,三文件分配表
FAT
DOS、Windows9X系統的文件尋址格式,位于DBR之后。
在解釋文件分配表的概念的時(shí)候,我們有必要談?wù)劥兀?/font>Cluster)的概念。文件占用磁盤(pán)空間,基本單位不是字節而是簇。一般情況下,軟盤(pán)每簇是1個(gè)扇區,硬盤(pán)每簇的扇區數與硬盤(pán)的總容量大小有關(guān),可能是4、8、16、32、64……同一個(gè)文件的數據并不一定完整地存放在磁盤(pán)的一個(gè)連續的區域內,而往往會(huì )分成若干段,像一條鏈子一樣存放。這種存儲方式稱(chēng)為文件的鏈式存儲。由于硬盤(pán)上保存著(zhù)段與段之間的連接信息(即FAT),操作系統在讀取文件時(shí),總是能夠準確地找到各段的位置并正確讀出。
為了實(shí)現文件的鏈式存儲,硬盤(pán)上必須準確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲后繼內容的下一個(gè)簇的簇號。對一個(gè)文件的最后一簇,則要指明本簇無(wú)后繼簇。這些都是由FAT表來(lái)保存的,表中有很多表項,每項記錄一個(gè)簇的信息。由于FAT對于文件管理的重要性,所以為了安全起見(jiàn),FAT有一個(gè)備份,即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項都標明為“未占用”,但如果磁盤(pán)有局部損壞,那么格式化程序會(huì )檢測出損壞的簇,在相應的項中標為“壞簇”,以后存文件時(shí)就不會(huì )再使用這個(gè)簇了。FAT的項數與硬盤(pán)上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見(jiàn)的是FAT16FAT32。
當一個(gè)磁盤(pán)Format后,在其邏輯0扇區(即BOOT扇區)后面的幾個(gè)扇區中存在著(zhù)一個(gè)重要的數據表—文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤(pán)類(lèi)型大小而定。顧名思義,文件分配表是用來(lái)表示磁盤(pán)問(wèn)件的空分配信息的。它不對引導區,文件目錄的信息進(jìn)行表示,也不真正存儲文件內容。
我們知道磁盤(pán)是由一個(gè)一個(gè)扇區組成的,若干個(gè)扇區合為一個(gè)簇,文件存取是以簇為單位的,哪怕這個(gè)文件只有1個(gè)字節。每個(gè)簇在文件分配表中都有對應的表項,簇號即為表項號,每個(gè)表項占1.5個(gè)字節(磁盤(pán)空間在10MB以下)或2個(gè)字節(磁盤(pán)空間在10MB以上)。為了方便起見(jiàn),以后所說(shuō)的表項都是指2個(gè)字節的。
文件分配表結構如1H表示16進(jìn)制)
1
0字節 表頭,表磁盤(pán)類(lèi)型。FFH雙面軟盤(pán),每次道8扇區FEH單面軟盤(pán),每磁道8扇區FDH雙面軟盤(pán),每磁道9扇區FCCH單面軟盤(pán),每磁道9扇區FC8H硬盤(pán)
1~2字節 (表項號1)表示第一簇狀態(tài),因第一簇被系統占據,故此兩字節為FFFFH
3~4字節 (表項號2)表示第二簇狀態(tài),若為FFFH表此簇為壞的,DOS已標記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的最后一簇;其余數字表示文件的下一個(gè)簇號,注意高字節在后,低字節在前。
5~6字節 (表項號3)表示第三簇狀態(tài),同上。
注意:
不要把表項內的數字誤認為表示當前簇號,而應是該文件的下一個(gè)簇的簇號。.高字節在后,低字節在前是一種存儲數字方式,讀出時(shí)應對其進(jìn)行調整。是如兩字節12H,34H,應調整為3412H。
文件分配表與文件目錄(FDT)相配合,可以統一管理整個(gè)磁盤(pán)的文件。它告訴系統磁盤(pán)上哪些簇是壞的或已被使用,哪些簇可以用,并存儲每個(gè)文件所使用的簇號。它是文件的“總調度師”。
DOS寫(xiě)文件時(shí),首先在文件目錄中檢查是否有相同文件名,若無(wú)則使用一個(gè)文件目錄表項,然后依次檢測FAT中的每個(gè)表項對應的簇中,同時(shí)將該簇號寫(xiě)入文件目錄表項相的26-27字節,如文件長(cháng)度不止一簇,則繼續向后尋找可用簇,找到后將其簇號寫(xiě)入上一次找到的表項中,如此直到文件結束,在最后一簇的表項里填上FFF8H,形成單向鏈表。
DOS
刪除文件時(shí)只是把文件目錄表中的該文件的表項第0個(gè)字節改為E5H,表此項已被刪除,并在文件分配表中把該文件占用的各簇的表項清0,并釋放空間。其文件的內容仍然在盤(pán)上,并沒(méi)有被真正刪除,這就是undelete.exe,unerase.exe等一類(lèi)恢復刪除工具能起作用的原因。
文件分配表在系統中的地位十分重要,用戶(hù)最好不要去修改它,以免誤操作帶來(lái)嚴重的后果。
FAT
表的定位
 硬盤(pán)分區的主要結構說(shuō)明:
(Cylinder
柱面/磁道-Side磁頭-Sector扇區地址以下簡(jiǎn)稱(chēng)為?-?-?)
《主分區》
名稱(chēng) 地址   長(cháng)度(扇區)
主引導記錄(Main Boot Record) 0-0-1 1
系統扇區(System Secotrs   0-0-2,0-0-63  62
引導扇區(Boot 0-1-1 1
   FAT16
系統中,此扇區包含BPBBIOS Parameter Block)表,描述邏輯盤(pán)結構組成,包含隱藏扇區數目(從0-1-1開(kāi)始計算)、FAT扇區數、FAT拷貝數、硬盤(pán)磁頭總數、根目錄表項最大值等。
    FAT32
系統中,BPB表的偏移與FAT16不同,但表項基本相同。整個(gè)隱藏扇區部分都作為邏輯盤(pán)的描述區域。
隱藏扇區(Hidden Secotrs:
    FAT16              0-1-1          1
    FAT32              0-1-1          32
文件分配表(File Allocation Table):
    FAT16              0-1-2         
根據邏輯盤(pán)容量變化     
    FAT32              0-1-33         
根據邏輯盤(pán)容量變化
   
說(shuō)明:
    FAT16
的每個(gè)表項由2字節(16位)組成,通常每個(gè)表項指向的簇包含64個(gè)扇區,即32K字節。
        
邏輯盤(pán)容量最大為2047MB。
    FAT32
的每個(gè)表項由4字節(32位)組成,通常每個(gè)表項指向的簇包含8個(gè)扇區,即4K字節。
        
邏輯盤(pán)容量最小為512MB。
   
對于C分區,在MBR的偏移01c2H處,FAT1606H,FAT320CH。
        
有關(guān)計算公式為:
        
每個(gè)扇區長(cháng)度=512字節
        
總簇數=邏輯盤(pán)容量/簇容量
        
總簇數=FAT表長(cháng)度(字節)/每個(gè)表項長(cháng)度(字節)-2
        FAT
表長(cháng)度=邏輯盤(pán)容量/簇容量*每個(gè)表項長(cháng)度
    FAT
表的開(kāi)始由介質(zhì)描述符+一串“已占用”標志組成:
        FAT16
硬盤(pán)----F8 FF FF 7F
        FAT32
硬盤(pán)----F8 FF FF 0F FF FF FF 0F
   
每個(gè)有效的FAT結構區包含兩個(gè)完全相同的拷貝:FAT1、FAT2
文件目錄表(File Directory Table),即根目錄區,又稱(chēng)為ROOT:
   
緊跟在FAT2的下一個(gè)扇區,長(cháng)度為32個(gè)扇區(256個(gè)表項)。如果支持長(cháng)文件名,則每個(gè)表項
   
64個(gè)字節,其中,前32個(gè)字節為長(cháng)文件鏈接說(shuō)明;后32個(gè)字節為文件屬性說(shuō)明,包括文件長(cháng)
   
度、起始地址、日期、時(shí)間等。如不支持長(cháng)文件名,則每個(gè)表項為32個(gè)字節的屬性說(shuō)明。
數據區(Data Area:
   
緊跟在FDT的下一個(gè)扇區,直到邏輯盤(pán)的結束地址。
《擴展分區》
名稱(chēng) 地址 長(cháng)度(扇區)
擴展分區(Extend Partition ?-y-1 1
系統扇區(System Secotrs ?-y-2,?-y-63 62
引導扇區(Boot ?-(y+1)-1  1
其后各項與主分區相同……


FAT
表引起的讀寫(xiě)故障

硬盤(pán)文件分配表龐大無(wú)法手工修復,只能依靠工具。
FAT
表記錄著(zhù)硬盤(pán)數據的存儲地址,每一個(gè)文件都有一組FAT鏈指定其存放的簇地址。FAT表的損壞意味著(zhù)文件內容的丟失。慶幸的是DOS系統本身提供了兩個(gè)FAT表,如果目前使用的FAT表?yè)p壞,可用第二個(gè)進(jìn)行覆蓋修復。但由于不同規格的磁盤(pán)其FAT表的長(cháng)度及第二個(gè)FAT表的地址也是不固定的,所以修復時(shí)必須正確查找其正確位置,一些工具軟件如NU等本身具有這樣的修復功能,使用也非常的方便。采用DEBUG也可實(shí)現這種操作,即采用其m命令把第二個(gè)FAT表移到第一個(gè)表處即可(不建議這樣做)。如果第二個(gè)FAT表也損壞了,則也無(wú)法把硬盤(pán)恢復到原來(lái)的狀態(tài),但文件的數據仍然存放在硬盤(pán)的數據區中,可采用CHKDSKSCANDISK命令進(jìn)行修復,最終得到*.CHK文件,這便是丟失FAT鏈的扇區數據。如果是文本文件則可從中提取出完整的或部分的文件內容。

軟盤(pán)文件分配FAT表修復
在運行某個(gè)程序時(shí),有時(shí)會(huì )在屏幕上看到:File allocation table bad,drive A(文件分配表壞)的錯誤信息,導致程序不能正常運行。
  
我們知道,在磁盤(pán)中有兩個(gè)文件分配表:FAT1FAT2。FAT1用于日常工作,FAT2備用。因此,在FAT1損壞時(shí),可用FAT2表修補。
  
具體方法是:運行DEBUG,將FAT2讀入緩沖區,用緩沖區的FAT2數據覆蓋磁盤(pán)中的FAT1。
  
例:修復31.44M軟盤(pán),在A
  
DOS環(huán)境下進(jìn)入debug環(huán)境
  
在“-”提示符下進(jìn)行如下操作:
        -L 100 0 0A 9
        -W 100 0 1 9
        -q
  
其它類(lèi)型的軟盤(pán)的修復方法參照下表進(jìn)行。
起止邏輯扇區 5.25"低密 5.25"高密 3.5"低密 3.5"高密
BOOT
0 0 0 0
FAT1 1-2 1-7 1-3 1-9
FAT2 3-4 8-0EH 4-6 0A-12H
  
例如我們要修復5.25"高密軟盤(pán)的FAT,則需將上述參數改為:
        -L 100 0 8 7
        -W 100 0 1 7
        -q
●硬盤(pán)數據恢復,二分區表的推算
Master Boot Record

The Master Boot Record is located at the physical beginning of a hard disk, editable using the Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent, identically structured partition records. Finally, the hexadecimal signature 55AA completes a valid Master Boot Record.


硬盤(pán)的主引導記錄在硬盤(pán)的0磁頭0柱面1扇區。
主引導記錄由三部分組成:
(1)
主引導程序;
(2)
四個(gè)分區表;
(3)
主引導記錄有效標志字。
詳見(jiàn)表1。
[
1主引導記錄結構]

   
0000H
00D9H 主引導記錄代碼區
00DAH
01BDH 空閑區
01BEH
01CDH 分區1結構信息
01CEH
01DDH 分區2結構信息
01DEH
01EDH 分區3結構信息
01EEH
01FDH 分區4結構信息
01FEH
01FFH 55 AAH

說(shuō)明:
A,
分區表自偏移1BEH處開(kāi)始,分區表共64個(gè)字節,表中可填入四個(gè)分區信息,每十六個(gè)字節為一個(gè)分區說(shuō)明項,這16個(gè)字節含義詳見(jiàn)表2。
B,
必須注意:扇區號的高二位占用柱面號所在字節的最高二位,即柱面號為10位,扇區號6位。
The format of a partition record is as follows:

Offset Size Description
0  8 bit A value of 80 designates an active partition.

1  8 bit Partition start head
2  8 bit Partition start sector (bits 0-5)
3  8 bit Partition start track (bits 8,9 in bits 6,7 of sector)
4  8 bit Operating system indicator
5  8 bit Partition end head
6  8 bit Partition end sector (bits 0-5)
7  8 bit Partition end track (bits 8,9 in bits 6,7 of sector)
8  32 bit Sectors preceding partition
C  32 bit Length of partition in sectors

Operating system indicators: (hexadecimal, incomplete list)

00 Empty partition-table entry
01 DOS FAT12
04 DOS FAT16 (up to 32 MB)
05 DOS 3.3+ extended partition
06 DOS 3.31+ FAT16 (over 32 MB)
07 OS/2 HPFS, Windows NT NTFS, Advanced Unix
08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive
09 AIX data partition
0A OS/2 Boot Manager
0B Windows 95+ FAT32
0C Windows 95+ FAT32 (using LBA-mode INT 13 extensions)
0E DOS FAT16 (over 32 MB, using INT 13 extensions)
0F Extended partition (using INT 13 extensions)
17 Hidden NTFS partition

1B Hidden Windows 95 FAT32 partition
1C Hidden Windows 95 FAT32 partition (using LBA-mode INT 13 extensions)
1E Hidden LBA VFAT partition
42 Dynamic disk volume
50 OnTrack Disk Manager, read-only partition
51 OnTrack Disk Manager, read/write partition
81 Linux
82 Linux Swap partition, Solaris (Unix)
83 Linux native file system (ext2fs/xiafs)
85 Linux EXT
86 FAT16 volume/stripe set (Windows NT)
87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe set

BE Solaris boot partition
C0 DR-DOS/Novell DOS secured partition
C6 Corrupted FAT16 volume/stripe set (Windows NT)
C7 Corrupted NTFS volume/stripe set
F2 DOS 3.3+ secondary partition


[
2分區結構信息]
偏移 長(cháng)度    含義
00H
 1   活動(dòng)分區指示符,該值為80H表示為可自舉分區(僅有一個(gè)),該值為00H表示其余分區。
01H
 1   分區起始磁頭號。
02H
 1   6位是分區開(kāi)始的扇區,高2位是分區開(kāi)始的柱面的頭兩位。
03H
 1   分區開(kāi)始的起始柱面號的低8位。
04H
 1   系統標志,該值為01H表示采用12FAT格式的DOS 分區,該值04H表示采用16FAT格式的DOS分區,該值為05H表示為擴展DOS分區,為06H表示為DOS系統。
05H
 1   分區終止頭號
06H
 1   6位為分區結束的扇區號,頭2位為結束柱面號的前2位。
07H
  1   分區結束柱面號的低8位。
08H
 4   本分區前的扇區數,低位字節在 前。
0CH
 4   本分區總的扇區數,低位字節在前。

重要公式:
02H
X,03HY。柱面=(X>>6)*16^2+Y;
以我的硬盤(pán)為例:
有九個(gè)可用分區,二個(gè)不可用分區;
兩個(gè)Primary NTFS分區,第二個(gè)為active;
七個(gè)Extened 分區,第五個(gè)為NTFS其他為FAT32.
.
主分區表數據:位置cylinder0, head 0,sector1
偏移 0 1 2 3 4 5 6 7  8 9 A B C D E F
0 33 C0 8E D0 BC 00 7C FB  50 07 50 1F FC BE 1B 7C
1 BF 1B 06 50 57 B9 E5 01  F3 A4 CB BE BE 07 B1 04
2 38 2C 7C 09 75 15 83 C6  10 E2 F5 CD 18 8B 14 8B
3 EE 83 C6 10 49 74 16 38  2C 74 F6 BE 10 07 4E AC
4 3C 00 74 FA BB 07 00 B4  0E CD 10 EB F2 89 46 25
5 96 8A 46 04 B4 06 3C 0E  74 11 B4 0B 3C 0C 74 05
6 3A C4 75 2B 40 C6 46 25  06 75 24 BB AA 55 50 B4
7 41 CD 13 58 72 16 81 FB  55 AA 75 10 F6 C1 01 74
8 0B 8A E0 88 56 24 C7 06  A1 06 EB 1E 88 66 04 BF
8 0A 00 B8 01 02 8B DC 33  C9 83 FF 05 7F 03 8B 4E
9 25 03 4E 02 CD 13 72 29  BE 59 07 81 3E FE 7D
55
A AA 74 5A 83 EF 05 7F DA  85 F6 75 83 BE 2E 07 EB
B 8A 98 91 52 99 03 46 08  13 56 0A E8 12 00 5A EB
C D5 4F 74 E4 33 C0 CD 13  EB B8 00 00 80 24 45 00
D 56 33 F6 56 56 52 50 06  53      
1B                00 00
1C 01 46 07 FE 7F 1E C6 28  11 00 99 31 35 00 80 00
1D 41 30 07 FE 7F B2 30 85  4A 00 C3 1C 20 00 00 00
1E 41 B3 0F FE FF FF F3 A1  6A 00 08 FE F7 01 00 00
1F 00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 AA

主分區表分析:
Master bootstrap loader code0000H
00D9H  33 C0 8E D0 BC 00 7C FB 50 。。。主引導記錄代碼,表示住分區表
  01BEH
01CDH 分區1結構信息multi(0)disk(0)rdisk(0)partition(0)知該分區Boot Sector位于:起始磁頭為0頭,起始柱面為70D,起始扇區為1扇區。
  01CEH
01DDH 分區2結構信息 multi(0)disk(0)rdisk(0)partition(1)活動(dòng)分區指示符為80H,表示該分區為可自舉分區。系統標志為07表示OS/2 HPFS, Windows NT NTFS, Advanced Unix系統。知該分區Boot Sector位于:起始磁頭為0頭,起始柱面為304D,起始扇區為1扇區。
  01DEH
01EDH 分區3結構信息Extended partition系統標志字節為0F,說(shuō)明是擴展分區Extended partition (using INT 13 extensions)。從擴展分區說(shuō)明項知下一個(gè)分區表位于:起始磁頭為0頭,起始柱面為435D,起始扇區為1扇區。
  01EEH
01FDH 分區4結構信息分區說(shuō)明項數據均為00H沒(méi)有定義。
  01FEH
01FFH 55 AAH 主引導記錄有效標志
擴展分區一分區表數據:位置cylinder435D, head 0,sector1
偏移 0 1 2 3 4 5 6 7  8 9 A B C D E F
0 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
1B                00 00
1C 41 B3 0B FE FF 08 3F 00   00 00 97 D5 53 00 00 00
1D C1 09 05 FE FF FF D6 D5   53 00 D6 D5 53 00 00 00
1E 00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00
1F 00 00 00 00 00 00 00 00   00 00 00 00 00 00 55 AA

擴展分區表分析:
  01BEH
01CDH 分區1結構信息multi(0)disk(0)rdisk(0)partition(3)知該分區位于:起始磁頭為1頭,起始柱面為435D,起始扇區為1扇區(分區表占用磁頭0)。系統標志字0BH表示 Windows 95+ FAT32
  01BEH
01CDH 分區1結構信息系統標志字節為05H,說(shuō)明是擴展DOS分區。于是知下一個(gè)分區表位于:起始磁頭為0頭,起始柱面為777D,起始扇區為1扇區。
Partition Table Entry #3
數據均為00H沒(méi)有定義。
Partition Table Entry #4
數據均為00H沒(méi)有定義。
其他擴展分區同理。


---------------------------------------------------------------------------------------------------------------------
附錄:
   Fdisk
MBR參數
   MBR
FDISK.COM(EXE) 一項未公布的開(kāi)關(guān),隱含于 MS DOS 3.30,延至 MS DOS 8.0(Windows ME)。實(shí)踐中,有籍以修復主引導信息,重點(diǎn)在主引導程序。
   FDISK /MBR
命令流程的分支有二:
  
讀得主引導扇區檢驗標志() AA55h,操作單一,僅向主引導扇區位移 01BDH 寫(xiě)入當前系統固有的主引導程序,安全可靠。
  
難能可貴的是它不觸動(dòng)主引導信息其余模塊(分區表、檢驗標志),以及隨后的 DOS 引導信息、文件分配表、根目錄,省事許多。檢出檢驗標志非 AA55h,寫(xiě)主引導程序、初始化分區表及登錄檢驗標志,在 MS DOS 7.0 8.0 環(huán)境中,常規以系統支持的最大容量分配給基本 DOS 分區的方式登錄分區表。分區表初始化(可能幸存的分區表被清除)的后果不難想象; 目前硬盤(pán)大都設置有其它分區,即使在高版本 DOS 環(huán)境中運作,常規建立的分區表每難能符合實(shí)際需求,后續工作量也相當可觀(guān)。
  
不過(guò),它也不觸動(dòng)位于其后的 DOS 引導信息、文件分配表及根目錄,高版本 FDISK /MBR 命令適用于修復僅設基本 DOS 分區的硬盤(pán)分區表及檢驗標志受損,或主引導信息全毀。
  
可見(jiàn),在運行 FDISK /MBR 命令之前,需查明檢驗標志是否 AA55h,酌情處理,切忌盲動(dòng)。
  
經(jīng)由 DOS 軟盤(pán)引導,認硬盤(pán),檢驗標志必健在。
  
另外,在 FDSIK 主菜單中選 4. Display Partition Information,列出分區信息,進(jìn)一步證實(shí)檢驗標志正常; 若現 No partitition defined,檢驗標志每變異,而分區表或許尚健在。
●硬盤(pán)數據恢復,深入邏輯分區
現在深入每一個(gè)邏輯分區。邏輯分區結構如下:

FAT12/16
Logical sector =0 Logical sector=1(Floppy disk=1~9) Logical sector=1+sectors_per_FAT(Floppydisk=10~18) Logical sector=1+sectors_per_FAT*2(Floppy disk=19~32) Logical sector=1+sectors_per_FAT*2+sectors_of_rootdirectories(Floppy disk=33~)
DOS Boot Sector FAT1 FAT2 ROOT Directory Data area(where files and subdirectories are stored)

FAT32
Usually 32 sectors Logical sector =0032h Logical sector =0032h+ 2*sectors_per_FAT
DOS Boot Recore 3 Sectors Reserved sectors Copy of record Reserve sectors FAT1 FAT2 Data area(where files and all bdirectories are stored)


在邏輯分區當中用邏輯的clustersector。換算關(guān)系為:
cluster=logical_sector/sectors_per_cluster;
這里sectors_per_cluster是在BIOS Parameter Block里得到的。
Sector=( logical_sector mod sectors_per_track)+1;
Head=( logical_sector / sectors_per_track)mod total_heads;
Cylinder= logical_sector(sectors_per_track* total_heads);
logical_sector=( cluster-2)*sectors_per_cluster+sector_of_file_area_offset;
logical_sector=(sector-1)+head*sector_per_track+sector*sector_per_track*heads;
每個(gè)扇區長(cháng)度=512字節
總簇數=邏輯盤(pán)容量/簇容量
總簇數=FAT表長(cháng)度(字節)/每個(gè)表項長(cháng)度(字節)-2
FAT
表長(cháng)度=邏輯盤(pán)容量/簇容量*每個(gè)表項長(cháng)度

Dos
引導記錄塊位于邏輯0 sector中包含三部分:
1 磁盤(pán)IO參數表BPB;
2 磁盤(pán)基數表;
3 引導區代碼。

FAT16
BPBBIOS Parameter Block)表,描述邏輯盤(pán)結構組成,包含隱藏扇區數目(從0-1-1開(kāi)始計算)、FAT扇區數、FAT拷貝數、硬盤(pán)磁頭總數、根目錄表項最大值等。FAT32系統中,BPB表的偏移與FAT16不同,但表項基本相同。整個(gè)隱藏扇區部分都作為邏輯盤(pán)的描述區域。
典型的primary partion 的磁盤(pán)IO參數表BPB:

典型的 logical partion 磁盤(pán)參數表:




硬盤(pán)BPB主要結構說(shuō)明:
(Cylinder
柱面/磁道-Side/Head磁頭-Sector扇區地址以下簡(jiǎn)稱(chēng)為?-?-?)
主分區
名稱(chēng) 地址   長(cháng)度(扇區)
主引導記錄(Main Boot Record) 0-0-1 1
系統扇區(System Secotrs  0-0-2,0-0-63  62
引導扇區(Boot 0-1-1 1
  
擴展分區  
名稱(chēng) 地址 長(cháng)度(扇區)
擴展分區(Extend Partition ?-y-1 1
系統扇區(System Secotrs ?-y-2,?-y-63 62
引導扇區(Boot ?-(y+1)-1  1
其后各項與主分區相同……  

隱藏扇區(Hidden Secotrs:
    FAT16              0-1-1          1
    FAT32              0-1-1          32
文件分配表(File Allocation Table):
    FAT16              0-1-2         
根據邏輯盤(pán)容量變化     
    FAT32              0-1-33         
根據邏輯盤(pán)容量變化
   
說(shuō)明:
FAT16
的每個(gè)表項由2字節(16位)組成,通常每個(gè)表項指向的簇包含64個(gè)扇區,即32K字節。 邏輯盤(pán)容量最大為2047MB。
FAT32
的每個(gè)表項由4字節(32位)組成,通常每個(gè)表項指向的簇包含8個(gè)扇區,即4K字節。邏輯盤(pán)容量最小為512MB。
對于C分區,在MBR的偏移01c2H處,FAT1606H,FAT320CH。

  
FAT
DOS、Windows9X系統的文件尋址格式,位于DBR之后。
在解釋文件分配表的概念的時(shí)候,我們有必要談?wù)劥兀?/font>Cluster)的概念。文件占用磁盤(pán)空間,基本單位不是字節而是簇。一般情況下,軟盤(pán)每簇是1個(gè)扇區,硬盤(pán)每簇的扇區數與硬盤(pán)的總容量大小有關(guān),可能是4、8、16、32、64……同一個(gè)文件的數據并不一定完整地存放在磁盤(pán)的一個(gè)連續的區域內,而往往會(huì )分成若干段,像一條鏈子一樣存放。這種存儲方式稱(chēng)為文件的鏈式存儲。由于硬盤(pán)上保存著(zhù)段與段之間的連接信息(即FAT),操作系統在讀取文件時(shí),總是能夠準確地找到各段的位置并正確讀出。
為了實(shí)現文件的鏈式存儲,硬盤(pán)上必須準確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲后繼內容的下一個(gè)簇的簇號。對一個(gè)文件的最后一簇,則要指明本簇無(wú)后繼簇。這些都是由FAT表來(lái)保存的,表中有很多表項,每項記錄一個(gè)簇的信息。由于FAT對于文件管理的重要性,所以為了安全起見(jiàn),FAT有一個(gè)備份,即在原FAT的后面再建一個(gè)同樣的FAT。初形成的FAT中所有項都標明為“未占用”,但如果磁盤(pán)有局部損壞,那么格式化程序會(huì )檢測出損壞的簇,在相應的項中標為“壞簇”,以后存文件時(shí)就不會(huì )再使用這個(gè)簇了。FAT的項數與硬盤(pán)上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見(jiàn)的是FAT16FAT32。
當一個(gè)磁盤(pán)Format后,在其邏輯0扇區(即BOOT扇區)后面的幾個(gè)扇區中存在著(zhù)一個(gè)重要的數據表—文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤(pán)類(lèi)型大小而定。顧名思義,文件分配表是用來(lái)表示磁盤(pán)問(wèn)件的空分配信息的。它不對引導區,文件目錄的信息進(jìn)行表示,也不真正存儲文件內容。
我們知道磁盤(pán)是由一個(gè)一個(gè)扇區組成的,若干個(gè)扇區合為一個(gè)簇,文件存取是以簇為單位的,哪怕這個(gè)文件只有1個(gè)字節。每個(gè)簇在文件分配表中都有對應的表項,簇號即為表項號,每個(gè)表項占1.5個(gè)字節(磁盤(pán)空間在10MB以下)或2個(gè)字節(磁盤(pán)空間在10MB以上)。為了方便起見(jiàn),以后所說(shuō)的表項都是指2個(gè)字節的。
FAT
表的開(kāi)始由介質(zhì)描述符+一串“已占用”標志組成:
FAT16
硬盤(pán)----F8 FF FF 7F
    FAT32
硬盤(pán)----F8 FF FF 0F FF FF FF 0F
   
每個(gè)有效的FAT結構區包含兩個(gè)完全相同的拷貝:FAT1、FAT2
文件分配表結構如1H表示16進(jìn)制)
1
0字節 表頭,表磁盤(pán)類(lèi)型。FFH雙面軟盤(pán),每次道8扇區FEH單面軟盤(pán),每磁道8扇區FDH雙面軟盤(pán),每磁道9扇區FCCH單面軟盤(pán),每磁道9扇區FC8H硬盤(pán)
1~2字節 (表項號1)表示第一簇狀態(tài),因第一簇被系統占據,故此兩字節為FFFFH
3~4字節 (表項號2)表示第二簇狀態(tài),若為FFFH表此簇為壞的,DOS已標記為不能用;0000H表示此簇為空,可以用;FFF8H表不能示該簇為文件的最后一簇;其余數字表示文件的下一個(gè)簇號,注意高字節在后,低字節在前。
5~6字節 (表項號3)表示第三簇狀態(tài),同上。
注意:
不要把表項內的數字誤認為表示當前簇號,而應是該文件的下一個(gè)簇的簇號。.高字節在后,低字節在前是一種存儲數字方式,讀出時(shí)應對其進(jìn)行調整。是如兩字節12H,34H,應調整為3412H。
文件分配表與文件目錄(FDT)相配合,可以統一管理整個(gè)磁盤(pán)的文件。它告訴系統磁盤(pán)上哪些簇是壞的或已被使用,哪些簇可以用,并存儲每個(gè)文件所使用的簇號。它是文件的“總調度師”。
DOS寫(xiě)文件時(shí),首先在文件目錄中檢查是否有相同文件名,若無(wú)則使用一個(gè)文件目錄表項,然后依次檢測FAT中的每個(gè)表項對應的簇中,同時(shí)將該簇號寫(xiě)入文件目錄表項相的26-27字節,如文件長(cháng)度不止一簇,則繼續向后尋找可用簇,找到后將其簇號寫(xiě)入上一次找到的表項中,如此直到文件結束,在最后一簇的表項里填上FFF8H,形成單向鏈表。
DOS
刪除文件時(shí)只是把文件目錄表中的該文件的表項第0個(gè)字節改為E5H,表此項已被刪除,并在文件分配表中把該文件占用的各簇的表項清0,并釋放空間。其文件的內容仍然在盤(pán)上,并沒(méi)有被真正刪除,這就是undelete.exe,unerase.exe等一類(lèi)恢復刪除工具能起作用的原因。
文件分配表在系統中的地位十分重要,用戶(hù)最好不要去修改它,以免誤操作帶來(lái)嚴重的后果。
典型的FAT32:
F8 FF FF FF FF FF FF FF 96 C4 00 00 FF FF FF 0F
FF FF FF 0F 06 00 00 00 FF FF FF 0F 08 00 00 00
09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 00
0D 00 00 00 0E 00 00 00 0F 00 00 00 10 00 00 00
FF FF FF 0F 00 00 00 00 FF FF FF 0F 14 00 00 00
15 00 00 00 FF FF FF 0F FF FF FF 0F FF FF FF 0F
19 00 00 00 1A 00 00 00 1B 00 00 00 FF FF FF 0F
00 00 00 00 1E 00 00 00 FF FF FF 0F 20 00 00 00
FF FF FF 0F 22 00 00 00 23 00 00 00 24 00 00 00
25 00 00 00 26 00 00 00 27 00 00 00 28 00 00 00


   
文件目錄表(File Directory Table),即根目錄區,又稱(chēng)為ROOT:
   
緊跟在FAT2的下一個(gè)扇區,長(cháng)度為32個(gè)扇區(256個(gè)表項)。如果支持長(cháng)文件名,則每個(gè)表項為64個(gè)字節,其中,前32個(gè)字節為長(cháng)文件鏈接說(shuō)明;后32個(gè)字節為文件屬性說(shuō)明,包括文件長(cháng)度、起始地址、日期、時(shí)間等。如不支持長(cháng)文件名,則每個(gè)表項為32個(gè)字節的屬性說(shuō)明。
值得注意的是:
1,FAT32
沒(méi)有儲存目錄的目錄區,而 FAT16儲存根目錄并把子目錄放到數據區。
  2,
表示目錄的目錄項指出根目錄地址同時(shí)長(cháng)度字節為0,表示文件的目錄項指出數據地址。
典型的FAT32根目錄:
30 30 30 30 30 30 20 20 20 20 20 10 00 12 3C 7C
39 2B 39 2B 05 00 3D 7C 39 2B 3A 34 00 00 00 00
               
44 4D 32 4B 44 49 53 4B 49 4D 47 20 00 96 DB 40
39 2B 39 2B 0A 00 DC 40 39 2B 88 02 5B 72 13 00
               
42 49 4E 42 49 4E 20 20 20 20 20 08 00 00 00 00
00 00 00 00 00 00 47 65 09 2B 00 00 00 00 00 00



000000
子目錄
注意OS7前的怪字符為E5H,表示被刪除,被刪除文件仍舊能夠找到開(kāi)始簇,數據恢復就依靠這一特點(diǎn)。
數據區(Data Area:    緊跟在FDT的下一個(gè)扇區,直到邏輯盤(pán)的結束地址。
由上圖可以想到,即使目錄被破壞仍舊可能從磁盤(pán)里把信息讀出。
到現在為止,硬盤(pán)數據結構的理論部分已經(jīng)講完。
  
數據恢復主要是手動(dòng)找出FAT、目錄、數據的對應關(guān)系或直接找到數據,現在已經(jīng)有完善的磁盤(pán)編輯器幫助我們做到這一點(diǎn),使工作大大簡(jiǎn)化了。
有只能化的恢復工具能不依靠FAT而恢復被刪除文件,比如RECOVERNT,估計是依靠Win2000的文件使用記錄。這種方法在沖啟動(dòng)之前恢復文件的
推薦
cjx 發(fā)表于 2010-7-25 13:26:25 | 只看該作者 來(lái)自 中國山西晉城
新手路過(guò)學(xué)習一下
推薦
datarecovery 發(fā)表于 2013-8-22 21:38:31 | 只看該作者 來(lái)自 中國江蘇南京
好貼。學(xué)習過(guò)計算機硬件,懂點(diǎn)匯編看起來(lái)會(huì )容易點(diǎn)。
推薦
pjy5272 發(fā)表于 2014-9-10 11:43:21 | 只看該作者 來(lái)自 中國山東濟南
謝謝,論壇中多些您這樣的,那就太好了!學(xué)習了
5#
廣州修機手 發(fā)表于 2010-7-18 17:20:09 | 只看該作者 來(lái)自 中國廣東廣州
哥,你太猛了,發(fā)這么長(cháng)
6#
jiade5d2 發(fā)表于 2010-7-18 21:08:03 | 只看該作者 來(lái)自 中國天津
看過(guò)類(lèi)似的書(shū)就是沒(méi)看懂還是用軟件恢復吧,謝謝樓主分享
7#
648912879 發(fā)表于 2010-7-18 23:39:33 | 只看該作者 來(lái)自 中國四川成都
樓主 厲害哦   我以前 跟到我師傅學(xué)用 WINHEX的 時(shí)候 他講的都沒(méi)你那么詳細   不過(guò)后面還是沒(méi)學(xué)會(huì ) 太復雜了      現在有了 這篇 帖子 可以自學(xué)了   在此 謝謝 樓主的 分享 和講解
8#
750001 發(fā)表于 2010-7-19 22:18:57 | 只看該作者 來(lái)自 中國北京
說(shuō)的很詳細 頂一下
     
9#
bing2880 發(fā)表于 2010-7-23 09:29:16 | 只看該作者 來(lái)自 中國河北張家口
真的不錯,這樣的好人怎么這么少

     
10#
阿玉 發(fā)表于 2010-7-24 13:58:05 | 只看該作者 來(lái)自 中國廣東廣州
的確不錯哦唉可惜我看不懂
11#
佳琪寶寶 發(fā)表于 2010-7-24 18:35:28 | 只看該作者 來(lái)自 中國山東濱州
太專(zhuān)業(yè)了,學(xué)習學(xué)習
12#
wenlong123 發(fā)表于 2010-7-25 11:31:01 | 只看該作者 來(lái)自 中國廣東惠州
太專(zhuān)業(yè)了,學(xué)習學(xué)習
13#
nobody 發(fā)表于 2010-7-26 17:05:27 | 只看該作者 來(lái)自 中國浙江杭州
專(zhuān)業(yè)是專(zhuān)業(yè),感覺(jué)好難好復雜呀,沒(méi)有簡(jiǎn)單點(diǎn)的嗎
14#
kaiyikj 發(fā)表于 2010-7-26 18:40:00 | 只看該作者 來(lái)自 中國云南曲靖
好好好,學(xué)習了
15#
lool  | 發(fā)表于 2010-7-27 11:15:55 | 只看該作者 來(lái)自 中國四川瀘州
學(xué)過(guò)WINHEX的就可以看得懂。如果看了這篇文章一定對WINHEX有更深的了解。
16#
li4ming 發(fā)表于 2010-7-28 05:34:59 | 只看該作者 來(lái)自 中國安徽銅陵
分析的很透徹
17#
li98816 發(fā)表于 2010-7-28 07:48:36 | 只看該作者 來(lái)自 中國天津
寫(xiě)的真詳細
18#
10559656 發(fā)表于 2010-7-28 16:22:32 | 只看該作者 來(lái)自 中國浙江臺州
太專(zhuān)業(yè)了吧!這些太深奧了 。
19#
wspbyt 發(fā)表于 2010-7-29 12:16:20 | 只看該作者 來(lái)自 中國遼寧大連
kanbumingbai
     
20#
ldgname 發(fā)表于 2010-7-29 13:51:15 | 只看該作者 來(lái)自 中國廣東廣州
寫(xiě)得很好,繼續發(fā)揚
21#
fyywx 發(fā)表于 2010-7-30 13:57:31 | 只看該作者 來(lái)自 中國浙江嘉興
好東西學(xué)習了
22#
619878768 發(fā)表于 2010-7-31 10:01:50 | 只看該作者 來(lái)自 中國廣東東莞
很好的資金料!多謝樓主提供
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

快速回復 返回頂部 返回列表
娄烦县| 黎川县| 来凤县| 田东县| 鹰潭市| 文成县| 垫江县| 大同市| 滁州市| 紫金县| 剑河县| 玉田县| 平顺县| 永顺县| 淮安市| 盐山县| 开封市| 大城县| 巴青县| 会昌县| 大埔区| 成武县| 大关县| 枣强县| 枞阳县| 洛阳市| 随州市| 汝城县| 云梦县| 临泉县| 浮山县| 左贡县| 郴州市| 怀仁县| 绵竹市| 鄄城县| 扶风县| 东辽县| 桐庐县| 延寿县| 大庆市|