既然要進行數(shù)據(jù)的恢復(fù),當(dāng)然數(shù)據(jù)的存儲原理我們不能不提,在這之中,我們還要介紹一下數(shù)據(jù)的刪除和硬盤的格式化相關(guān)問題……
文件的讀取
操作系統(tǒng)從目錄區(qū)中讀取文件信息(包括文件名、后綴名、文件大小、修改日期和文件在數(shù)據(jù)區(qū)保存的第一個簇的簇號),我們這里假設(shè)第一個簇號是0023。操作系統(tǒng)從0023簇讀取相應(yīng)的數(shù)據(jù),然后再找到FAT的0023單元,如果內(nèi)容是文件結(jié)束標(biāo)志(FF),則表示文件結(jié)束,否則內(nèi)容保存數(shù)據(jù)的下一個簇的簇號,這樣重復(fù)下去直到遇到文件結(jié)束標(biāo)志。
文件的寫入
當(dāng)我們要保存文件時,操作系統(tǒng)首先在DIR區(qū)中找到空區(qū)寫入文件名、大小和創(chuàng)建時間等相應(yīng)信息,然后在Data區(qū)找到閑置空間將文件保存,并將Data區(qū)的第一個簇寫入DIR區(qū),其余的動作和上邊的讀取動作差不多。
文件的刪除
Win9x的文件刪除工作卻是很簡單的,簡單到只在目錄區(qū)做了一點小改動——將目錄區(qū)的文件的第一個字符改成了E5就表示將改文件刪除了。
附錄:Fdisk和Format的一點小說明
和文件的刪除類似,利用Fdisk刪除再建立分區(qū)和利用Format格式化邏輯磁盤(假設(shè)你格式化的時候并沒有使用/U這個無條件格式化參數(shù))都沒有將數(shù)據(jù)從DATA區(qū)直接刪除,前者只是改變了分區(qū)表,后者只是修改了FAT表,因此被誤刪除的分區(qū)和誤格式化的硬盤完全有可能恢復(fù)…… 系統(tǒng)啟動流程
各種不同的操作系統(tǒng)啟動流程不盡相同,我們這里以Win9x/DOS的啟動流程為例。
第一階段:
系統(tǒng)加電自檢POST過程。POST是Power On Self Test的縮寫,也就是加電自檢的意思,微機執(zhí)行內(nèi)存FFFF0H處的程序(這里是一段固化的ROM程序),對系統(tǒng)的硬件(包括內(nèi)存)進行檢查。
第二階段:
讀取分區(qū)記錄和引導(dǎo)記錄。當(dāng)微機檢查到硬件正常并與CMOS設(shè)置相符后,按照CMOS設(shè)置從相應(yīng)設(shè)備啟動(我們這里假設(shè)從硬盤啟動),讀取硬盤的分區(qū)記錄(DPT)和主引導(dǎo)記錄(MBR)。
第三階段:
讀取DOS引導(dǎo)記錄。微機正確讀取分區(qū)記錄和主引導(dǎo)記錄后,如果主引導(dǎo)記錄和分區(qū)表校驗正確,則執(zhí)行主引導(dǎo)記錄并進一步讀取DOS引導(dǎo)記錄(位于每一個主分區(qū)的第一個扇區(qū)),然后執(zhí)行該DOS引導(dǎo)記錄。
第四階段:
裝載系統(tǒng)隱含文件。將DOS系統(tǒng)的隱含文件IO.SYS入內(nèi)存,加載基本的文件系統(tǒng)FAT,這時候一般會出現(xiàn)Starting Windows 9x...的標(biāo)志,IO.SYS將MS.SYS讀入內(nèi)存,并處理System.dat和User.dat文件,加載磁盤壓縮程序。
第五階段:
實DOS模式配置。系統(tǒng)隱含文件裝載完成,微機將執(zhí)行系統(tǒng)隱含文件,并執(zhí)行系統(tǒng)配置文件(Config.sys),加載Config.sys中定義的各種驅(qū)動程序。
第六階段:
調(diào)入命令解釋程序(Command.com)。系統(tǒng)裝載命令管理程序,以便對系統(tǒng)的各種操作命令進行協(xié)調(diào)管理(我們所使用的Dir、Copy等內(nèi)部命令就是由Command.com提供的)。
第七階段:
執(zhí)行批處理文件(Autoexec.bat)。微機將一步一步地執(zhí)行批處理文件中的各條命令。
第八階段:
加載Win.com。Win.com負責(zé)將Windows下的各種驅(qū)動程序和啟動執(zhí)行文件加以執(zhí)行,至此啟動完畢。
主分區(qū)表數(shù)據(jù)及分析
在英文字典中,對主引導(dǎo)區(qū)的定義如下:
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.
硬盤的主引導(dǎo)記錄在硬盤的0磁頭0柱面1扇區(qū)。
主引導(dǎo)記錄由三部分組成:
1.主引導(dǎo)程序;
2.四個分區(qū)表;
3.主引導(dǎo)記錄有效標(biāo)志字。
說明:
分區(qū)表自偏移1BEH處開始,分區(qū)表共64個字節(jié),表中可填入四個分區(qū)信息,每十六個字節(jié)為一個分區(qū)說明項。 必須注意:扇區(qū)號的高二位占用柱面號所在字節(jié)的最高二位,即柱面號為10位,扇區(qū)號6位。
重要公式:02H為X,03H為Y。柱面=(X>>6)*16^2+Y;
舉個例子:一塊硬盤有九個可用分區(qū),二個不可用分區(qū);兩個Primary NTFS分區(qū),第二個為active;七個Extened 分區(qū),第五個為NTFS其他為FAT32.主分區(qū)表數(shù)據(jù):位置cylinder0, head 0,sector1
主分區(qū)表分析:
Master bootstrap loader code0000H -00D9H 33 C0 8E D0 BC 00 7C FB 50 。。。主引導(dǎo)記錄代碼,表示主分區(qū)表
01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息
multi(0)disk(0)rdisk(0)partition(0)知該分區(qū)Boot Sector位于:起始磁頭為0頭,起始柱面為70D,起始扇區(qū)為1扇區(qū)。01
CEH -01DDH 分區(qū)2結(jié)構(gòu)信息
multi(0)disk(0)rdisk(0)partition(1) 活動分區(qū)指示符為80H,表示該分區(qū)為可自舉分區(qū)。系統(tǒng)標(biāo)志為07表示OS/2 HPFS, Windows NT NTFS, Advanced Unix系統(tǒng)。知該分區(qū)Boot Sector位于:起始磁頭為0頭,起始柱面為304D,起始扇區(qū)為1扇區(qū)。
01DEH -01EDH 分區(qū)3結(jié)構(gòu)信息
Extended partition系統(tǒng)標(biāo)志字節(jié)為0F,說明是擴展分區(qū)Extended partition (using INT 13 extensions)。從擴展分區(qū)說明項知下一個分區(qū)表位于:起始磁頭為0頭,起始柱面為435D,起始扇區(qū)為1扇區(qū)。
01EEH -01FDH 分區(qū)4結(jié)構(gòu)信息
分區(qū)說明項數(shù)據(jù)均為00H沒有定義。01FEH -01FFH 55 AAH 主引導(dǎo)記錄有效標(biāo)志 擴展分區(qū)數(shù)據(jù)及分析
擴展分區(qū)表分析
01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息
multi(0)disk(0)rdisk(0)partition(3)知該分區(qū)位于:起始磁頭為1頭,起始柱面為435D,起始扇區(qū)為1扇區(qū)(分區(qū)表占用磁頭0)。系統(tǒng)標(biāo)志字0BH表示 Windows 95+ FAT32
01BEH -01CDH 分區(qū)1結(jié)構(gòu)信息
系統(tǒng)標(biāo)志字節(jié)為05H,說明是擴展DOS分區(qū)。于是知下一個分區(qū)表位于:起始磁頭為0頭,起始柱面為777D,起始扇區(qū)為1扇區(qū)。 Partition Table Entry #3 數(shù)據(jù)均為00H沒有定義。 Partition Table Entry #4 數(shù)據(jù)均為00H沒有定義 其他擴展分區(qū)同理。
深入邏輯分區(qū)
邏輯分區(qū)結(jié)構(gòu)
現(xiàn)在深入每一個邏輯分區(qū),邏輯分區(qū)結(jié)構(gòu)如下:
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)
在邏輯分區(qū)當(dāng)中用邏輯的cluster和sector。 換算關(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;
每個扇區(qū)長度=512字節(jié) 總簇數(shù)=邏輯盤容量/簇容量 總簇數(shù)=FAT表長度(字節(jié))/每個表項長度(字節(jié))-2FAT表長度=邏輯盤容量/簇容量*每個表項長度
Dos引導(dǎo)記錄塊位于邏輯0 sector中包含三部分:
1. 磁盤IO參數(shù)表BPB 2. 磁盤基數(shù)表 3. 引導(dǎo)區(qū)代碼
聯(lián)系客服