最近經(jīng)常見有很多硬盤分區(qū)表及硬盤數(shù)據(jù)被破壞而導(dǎo)致機器不能引導(dǎo)或使用的帖子,本著扶危濟困的人道主義精神,和近十年的電腦齡以及之前成功修復(fù) N ( N 約等于 10 )塊硬盤的經(jīng)驗特發(fā)一帖,系統(tǒng)講述硬盤軟故障恢復(fù)的方法,望大家不吝伺教!   
     
注:所有前提是硬盤沒有物理損壞,以 DISKEDIT (諾頓 2.0 for windows 中獲取), DISKMAN (華軍軟件園), NORTON ( D 版), UNFOMAT (其它兼容的反格式化軟件也可)等軟件為基礎(chǔ),如果多少精通一下下匯編就再理想不過啦!呵呵 ~~~~  
    好,萬事就緒!先說一下當(dāng)系統(tǒng)分區(qū)表被誤操作或病毒破壞時會出現(xiàn)的現(xiàn)象。1:啟動顯示NO ROM BASIC。2:啟動顯示INVALID PARTITION TABLE。3:無顯示(如遭CIH毒手)。4:提示硬盤邏輯分區(qū)錯誤無法正常識別(如提示邏輯盤符超過Z,并切FDISK等程序無法識別)5:對于AWARD BIOS可能還會提示硬盤無法初始化(沒用過AMI的,不知道會有什么顯象……)  
    知道了表象現(xiàn)在來研究一下本質(zhì),我盡可能簡單的解釋一下硬盤的物理結(jié)構(gòu)和各種參數(shù)。眾所周知,硬盤的主引導(dǎo)區(qū)位于硬盤的0柱0面1區(qū)包含有若干分區(qū)表項,共有64字節(jié)。其中每個分區(qū)項有16字節(jié)包括以下一些信息:  
    *字節(jié),是引導(dǎo)標(biāo)志,其中80為活動分區(qū)00為非活動分區(qū)。  
    第二字節(jié),起始磁頭,表明分區(qū)的起始位置。  
    第二字節(jié),表示起始扇區(qū),其中低六位(簡單說就是靠右面的六位)為起始扇區(qū),高二位為起始柱面(有時也會加上第四字節(jié))。  
    第三字節(jié),表示硬盤柱面信息。  
    第四字節(jié),確定起始柱面的的低八位。  
    第五字節(jié),決定分區(qū)的類型,06代表FAT16,0b代表FAT32,63代表UNIX分區(qū)。  
    第6字節(jié): 終止磁頭  
    第7字節(jié): 低6位為終止扇區(qū), 高2位與第8字節(jié)為終止柱面  
    第8字節(jié): 終止柱面的低8位  
    第9-12字節(jié): 該分區(qū)前的扇區(qū)數(shù)目  
    第13-16字節(jié): 該分區(qū)占用的扇區(qū)數(shù)目  
擴展分區(qū)的信息位于上面所示的硬盤分區(qū)表中,邏輯分區(qū)的信息則位于擴展分區(qū)的起始扇區(qū),可通過查找上面的表得到起始地址“X面/X扇區(qū)/X柱”所對應(yīng)的扇區(qū)。分區(qū)信息的16個字節(jié)表示的是邏輯驅(qū)動器(D:E:……)的起始和結(jié)束地址。了解這些后當(dāng)分區(qū)表破壞后我們就能利用各種軟件來進(jìn)行手工恢復(fù),如果沒有就手的軟件的話那么FDISK/MBR手工填寫參數(shù)也馬馬虎虎啦!呵呵~~~  
    手工恢復(fù)分區(qū)時推薦使用全中文界面且支持虛擬操作的DISKMAN!至于大名鼎鼎的DISKEDIT因為操作過于復(fù)雜非老鳥甚用!不然一時失手可能連哭都來不及……。具體步驟是1:檢查C盤活動分區(qū)有效標(biāo)志80是否存在。2:編輯0柱1磁頭1扇區(qū),查看末尾是否有55AA的有效標(biāo)志。3:根據(jù)自己分區(qū)的情況依次檢查分區(qū)的類型標(biāo)志,引導(dǎo)標(biāo)志和系統(tǒng)標(biāo)志是否與自己的硬盤相同如不同就改為正確的。致此分區(qū)引導(dǎo)記錄應(yīng)該被恢復(fù)的七七八八了。4:選擇DISKMAN菜單中重建分區(qū)表一項,從0柱0磁頭2扇區(qū)以自動或者交互兩種方式開始掃描硬盤,建議對硬盤參數(shù)有較深了解的人選擇交互方式,由于自己對自己的硬盤比較了解所以成功的可靠性大些。不了解的人還是選擇自動好些……至此,運氣好的話應(yīng)該可以恢復(fù)硬盤的使用了,如果只是分區(qū)有問題加之上天保佑的話至此能進(jìn)入98也是有可能的!備份好必要的數(shù)據(jù)后*重新分區(qū)并且FOIMAT /U。如果不能使用但可以用啟動盤引導(dǎo)后可以得到硬盤的控制權(quán)就是說可以進(jìn)入分區(qū),這時可以使用一些殺毒軟件(KV3000)的重建分區(qū)功能。畢竟人家正規(guī)軍的辦法比起咱這土辦法應(yīng)該還是牢靠些的。如果還不成的話那我也只好拿出*的法寶了!用DEBUG搞定它!  
