一、基礎(chǔ)知識(shí)
1、DOS(DOS兼容系統(tǒng)硬盤數(shù)據(jù))的構(gòu)成
主分區(qū)和擴(kuò)展分區(qū)結(jié)構(gòu)基本相似,以下以主分區(qū)為例。
主引導(dǎo)記錄(MBR):MBR占一個(gè)扇區(qū),在CYL 0、SIDE 0 、SEC 1,由代碼區(qū)和分區(qū)表構(gòu)成。其中代碼區(qū)可以由FDISK/MBR重建。
系統(tǒng)扇區(qū):CYL 0、SIDE 0 、SEC 1-CYL 0、SIDE 0 、SEC 63,共62個(gè)扇區(qū)。
引導(dǎo)區(qū)(BOOT):CYL 0、SIDE 1 、SEC 1 這是我們過(guò)去稱的DOS引導(dǎo)區(qū)。也占一個(gè)扇區(qū)。
隱藏扇區(qū):CYL 0、SIDE 0 、SEC 1,如果是FAT16那么占一個(gè)扇區(qū),如果是FAT32則由此占32個(gè)扇區(qū)。
文件分配表:一般有兩個(gè)FAT表,F(xiàn)AT12、FAT16的第一FAT表一般均在0-1-2,F(xiàn)AT32的第一FAT表在0-1-33。FAT表是記錄文件占用扇區(qū)連接的地方,如果兩個(gè)FAT表都?jí)牧耍蠊豢霸O(shè)想。由于FAT表的長(zhǎng)度與當(dāng)前分區(qū)的大小有關(guān)所以FAT2 的地址是需要計(jì)算的。
根目錄區(qū):(ROOT)這里記錄了根目錄里的目錄文件項(xiàng)等,ROOT區(qū)跟在FAT2后面。
數(shù)據(jù)區(qū):跟在ROOT區(qū)后面,這才是數(shù)據(jù)內(nèi)容。
2、主引導(dǎo)記錄簡(jiǎn)單說(shuō)明
主引導(dǎo)記錄是硬盤引導(dǎo)的起點(diǎn),關(guān)于代碼區(qū)不多說(shuō)了,其分區(qū)表,比較重要的是2個(gè)標(biāo)志,在偏移1BE,處的80 的標(biāo)記表示系統(tǒng)可引導(dǎo),且整個(gè)分區(qū)表只能有一個(gè)80標(biāo)記。 另一個(gè)就是結(jié)尾的55 AA標(biāo)記。用來(lái)表示主引導(dǎo)記錄是一個(gè)有效的記錄。
其實(shí),無(wú)論MBR還是隱含扇區(qū)還是BOOT區(qū),都不重要,這些重建都比較容易。對(duì)數(shù)據(jù)恢復(fù)來(lái)說(shuō),能否成功的找回?cái)?shù)據(jù)文件是重要的。另外,由于FAT表記錄了文件在硬盤上占用扇區(qū)的鏈表,如果2個(gè)FAT表都完全損壞了。那么恢復(fù)文件,特別是占用多個(gè)不連續(xù)扇區(qū)文件就相當(dāng)困難了。
基本思路是:
1、FAT2沒有損壞的情況,用FAT2覆蓋FAT1。
2、FAT2也已經(jīng)損壞的情況,我一般是只期待找回其中某些關(guān)鍵的文件了。我們最期待的是這些文件是連續(xù)的。如果不連續(xù)的話,也并非沒有可能,但這往往還要知道文件的一些細(xì)節(jié),包括對(duì)一些文件本身的連接結(jié)構(gòu)有了解。如果FAT2沒有完全破壞,是有一定用處的,另外,一般來(lái)說(shuō),F(xiàn)AT16的硬盤因?yàn)镕AT表*前破壞的比較嚴(yán)重,一般兩個(gè)FAT表都?jí)牧耍∮脖P也很難恢復(fù)了。
二、一個(gè)基本恢復(fù)被CIH破壞硬盤數(shù)據(jù)的例子
一直有朋友問(wèn)手工恢復(fù)的技巧,近來(lái)恢復(fù)了多塊被CIH破壞的硬盤,之所以選取這一次,是因?yàn)楸M管恢復(fù)成功,但其中犯了一些錯(cuò)誤,值得注意。
委托恢復(fù)用戶:某銀行系統(tǒng)
硬盤情況:CIH發(fā)作有該單位電腦人員曾用KV300 F10進(jìn)行修復(fù),但沒有成功,又恢復(fù)了保存的MBR。
準(zhǔn)備好軟盤3張:
DISK1 :WIN98啟動(dòng)盤(帶DEBUG)
DISK2:DISKEDIT等工具(此盤不要寫保護(hù))
DISK3:DOS下殺CIH的工具
把我的硬盤摘下,掛上待恢復(fù)的的硬盤,開機(jī),進(jìn)入SETUP,檢測(cè)硬盤,把參數(shù)記下。
CLY 620 HEAD 128 PRECOMP 0 LANDZ 4959 SECTOR 63 MODE LBA。
用準(zhǔn)備好的軟盤啟動(dòng):
A:>C:
顯示Invalid drive specification
FDISK/MBR重建主引導(dǎo)記錄(這是個(gè)習(xí)慣),重新軟盤引導(dǎo)(可能沒有必要):此時(shí)已經(jīng)看的見C:硬盤。啟動(dòng)DISKEDIT,啟動(dòng)過(guò)程中顯示Invalid media type reading DRIVER C,哎呀,算了,還是先用DEBUG 清空分區(qū)表, 并置80和55aa標(biāo)志。重新啟動(dòng),再運(yùn)行DISKEDIT,顯示設(shè)定為READ ONLY, 沒關(guān)系,把CONFIGURATION中的只讀選項(xiàng)去掉,存盤,好了,可以編輯了。
由于當(dāng)時(shí)接的硬盤有多塊,我把這塊當(dāng)成了是一塊只有C分區(qū)(這是等待修復(fù)的另一塊硬盤),所以沒看別的東西,我們期待FAT2沒有損壞,以用FAT2覆蓋FAT1,在這個(gè)時(shí)候DISKEDIT要比DEBUG容易的多,在FIND OBJECT中選擇 FAT,查一下起始扇區(qū),好的,在CYL 0 SIDE68 SEC 14,0000H,F(xiàn)8 FF FF 0F (FAT32的),好的,F(xiàn)AT2沒壞。其實(shí)如果不用DISKEDIT的可以用DEBUG查,偏移0000的F8 FF FF。
由于以為只有C分區(qū),所以,上來(lái)就在FIND中查找IOSYS(IO 和SYS中要有空格)以查找ROOT區(qū)。找到后觀察,是否有C:\ 下常見文件。好的,ROOT區(qū)沒被破壞。記下了該扇區(qū):CYL 0 、SIDE 68 、SEC 14,備用。
FAT1一般前面已經(jīng)被破壞了,但后面應(yīng)該還在,這可以作為檢查。因?yàn)槭?2位的,F(xiàn)AT1 一般在CYL 0 SIDE1 SEC 33。 因?yàn)橛辛薘OOT 區(qū)然后應(yīng)該計(jì)算FAT表的長(zhǎng)度了,因?yàn)镕AT2到ROOT前一扇區(qū)為止,所以非常簡(jiǎn)單。然后可以用FAT2覆蓋FAT1,這里用DEBUG還是DISKEDIT都可以,如果用DEBUG一般是用INT 25讀絕對(duì)扇區(qū),再用INT 26寫入,不過(guò)一般要分幾次。記得保留斷點(diǎn)呀:-)用DISKEDIT可以MARK FAT2的內(nèi)容COPY下來(lái),在WRITE到FAT1。
然后可以恢復(fù)主引導(dǎo)記錄、隱含扇區(qū)和BOOT區(qū),可以先用NDD修復(fù)分區(qū)表,然后可以考慮用標(biāo)準(zhǔn)覆蓋法,如果你希望下一步由NORTON Utilities ,來(lái)接手這些都可以不做。我從另一臺(tái)FAT32上取來(lái)了,相應(yīng)的部分,寫了進(jìn)去。我這是發(fā)現(xiàn)好象有一個(gè)D盤。先看一下在說(shuō)吧。好了,關(guān)機(jī)串上我的硬盤,用NORTON Utilities掃描C盤,文件基本恢復(fù),對(duì)C盤殺毒,WHY,沒有發(fā)現(xiàn)病毒,換了2種殺毒軟件還是沒有病毒,更糟糕的是,顯示C盤是948M,有一個(gè)D盤,但是95下無(wú)法瀏覽,DOS 下亂碼。于是打電話核實(shí)當(dāng)時(shí)的情況,原來(lái)是26日那天,放進(jìn)一張光盤,光驅(qū)燈亮了一會(huì),就硬盤狂響,藍(lán)屏死機(jī)了。應(yīng)該證實(shí)我的推斷一樣,是光盤的AUTORUN程序有CIH病毒。所以說(shuō)沒有實(shí)時(shí)防御能力的軟件是沒有意義的。另外,他們的硬盤確實(shí)分兩個(gè)區(qū),而且重要文件在D區(qū)。(氣死我了!)
然后在修復(fù)D盤吧,再回到DOS,用DEBUG查找結(jié)束標(biāo)志為55AA 的扇區(qū),由結(jié)構(gòu)判定是否為擴(kuò)展分區(qū)。此時(shí)可算出大小來(lái)返主分區(qū)表。當(dāng)然,許多工具也可以很好的完成這一工作。如果你沒有把握,就用他們完成好了。
經(jīng)驗(yàn)總結(jié)
1、你不要聽信或者憑記憶想一塊硬盤該是怎么樣的,一定要自己去看,我就是犯了這個(gè)錯(cuò)誤。
2、KV300 F10確實(shí)如一些網(wǎng)友所講,有一定隱患,如果銀行的電腦人員在用KV300 F10處理之前沒有備份,可能要給我找些麻煩。
3、恢復(fù)數(shù)據(jù)要本著幾項(xiàng)原則:
a、先備份,這也是而后我寫HD-MIRROR的原因;
b、優(yōu)先搶救最關(guān)鍵的數(shù)據(jù);
c、在穩(wěn)妥的情況下先把最穩(wěn)定的雞蛋撈出來(lái)(理應(yīng)先修復(fù)擴(kuò)展分區(qū),再修復(fù)C),最好修復(fù)一部分備份一部分;
d、要先作好準(zhǔn)備,不要忙中出錯(cuò),由于我的機(jī)器沒有裝過(guò)NORTON,先解壓,習(xí)慣的敲了一個(gè)D:\TEMP,這才想起來(lái)文件險(xiǎn)些解在沒有完全修好的C盤上。
其實(shí)看來(lái),如果FAT2沒有損壞的情況下,恢復(fù)C盤數(shù)據(jù)是非常容易的,可以編程實(shí)現(xiàn)。如果FAT2損壞了,最容易恢復(fù)的當(dāng)然是只占用一個(gè)扇區(qū)的文件和連續(xù)的文件。
責(zé)任編輯 趙毅 zhaoyi#51cto.com TEL:(010)68476636-8001


