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