事先聲明,下面這段DEBUG我只用過一次,雖然幸運的成功了但不保證適用于所有硬盤,而且說實話我的DEBUG水平也就是馬馬虎虎應(yīng)付場面的,實在不夠牢靠,只提供一下思路,大家用的時候*搞清楚再來。如果實在沒著了照搬也成,反正已經(jīng)不能用了也不會有更爛的后果……不過至于到底會出現(xiàn)什么后果沒我責(zé)任哦!呵呵~~~~~  
debug  
a 100  
mov ax,201    */以下三行是對寄存器的操作  
mov bx,200  
moc cx,1  
int 13        */調(diào)用中斷13對硬盤寫操作  
int 3  
g=200  
d 3b0 3ff  
e 3be 80      */針對引導(dǎo)區(qū)添入引導(dǎo)區(qū)有效標(biāo)志80  
e 102 3  
g-100  
    到這如果還搞不定那我也沒辦法了……只好送修或者找人用專用設(shè)備讀出殘存的數(shù)據(jù),不過花費銀子不菲,不如買了新的省心!呵呵~~~~  
恢復(fù)分區(qū)說完了現(xiàn)在聊一下如何恢復(fù)數(shù)據(jù)。由于恢復(fù)數(shù)據(jù)和硬盤大小參數(shù)密切相關(guān)所以不能具體到?jīng)]一塊硬盤這里也只是給一下大致的操作方法,具體到每人的硬盤還要根據(jù)自己的具體情況來搞定。   
    1 :假設(shè) C 全毀(一般我們見勢不妙都會立刻關(guān)機所以除 C 外其它硬盤不會受到太大的損失)需要恢復(fù) D 上的文件(我們大多數(shù)重要文件不會存在 C 盤吧?)。按上面的方法先恢復(fù)分區(qū),如果有一個大小及邏輯分區(qū)都相同或者至少不是差得很夸張的完好硬盤就最理想不過!只需備份下它的分區(qū)表恢復(fù)即可!(對于僅有分區(qū)表被毀的現(xiàn)象此種恢復(fù)方法應(yīng)列為*優(yōu)先的考慮?。?nbsp  
    2 :這里就要用到 DISKEDIT 了?;謴?fù)分區(qū)重新啟動后運行 DISKEDIT D : /M 按 F6 以分區(qū)表方式查找,一般可以找到 X 道 1 頭 1 扇區(qū)( X 值難以確定)。由于從 1 磁頭開始那么其為*邏輯分區(qū)即 D 的可能很大,如此則其原始連接應(yīng)在 X 道 0 頭 1 扇區(qū),通過 INFO-> DRIVER INFO 查看該扇區(qū)得到原主分區(qū)的結(jié)束位置。因為主分區(qū)一般開始于 0 道 0 頭 1 扇,現(xiàn)在可以大致確定下主分區(qū)的信息了。   
    3 :執(zhí)行 TOOLS->RECALCUATE PARTITION 添入剛剛得到的參數(shù)重新計算分區(qū),然后寫入到硬盤并重新啟動。   
    4 : FORMAT C : /S 重新填充 C 的引導(dǎo)信息   
    5 :再重啟,執(zhí)行( UN ) FORMAT /Z : 8 D :恢復(fù) D 的原始簇值(因為如此恢復(fù)分區(qū)簇的數(shù)量和原先的數(shù)量不同的可能性較大)   
    6 :如為 FAT32 分區(qū)則以 DISKEDIT /M 維護(hù)模式編輯磁盤將主分區(qū)表中 1C2H 中的 0600 改為 0B00 將 FAT 清零為重新格式化 FAT32 做準(zhǔn)備   
    7 :重新啟動后先運行 FORMAT /Z : 8 D :完成后在進(jìn)行反格式化 UNFORMAT 此時文件應(yīng)該大部恢復(fù)。當(dāng)然可能部分文件名字會有出入但不會變化太大。   
     
