硬盤數據恢復教程.doc_第1頁
硬盤數據恢復教程.doc_第2頁
硬盤數據恢復教程.doc_第3頁
硬盤數據恢復教程.doc_第4頁
硬盤數據恢復教程.doc_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1硬盤數據恢復教程前言:硬盤數據恢復很大程度依靠運氣,無必勝把握,并且不與投入時間成正比,不要寄予太大的希望。請勿輕易拿自己硬盤做實驗。建議數據恢復前先用硬盤保護卡對拷到其他硬盤上做一個備份,然后修理備份。(用ghost不行)硬盤數據恢復,一概論初買來一塊硬盤,我們是沒有辦法使用的,你需要將它分區、格式化,然后再安裝上操作系統才可以使用。一個完整硬盤的數據應該包括五部分:MBR,DBR,FAT,DIR 區和DATA區。其中只有主引導扇區是唯一的,其它的隨你的分區數的增加而增加。主引導扇區主引導扇區位于整個硬盤的0磁道0柱面1扇區,包括硬盤主引導記錄MBR(Main BootRecord)和分區表DPT(Disk Partition Table)。其中主引導記錄的作用就是檢查分區表是否正確以及確定哪個分區為引導分區,并在程序結束時把該分區的啟動程序(也就是操作系統引導扇區)調入內存加以執行。至于分區表,很多人都知道,以80H 或00H 為開始標志,以55AAH 為結束標志,共64 字節,位于本扇區的最末端。值得一提的是,MBR是由分區程序(例如DOS 的Fdisk.exe)產生的,不同的操作系統可能這個扇區是不盡相同。如果你有這個意向也可以自己去編寫一個,只要它能完成前述的任務即可,這也是為什么能實現多系統啟動的原因(說句題外話:正因為這個主引導記錄容易編寫,所以才出現了很多的引導區病毒)。操作系統引導扇區OBR(OS Boot Record)即操作系統引導扇區,通常位于硬盤的0磁道1 柱面1 扇區(這是對于DOS來說的,對于那些以多重引導方式啟動的系統則位于相應的主分區/擴展分區的第一個扇區),是操作系統可直接訪問的第一個扇區,它也包括一個引導程序和一個被稱為BPB(BIOS Parameter Block)的本分區參數記錄表。其實每個邏輯分區都有一個OBR,其參數視分區的大小、操作系統的類別而有所不同。引導程序的主要任務是判斷本分區根目錄前兩個文件是否為操作系統的引導文件(例如MSDOS 或者起源于MSDOS 的Win9x/Me的IO.SYS 和MSDOS.SYS)。如是,就把第一個文件讀入內存,并把控制權交予該文件。BPB 參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬盤介質描述符、根目錄大小、FAT個數、分配單元(Allocation Unit,以前也稱之為簇)的大小等重要參數。OBR由高級格式化程序產生(例如DOS 的F)。文件分配表FAT(File Allocation Table)即文件分配表,是DOS/Win9x 系統的文件尋址系統,為了數據安全起見,FAT 一般做兩個,第二FAT 為第一FAT 的備份, FAT 區緊接在OBR之后,其大小由本分區的大小及文件分配單元的大小決定。關于FAT 的格式歷來有很多選擇,Microsoft 的DOS 及Windows 采用我們所熟悉的FAT12、FAT16 和FAT32 格式,但除此以外并非沒有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文2件管理方式。目錄區DIR是Directory即根目錄區的簡寫,DIR緊接在第二FAT 表之后,只有FAT 還不能定位文件在磁盤中的位置,FAT 還必須和DIR 配合才能準確定位文件的位置。DIR 記錄著每個文件(目錄)的起始單元(這是最重要的)、文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在磁盤的具體位置及大小了。在DIR區之后,才是真正意義上的數據存儲區,即DATA區。數據區DATA 雖然占據了硬盤的絕大部分空間,但沒有了前面的各部分,它對于我們來說,也只能是一些枯燥的二進制代碼,沒有任何意義。在這里有一點要說明的是,我們通常所說的格式化程序(指高級格式化,例如DOS下的Format 程序),并沒有把DATA區的數據清除,只是重寫了FAT 表而已,至于分區硬盤,也只是修改了MBR 和OBR,絕大部分的DATA區的數據并沒有被改變,這也是許多硬盤數據能夠得以修復的原因。但即便如此,如MBR/OBR/FAT/DIR 之一被破壞的話,也足夠咱們那些所謂的DIY 老鳥們忙乎半天了需要提醒大家的是,如果你經常整理磁盤,那么你的數據區的數據可能是連續的,這樣即使MBR/FAT/DIR 全部壞了,我們也可以使用磁盤編輯軟件(比如DOS 下的DiskEdit),只要找到一個文件的起始保存位置,那么這個文件就有可能被恢復(當然了,這需要一個前提,那就是你沒有覆蓋這個文件)。硬盤分區方式我們平時說到的分區概念,不外乎三種:主分區、擴展分區和邏輯分區。主分區是一個比較單純的分區,通常位于硬盤的最前面一塊區域中,構成邏輯C磁盤。在主分區中,不允許再建立其它邏輯磁盤。擴展分區的概念則比較復雜,也是造成分區和邏輯磁盤混淆的主要原因。由于硬盤僅僅為分區表保留了64 個字節的存儲空間,而每個分區的參數占據16個字節,故主引導扇區中總計可以存儲4 個分區的數據。操作系統只允許存儲4 個分區的數據,如果說邏輯磁盤就是分區,則系統最多只允許4 個邏輯磁盤。對于具體的應用,4 個邏輯磁盤往往不能滿足實際需求。為了建立更多的邏輯磁盤供操作系統使用,系統引入了擴展分區的概念。所謂擴展分區,嚴格地講它不是一個實際意義的分區,它僅僅是一個指向下一個分區的指針,這種指針結構將形成一個單向鏈表。這樣在主引導扇區中除了主分區外,僅需要存儲一個被稱為擴展分區的分區數據,通過這個擴展分區的數據可以找到下一個分區(實際上也就是下一個邏輯磁盤)的起始位置,以此起始位置類推可以找到所有的分區。無論系統中建立多少個邏輯磁盤,在主引導扇區中通過一個擴展分區的參數就可以逐個找到每一個邏輯磁盤。需要特別注意的是,由于主分區之后的各個分區是通過一種單向鏈表的結構來實現鏈接的,因此,若單向鏈表發生問題,將導致邏輯磁盤的丟失。數據存儲原理既然要進行數據的恢復,當然數據的存儲原理我們不能不提,在這之中,我們還要介紹一下數據的刪除和硬盤的格式化相關問題文件的讀取操作系統從目錄區中讀取文件信息(包括文件名、后綴名、文件大小、修改日期和文件在數據區保存的第一個簇的簇號),我們這里假設第一個簇號是0023。操作系統從0023 簇讀取相應的數據,然后再找到FAT 的0023 單元,如果內容是文件結束標志(FF),則表示文件結束,否則內容保存數據的下一個簇的簇號,這樣重復下去直到遇到文件結束標志。3文件的寫入當我們要保存文件時,操作系統首先在DIR 區中找到空區寫入文件名、大小和創建時間等相應信息,然后在Data區找到閑置空間將文件保存,并將Data 區的第一個簇寫入DIR區,其余的動作和上邊的讀取動作差不多。文件的刪除Win9x的文件刪除工作卻是很簡單的,簡單到只在目錄區做了一點小改動將目錄區的文件的第一個字符改成了E5 就表示將改文件刪除了。附錄:-Fdisk和Format的一點小說明和文件的刪除類似,利用Fdisk 刪除再建立分區和利用Format 格式化邏輯磁盤(假設你格式化的時候并沒有使用/U這個無條件格式化參數)都沒有將數據從DATA 區直接刪除,前者只是改變了分區表,后者只是修改了FAT 表,因此被誤刪除的分區和誤格式化的硬盤完全有可能恢復系統啟動流程各種不同的操作系統啟動流程不盡相同,我們這里以Win9x/DOS的啟動流程為例。第一階段:系統加電自檢POST過程。POST是Power On Self Test的縮寫,也就是加電自檢的意思,微機執行內存FFFF0H 處的程序(這里是一段固化的ROM 程序),對系統的硬件(包括內存)進行檢查。第二階段:讀取分區記錄和引導記錄。當微機檢查到硬件正常并與CMOS設置相符后,按照CMOS設置從相應設備啟動(我們這里假設從硬盤啟動),讀取硬盤的分區記錄(DPT)和主引導記錄(MBR)。第三階段:讀取DOS引導記錄。微機正確讀取分區記錄和主引導記錄后,如果主引導記錄和分區表校驗正確,則執行主引導記錄并進一步讀取DOS 引導記錄(位于每一個主分區的第一個扇區),然后執行該DOS引導記錄。第四階段:裝載系統隱含文件。將DOS 系統的隱含文件IO.SYS 入內存,加載基本的文件系統FAT,這時候一般會出現Starting Windows 9x.的標志,IO.SYS將MS.SYS讀入內存,并處理System.dat和User.dat文件,加載磁盤壓縮程序。第五階段:實DOS模式配置。系統隱含文件裝載完成,微機將執行系統隱含文件,并執行系統配置文件(Config.sys),加載Config.sys中定義的各種驅動程序。第六階段:調入命令解釋程序(C)。系統裝載命令管理程序,以便對系統的各種操作命令進行協調管理(我們所使用的Dir、Copy等內部命令就是由C提供的)。第七階段:執行批處理文件(Autoexec.bat)。微機將一步一步地執行批處理文件中的各條命令。第八階段:加載W。W 負責將Windows 下的各種驅動程序和啟動執行文件加以執行,至此啟動完畢。4硬盤數據恢復,二分區表的推算Master Boot RecordThe Master Boot Record is located at the physical beginning of a hard disk, editable using theDisk 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 validMaster Boot Record.硬盤的主引導記錄在硬盤的0磁頭0 柱面1 扇區。主引導記錄由三部分組成:(1)主引導程序;(2)四個分區表;(3)主引導記錄有效標志字。詳見表1。表1 主引導記錄結構位 置 內 容0000H 00D9H 主引導記錄代碼區00DAH 01BDH 空閑區01BEH 01CDH 分區1 結構信息01CEH 01DDH 分區2 結構信息01DEH 01EDH 分區3 結構信息01EEH 01FDH 分區4 結構信息01FEH 01FFH 55 AAH 主 引 導 記 錄 有 效 標 志說明:A,分區表自偏移1BEH 處開始,分區表共64 個字節,表中可填入四個分區信息,每十六個字節為一個分區說明項,這16 個字節含義詳見表2。B,必須注意:扇區號的高二位占用柱面號所在字節的最高二位,即柱面號為10 位,扇區號6 位。The format of a partition record is as follows:Offset Size Description0 8 bit A value of 80 designates an active partition.1 8 bit Partition start head2 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 indicator5 8 bit Partition end head56 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 partitionC 32 bit Length of partition in sectorsOperating system indicators: (hexadecimal, incomplete list)00 Empty partition-table entry01 DOS FAT1204 DOS FAT16 (up to 32 MB)05 DOS 3.3+ extended partition06 DOS 3.31+ FAT16 (over 32 MB)07 OS/2 HPFS, Windows NT NTFS, Advanced Unix08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive09 AIX data partition0A OS/2 Boot Manager0B Windows 95+ FAT320C 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 partition1B Hidden Windows 95 FAT32 partition1C Hidden Windows 95 FAT32 partition (using LBA-mode INT 13 extensions)1E Hidden LBA VFAT partition42 Dynamic disk volume50 OnTrack Disk Manager, read-only partition51 OnTrack Disk Manager, read/write partition81 Linux82 Linux Swap partition, Solaris (Unix)83 Linux native file system (ext2fs/xiafs)85 Linux EXT86 FAT16 volume/stripe set (Windows NT)87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe setBE Solaris boot partitionC0 DR-DOS/Novell DOS secured partitionC6 Corrupted FAT16 volume/stripe set (Windows NT)C7 Corrupted NTFS volume/stripe setF2 DOS 3.3+ secondary partition表2 分區結構信息偏移 長度 含義600H 1 活動分區指示符,該值為80H表示為可自舉分區(僅有一個),該值為00H 表示其余分區。01H 1 分區起始磁頭號。02H 1 低6 位是分區開始的扇區,高2位是分區開始的柱面的頭兩位。03H 1 分區開始的起始柱面號的低8 位。04H 1 系統標志,該值為01H 表示采用12位FAT 格式的DOS 分區,該值04H 表示采用16 位FAT 格式的DOS分區,該值為05H 表示為擴展DOS分區,為06H表示為DOS系統。05H 1 分區終止頭號06H 1 低6 位為分區結束的扇區號,頭2 位為結束柱面號的前2 位。07H 1 分區結束柱面號的低8位。08H 4 本分區前的扇區數,低位字節在 前。0CH 4 本分區總的扇區數,低位字節在前。重要公式:02H 為X,03H為Y。柱面=(X6)*162+Y;以我的硬盤為例:有九個可用分區,二個不可用分區;兩個Primary NTFS分區,第二個為active;七個Extened 分區,第五個為NTFS其他為FAT32.主分區表數據:位置cylinder0, head 0,sector1偏移0 1 2 3 4 5 6 7 8 9 A B C D E F0 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C1 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 042 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B3 EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC4 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 255 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 056 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B47 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 748 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF9 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4EA 25 03 4E 02 CD 13 72 29 BE 59 07 81 3E FE 7D 55B AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 2E 07 EBC 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EBD D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 80 24 45 00E 56 33 F6 56 56 52 50 06 531B 00 001C 01 46 07 FE 7F 1E C6 28 11 00 99 31 35 00 80 001D 41 30 07 FE 7F B2 30 85 4A 00 C3 1C 20 00 00 001E 41 B3 0F FE FF FF F3 A1 6A 00 08 FE F7 01 00 001F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA7主分區表分析:Master bootstrap loader code0000H 00D9H33 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)活動分區指示符為80H,表示該分區為可自舉分區。系統標志為07 表示OS/2 HPFS,Windows NT NTFS, Advanced Unix系統。知該分區Boot Sector 位于:起始磁頭為0 頭,起始柱面為304D,起始扇區為1 扇區。01DEH 01EDH 分區3結構信息Extended partition系統標志字節為0F,說明是擴展分區Extended partition (using INT13 extensions)。從擴展分區說明項知下一個分區表位于:起始磁頭為0 頭,起始柱面為435D,起始扇區為1 扇區。801EEH 01FDH 分區4結構信息分區說明項數據均為00H 沒有定義。01FEH 01FFH 55 AAH 主引導記錄有效標志擴展分區一分區表數據:位置cylinder435D, head 0,sector1偏移0 1 2 3 4 5 6 7 8 9 A B C D E F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001B 00 001C 41 B3 0B FE FF 08 3F 00 00 00 97 D5 53 00 00 001D C1 09 05 FE FF FF D6 D5 53 00 D6 D5 53 00 00 001E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001F 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 表示 Windows95+ FAT32901BEH 01CDH 分區1結構信息系統標志字節為05H,說明是擴展DOS 分區。于是知下一個分區表位于:起始磁頭為0頭,起始柱面為777D,起始扇區為1 扇區。Partition Table Entry #3 數據均為00H 沒有定義。Partition Table Entry #4 數據均為00H 沒有定義。其他擴展分區同理。-附錄:Fdisk的MBR參數MBR 系 FDISK.COM(EXE) 一項未公布的開關,隱含于 MS DOS 3.30,延至 MS DOS8.0(Windows ME)。實踐中,有籍以修復主引導信息,重點在主引導程序。FDISK /MBR 命令流程的分支有二:讀得主引導扇區檢驗標志(字) AA55h,操作單一,僅向主引導扇區位移 01BDH 寫入當前系統固有的主引導程序,安全可靠。難能可貴的是它不觸動主引導信息其余模塊(分區表、檢驗標志),以及隨后的 DOS 引導信息、文件分配表、根目錄,省事許多。檢出檢驗標志非 AA55h,寫主引導程序、初始化分區表及登錄檢驗標志,在 MS DOS 7.0 8.0 環境中,常規以系統支持的最大容量分配給基本 DOS 分區的方式登錄分區表。分區表初始化(可能幸存的分區表被清除)的后果不難想象; 目前硬盤大都設置有其它分區,即使在高版本 DOS 環境中運作,常規建立的分區表每難能符合實際需求,后續工作量也相當可觀。不過,它也不觸動位于其后的 DOS 引導信息、文件分配表及根目錄,高版本 FDISK/MBR 命令適用于修復僅設基本 DOS 分區的硬盤分區表及檢驗標志受損,或主引導信息全毀。可見,在運行 FDISK /MBR 命令之前,需查明檢驗標志是否 AA55h,酌情處理,切忌盲動。經由 DOS 軟盤引導,認硬盤,檢驗標志必健在。另外,在 FDSIK 主菜單中選 4. Display Partition Information,列出分區信息,進一步證實檢驗標志正常; 若現 No partitition defined,檢驗標志每變異,而分區表或許尚健在。10硬盤數據恢復,三深入邏輯分區現在深入每一個邏輯分區。邏輯分區結構如下:FAT12/16Logical sector =0Logicalsector=1(Floppydisk=19)Logicalsector=1+sectors_per_FAT(Floppydisk=1018)Logicalsector=1+sectors_per_FAT*2(Floppydisk=1932)Logicalsector=1+sectors_per_FAT*2+sectors_of_rootdirectories(Floppy disk=33)DOS Boot SectorFAT1FAT2ROOT DirectoryData area(where filesand subdirectories arestored)FAT32Usually 32 sectors Logical sector=0032hLogical sector =0032h+2*sectors_per_FATDOS Boot Recore 3SectorsReserved sectorsCopy of recordReserve sectorsFAT1FAT2Data area(where filesand all bdirectoriesare stored)在邏輯分區當中用邏輯的cluster 和sector。換算關系為: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;每個扇區長度=512字節11總簇數=邏輯盤容量/簇容量總簇數=FAT 表長度(字節)/每個表項長度(字節)-2FAT 表長度=邏輯盤容量/簇容量*每個表項長度Dos引導記錄塊位于邏輯0 sector 中包含三部分:(1) 磁盤IO 參數表BPB;(2) 磁盤基數表;(3) 引導區代碼。FAT16 的BPB(BIOS Parameter Block)表,描述邏輯盤結構組成,包含隱藏扇區數目(從0-1-1 開始計算)、FAT 扇區數、FAT 拷貝數、硬盤磁頭總數、根目錄表項最大值等。FAT32 系統中,BPB 表的偏移與FAT16 不同,但表項基本相同。整個隱藏扇區部分都作為邏輯盤的描述區域。典型的primary partion 的磁盤IO 參數表BPB:典型的 logical partion 磁盤參數表:12硬盤BPB主要結構說明:(Cylinder 柱面/磁道-Side/Head磁頭-Sector 扇區地址以下簡稱為?-?-?)主分區名稱 地址 長度(扇區)主引導記錄(Main BootRecord)0-0-1 1系統扇區(System Secotrs) 0-0-2,0-0-63 62引導扇區(Boot) 0-1-1 1擴展分區名稱 地址 長度(扇區)擴展分區(Extend Partition) ?-y-1 1系統扇區(System Secotrs) ?-y-2,?-y-63 62引導扇區(Boot) ?-(y+1)-1 113其后各項與主分區相同隱藏扇區(Hidden Secotrs):FAT16 0-1-1 1FAT32 0-1-1 32文件分配表(File Allocation Table):FAT16 0-1-2 根據邏輯盤容量變化FAT32 0-1-33 根據邏輯盤容量變化說明:FAT16 的每個表項由2 字節(16 位)組成,通常每個表項指向的簇包含64 個扇區,即32K 字節。 邏輯盤容量最大為2047MB。FAT32 的每個表項由4 字節(32 位)組成,通常每個表項指向的簇包含8個扇區,即4K字節。邏輯盤容量最小為512MB。對于C分區,在MBR的偏移01c2H 處,FAT16 為06H,FAT32 為0CH。FAT 是DOS、Windows9X 系統的文件尋址格式,位于DBR之后。在解釋文件分配表的概念的時候,我們有必要談談簇(Cluster)的概念。文件占用磁盤空間,基本單位不是字節而是簇。一般情況下,軟盤每簇是1 個扇區,硬盤每簇的扇區數與硬盤的總容量大小有關,可能是4、8、16、32、64同一個文件的數據并不一定完整地存放在磁盤的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠準確地找到各段的位置并正確讀出。為了實現文件的鏈式存儲,硬盤上必須準確地記錄哪些簇已經被文件占用,還必須為每個已經占用的簇指明存儲后繼內容的下一個簇的簇號。對一個文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT 表來保存的,表中有很多表項,每項記錄一個簇的信息。由于FAT 對于文件管理的重要性,所以為了安全起見,FAT 有一個備份,即在原FAT 的后面再建一個同樣的FAT。初形成的FAT 中所有項都標明為“未占用”,但如果磁盤有局部損壞,那么格式化程序會檢測出損壞的簇,在相應的項中標為“壞簇”,以后存文件時就不會再使用這個簇了。FAT 的項數與硬盤上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16 和FAT32。當一個磁盤Format后,在其邏輯0 扇區(即BOOT扇區)后面的幾個扇區中存在著一個重要的數據表文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤類型大小而定。顧名思義,文件分配表是用來表示磁盤問件的空分配信息的。它不對引導區,文件目錄的信息進行表示,也不真正存儲文件內容。我們知道磁盤是由一個一個扇區組成的,若干個扇區合為一個簇,文件存取是以簇為單位的,哪怕這個文件只有1 個字節。每個簇在文件分配表中都有對應的表項,簇號即為表項號,每個表項占1.5 個字節(磁盤空間在10MB 以下)或2 個字節(磁盤空間在10MB 以上)。為了方便起見,以后所說的表項都是指2 個字節的。FAT 表的開始由介質描述符+一串“已占用”標志組成:FAT16 硬盤-F8 FF FF 7FFAT32 硬盤-F8 FF FF 0F FF FF FF 0F每個有效的FAT 結構區包含兩個完全相同的拷貝:FAT1、FAT2文件分配表結構如1(H 表示16 進制)14表1第0 字節 表頭,表磁盤類型。FFH 雙面軟盤,每次道8 扇區FEH 單面軟盤,每磁道8 扇區FDH 雙面軟盤,每磁道9 扇區FCCH 單面軟盤,每磁道9 扇區FC8H硬盤第12 字節 (表項號1)表示第一簇狀態,因第一簇被系統占據,故此兩字節為FFFFH第34 字節 (表項號2)表示第二簇狀態,若為FFFH 表此簇為壞的,DOS 已標記為不能用;0000H表示此簇為空,可以用;FFF8H 表不能示該簇為文件的最后一簇;其余數字表示文件的下一個簇號,注意高字節在后,低字節在前。第56 字節 (表項號3)表示第三簇狀態,同上。注意:不要把表項內的數字誤認為表示當前簇號,而應是該文件的下一個簇的簇號。.高字節在后,低字節在前是一種存儲數字方式,讀出時應對其進行調整。是如兩字節12H,34H,應調整為3412H。文件分配表與文件目錄(FDT)相配合,可以統一管理整個磁盤的文件。它告訴系統磁盤上哪些簇是壞的或已被使用,哪些簇可以用,并存儲每個文件所使用的簇號。它是文件的“總調度師”。當DOS 寫文件時,首先在文件目錄中檢查是否有相同文件名,若無則使用一個文件目錄表項,然后依次檢測FAT 中的每個表項對應的簇中,同時將該簇號寫入文件目錄表項相的26-27 字節,如文件長度不止一簇,則繼續向后尋找可用簇,找到后將其簇號寫入上一次找到的表項中,如此直到文件結束,在最后一簇的表項里填上FFF8H,形成單向鏈表。DOS 刪除文件時只是把文件目錄表中的該文件的表項第0 個字節改為E5H,表此項已被刪除,并在文件分配表中把該文件占用的各簇的表項清0,并釋放空間。其文件的內容仍然在盤上,并沒有被真正刪除,這就是undelete.exe,unerase.exe 等一類恢復刪除工具能起作用的原因。文件分配表在系統中的地位十分重要,用戶最好不要去修改它,以免誤操作帶來嚴重的后果。典型的FAT32 表:F8 FF FF FF FF FF FF FF 96 C4 00 00 FF FF FF 0FFF FF FF 0F 06 00 00 00 FF FF FF 0F 08 00 00 0009 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 000D 00 00 00 0E 00 00 00 0F 00 00 00 10 00 00 00FF FF FF 0F 00 00 00 00 FF FF FF 0F 14 00 00 0015 00 00 00 FF FF FF 0F FF FF FF 0F FF FF FF 0F19 00 00 00 1A 00 00 00 1B 00 00 00 FF FF FF 0F00 00 00 00 1E 00 00 00 FF FF FF 0F 20 00 00 00FF FF FF 0F 22 00 00 00 23 00 00 00 24 00 00 0025 00 00 00 26 00 00 00 27 00 00 00 28 00 00 0015文件目錄表(File Directory Table),即根目錄區,又稱為ROOT區:緊跟在FAT2 的下一個扇區,長度為32 個扇區(256 個表項)。如果支持長文件名,則每個表項為64個字節,其中,前32 個字節為長文件鏈接說明;后32 個字節為文件屬性說明,包括文件長度、起始地址、日期、時間等。如不支持長文件名,則每個表項為32 個字節的屬性說明。值得注意的是:1,FAT32 沒有儲存目錄的目錄區,而 FAT16 儲存根目錄并把子目錄放到數據區。2,表示目錄的目錄項指出根目錄地址同時長度字節為0,表示文件的目錄項指出數據地址。典型的FAT32 根目錄:30 30 30 30 30 30 20 20 20 20 20 10 00 12 3C 7C39 2B 39 2B 05 00 3D 7C 39 2B 3A 34 00 00 00 0044 4D 32 4B 44 49 53 4B 49 4D 47 20 00 96 DB 4039 2B 39 2B 0A 00 DC 40 39 2B 88 02 5B 72 13 0042 49 4E 42 49 4E 20 20 20 20 20 08 00 00 00 0000 00 00 00 00 00 47 65 09 2B 00 00 00 00 00 0016000000 子目錄注意:DOS7 前的怪字符為E5H,表示被刪除,被刪除文件仍舊能夠找到開始簇,數據恢復就依靠這一特點。數據區(Data Area): 緊跟在FDT的下一個扇區,直到邏輯盤的結束地址。由上圖可以想到,即使目錄被破壞仍舊可能從磁盤里把信息讀出。到現在為止,硬盤數據結構的理論部分已經講完。數據恢復主要是手動找出FAT、目錄、數據的對應關系或直接找到數據,現在已經有完善的磁盤編輯器幫助我們做到這一點,使工作大大簡化了。有只能化的恢復工具能不依靠FAT 而恢復被刪除文件,比如RECOVERNT,估計是依靠Win2000的文件使用記錄。這種方法在沖啟動之前恢復文件的可能性很大。從理論上講只要數據不被覆蓋總能被恢復的。17硬盤數據恢復,四文件分配表FAT 是DOS、Windows9X 系統的文件尋址格式,位于DBR之后。在解釋文件分配表的概念的時候,我們有必要談談簇(Cluster)的概念。文件占用磁盤空間,基本單位不是字節而是簇。一般情況下,軟盤每簇是1 個扇區,硬盤每簇的扇區數與硬盤的總容量大小有關,可能是4、8、16、32、64同一個文件的數據并不一定完整地存放在磁盤的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠準確地找到各段的位置并正確讀出。為了實現文件的鏈式存儲,硬盤上必須準確地記錄哪些簇已經被文件占用,還必須為每個已經占用的簇指明存儲后繼內容的下一個簇的簇號。對一個文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT 表來保存的,表中有很多表項,每項記錄一個簇的信息。由于FAT對于文件管理的重要性,所以為了安全起見,FAT 有一個備份,即在原FAT 的后面再建一個同樣的FAT。初形成的FAT 中所有項都標明為“未占用”,但如果磁盤有局部損壞,那么格式化程序會檢測出損壞的簇,在相應的項中標為“壞簇”,以后存文件時就不會再使用這個簇了。FAT 的項數與硬盤上的總簇數相當,每一項占用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16 和FAT32。當一個磁盤Format后,在其邏輯0 扇區(即BOOT扇區)后面的幾個扇區中存在著一個重要的數據表文件分配(FAT),文件分配表一式兩份,占據扇區的多小憑磁盤類型大小而定。顧名思義,文件分配表是用來表示磁盤問件的空分配信息的。它不對引導區,文件目錄的信息進行表示,也不真正存儲文件內容。我們知道磁盤是由一個一個扇區組成的,若干個扇區合為一個簇,文件存取是以簇為單位的,哪怕這個文件只有1 個字節。每個簇在文件分配表中都有對應的表項,簇號即為表項號,每個表項占1.5 個字節(磁盤空間在10MB 以下)或2 個字節(磁盤空間在10MB 以上)。為了方便起見,以后所說的表項都是指2 個字節的。文件分配表結構如1(H 表示16 進制)表1第0 字節 表頭,表磁盤類型。FFH 雙面軟盤,每次道8 扇區FEH 單面軟盤,每磁道8 扇區FDH 雙面軟盤,每磁道9 扇區FCCH 單面軟盤,每磁道9 扇區FC8H硬盤第12 字節 (表項號1)表示第一簇狀態,因第一簇被系統占據,故此兩字節為FFFFH第34 字節 (表項號2)表示第二簇狀態,若為FFFH 表此簇為壞的,DOS 已標記為不能用;0000H表示此簇為空,可以用;FFF8H 表不能示該簇為文件的最后一簇;其余數字表示文件的下一個簇號,注意高字節在后,低字節在前。第56 字節

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論