注:此種恢復(fù)操作是針對 FAT16 如果分區(qū)為 FAT32 那可以省不少的事,但個別時候操作上可能更繁瑣些。
     
注:所有前提是硬盤沒有物理損壞,以 DISKEDIT (諾頓 2.0 for windows 中獲取), DISKMAN (華軍軟件園), NORTON ( D 版), UNFOMAT (其它兼容的反格式化軟件也可)等軟件為基礎(chǔ),如果多少精通一下下匯編就再理想不過啦!呵呵 ~~~~  
    好,萬事就緒!先說一下當(dāng)系統(tǒng)分區(qū)表被誤操作或病毒破壞時會出現(xiàn)的現(xiàn)象。1:啟動顯示NO ROM BASIC。2:啟動顯示INVALID PARTITION TABLE。3:無顯示(如遭CIH毒手)。4:提示硬盤邏輯分區(qū)錯誤無法正常識別(如提示邏輯盤符超過Z,并切FDISK等程序無法識別)5:對于AWARD BIOS可能還會提示硬盤無法初始化(沒用過AMI的,不知道會有什么顯象……)  
    知道了表象現(xiàn)在來研究一下本質(zhì),我盡可能簡單的解釋一下硬盤的物理結(jié)構(gòu)和各種參數(shù)。眾所周知,硬盤的主引導(dǎo)區(qū)位于硬盤的0柱0面1區(qū)包含有若干分區(qū)表項,共有64字節(jié)。其中每個分區(qū)項有16字節(jié)包括以下一些信息:  
    *字節(jié),是引導(dǎo)標(biāo)志,其中80為活動分區(qū)00為非活動分區(qū)。  
    第二字節(jié),起始磁頭,表明分區(qū)的起始位置。  
    第二字節(jié),表示起始扇區(qū),其中低六位(簡單說就是靠右面的六位)為起始扇區(qū),高二位為起始柱面(有時也會加上第四字節(jié))。  
    第三字節(jié),表示硬盤柱面信息。  
    第四字節(jié),確定起始柱面的的低八位。  
    第五字節(jié),決定分區(qū)的類型,06代表FAT16,0b代表FAT32,63代表UNIX分區(qū)。  
    第6字節(jié): 終止磁頭  
    第7字節(jié): 低6位為終止扇區(qū), 高2位與第8字節(jié)為終止柱面  
    第8字節(jié): 終止柱面的低8位  
    第9-12字節(jié): 該分區(qū)前的扇區(qū)數(shù)目  
    第13-16字節(jié): 該分區(qū)占用的扇區(qū)數(shù)目  
擴展分區(qū)的信息位于上面所示的硬盤分區(qū)表中,邏輯分區(qū)的信息則位于擴展分區(qū)的起始扇區(qū),可通過查找上面的表得到起始地址“X面/X扇區(qū)/X柱”所對應(yīng)的扇區(qū)。分區(qū)信息的16個字節(jié)表示的是邏輯驅(qū)動器(D:E:……)的起始和結(jié)束地址。了解這些后當(dāng)分區(qū)表破壞后我們就能利用各種軟件來進(jìn)行手工恢復(fù),如果沒有就手的軟件的話那么FDISK/MBR手工填寫參數(shù)也馬馬虎虎啦!呵呵~~~  
    手工恢復(fù)分區(qū)時推薦使用全中文界面且支持虛擬操作的DISKMAN!至于大名鼎鼎的DISKEDIT因為操作過于復(fù)雜非老鳥甚用!不然一時失手可能連哭都來不及……。具體步驟是1:檢查C盤活動分區(qū)有效標(biāo)志80是否存在。2:編輯0柱1磁頭1扇區(qū),查看末尾是否有55AA的有效標(biāo)志。3:根據(jù)自己分區(qū)的情況依次檢查分區(qū)的類型標(biāo)志,引導(dǎo)標(biāo)志和系統(tǒng)標(biāo)志是否與自己的硬盤相同如不同就改為正確的。致此分區(qū)引導(dǎo)記錄應(yīng)該被恢復(fù)的七七八八了。4:選擇DISKMAN菜單中重建分區(qū)表一項,從0柱0磁頭2扇區(qū)以自動或者交互兩種方式開始掃描硬盤,建議對硬盤參數(shù)有較深了解的人選擇交互方式,由于自己對自己的硬盤比較了解所以成功的可靠性大些。不了解的人還是選擇自動好些……至此,運氣好的話應(yīng)該可以恢復(fù)硬盤的使用了,如果只是分區(qū)有問題加之上天保佑的話至此能進(jìn)入98也是有可能的!備份好必要的數(shù)據(jù)后*重新分區(qū)并且FOIMAT /U。如果不能使用但可以用啟動盤引導(dǎo)后可以得到硬盤的控制權(quán)就是說可以進(jìn)入分區(qū),這時可以使用一些殺毒軟件(KV3000)的重建分區(qū)功能。畢竟人家正規(guī)軍的辦法比起咱這土辦法應(yīng)該還是牢靠些的。如果還不成的話那我也只好拿出*的法寶了!用DEBUG搞定它!  
事先聲明,下面這段DEBUG我只用過一次,雖然幸運的成功了但不保證適用于所有硬盤,而且說實話我的DEBUG水平也就是馬馬虎虎應(yīng)付場面的,實在不夠牢靠,只提供一下思路,大家用的時候*搞清楚再來。如果實在沒著了照搬也成,反正已經(jīng)不能用了也不會有更爛的后果……不過至于到底會出現(xiàn)什么后果沒我責(zé)任哦!呵呵~~~~~  
debug  
a 100  
mov ax,201    */以下三行是對寄存器的操作  
mov bx,200  
moc cx,1  
int 13        */調(diào)用中斷13對硬盤寫操作  
int 3  
g=200  
d 3b0 3ff  
e 3be 80      */針對引導(dǎo)區(qū)添入引導(dǎo)區(qū)有效標(biāo)志80  
e 102 3  
g-100  
    到這如果還搞不定那我也沒辦法了……只好送修或者找人用專用設(shè)備讀出殘存的數(shù)據(jù),不過花費銀子不菲,不如買了新的省心!呵呵~~~~  
恢復(fù)分區(qū)說完了現(xiàn)在聊一下如何恢復(fù)數(shù)據(jù)。由于恢復(fù)數(shù)據(jù)和硬盤大小參數(shù)密切相關(guān)所以不能具體到?jīng)]一塊硬盤這里也只是給一下大致的操作方法,具體到每人的硬盤還要根據(jù)自己的具體情況來搞定。   
    1 :假設(shè) C 全毀(一般我們見勢不妙都會立刻關(guān)機所以除 C 外其它硬盤不會受到太大的損失)需要恢復(fù) D 上的文件(我們大多數(shù)重要文件不會存在 C 盤吧?)。按上面的方法先恢復(fù)分區(qū),如果有一個大小及邏輯分區(qū)都相同或者至少不是差得很夸張的完好硬盤就最理想不過!只需備份下它的分區(qū)表恢復(fù)即可!(對于僅有分區(qū)表被毀的現(xiàn)象此種恢復(fù)方法應(yīng)列為*優(yōu)先的考慮?。?nbsp  
    2 :這里就要用到 DISKEDIT 了?;謴?fù)分區(qū)重新啟動后運行 DISKEDIT D : /M 按 F6 以分區(qū)表方式查找,一般可以找到 X 道 1 頭 1 扇區(qū)( X 值難以確定)。由于從 1 磁頭開始那么其為*邏輯分區(qū)即 D 的可能很大,如此則其原始連接應(yīng)在 X 道 0 頭 1 扇區(qū),通過 INFO-> DRIVER INFO 查看該扇區(qū)得到原主分區(qū)的結(jié)束位置。因為主分區(qū)一般開始于 0 道 0 頭 1 扇,現(xiàn)在可以大致確定下主分區(qū)的信息了。   
    3 :執(zhí)行 TOOLS->RECALCUATE PARTITION 添入剛剛得到的參數(shù)重新計算分區(qū),然后寫入到硬盤并重新啟動。   
    4 : FORMAT C : /S 重新填充 C 的引導(dǎo)信息   
    5 :再重啟,執(zhí)行( UN ) FORMAT /Z : 8 D :恢復(fù) D 的原始簇值(因為如此恢復(fù)分區(qū)簇的數(shù)量和原先的數(shù)量不同的可能性較大)   
    6 :如為 FAT32 分區(qū)則以 DISKEDIT /M 維護(hù)模式編輯磁盤將主分區(qū)表中 1C2H 中的 0600 改為 0B00 將 FAT 清零為重新格式化 FAT32 做準(zhǔn)備   
    7 :重新啟動后先運行 FORMAT /Z : 8 D :完成后在進(jìn)行反格式化 UNFORMAT 此時文件應(yīng)該大部恢復(fù)。當(dāng)然可能部分文件名字會有出入但不會變化太大。   
     
注:此種恢復(fù)操作是針對 FAT16 如果分區(qū)為 FAT32 那可以省不少的事,但個別時候操作上可能更繁瑣些。