全手工数据恢复

最近经常见有很多硬盘分区表及硬盘数据被破坏而导致机器不能引导或使用的帖子,本着扶危济困的人道主义精神,和近十年的电脑龄以及之前成功修复 N ( N 约等于 10 )块硬盘的经验特发一帖,系统讲述硬盘软故障恢复的方法,望大家不吝伺教!

注:所有前提是硬盘没有物理损坏,以 DISKEDIT (诺顿 2.0 for windows 中获取), DISKMAN (华军软件园), NORTON ( D 版), UNFOMAT (其它兼容的反格式化软件也可)等软件为基础,如果多少精通一下下汇编就再理想不过啦!呵呵 ~~~~
好,万事就绪!先说一下当系统分区表被误操作或病毒破坏时会出现的现象。1:启动显示NO ROM BASIC。2:启动显示INVALID PARTITION TABLE。3:无显示(如遭CIH毒手)。4:提示硬盘逻辑分区错误无法正常识别(如提示逻辑盘符超过Z,并切FDISK等程序无法识别)5:对于AWARD BIOS可能还会提示硬盘无法初始化(没用过AMI的,不知道会有什么显象……)
知道了表象现在来研究一下本质,我尽可能简单的解释一下硬盘的物理结构和各种参数。众所周知,硬盘的主引导区位于硬盘的0柱0面1区包含有若干分区表项,共有64字节。其中每个分区项有16字节包括以下一些信息:
第一字节,是引导标志,其中80为活动分区00为非活动分区。
第二字节,起始磁头,表明分区的起始位置。
第二字节,表示起始扇区,其中低六位(简单说就是靠右面的六位)为起始扇区,高二位为起始柱面(有时也会加上第四字节)。
第三字节,表示硬盘柱面信息。
第四字节,确定起始柱面的的低八位。
第五字节,决定分区的类型,06代表FAT16,0b代表FAT32,63代表UNIX分区。
第6字节: 终止磁头
第7字节: 低6位为终止扇区, 高2位与第8字节为终止柱面
第8字节: 终止柱面的低8位
第9-12字节: 该分区前的扇区数目
第13-16字节: 该分区占用的扇区数目
扩展分区的信息位于上面所示的硬盘分区表中,逻辑分区的信息则位于扩展分区的起始扇区,可通过查找上面的表得到起始地址“X面/X扇区/X柱”所对应的扇区。分区信息的16个字节表示的是逻辑驱动器(D:E:……)的起始和结束地址。了解这些后当分区表破坏后我们就能利用各种软件来进行手工恢复,如果没有就手的软件的话那么FDISK/MBR手工填写参数也马马虎虎啦!呵呵~~~
手工恢复分区时推荐使用全中文界面且支持虚拟操作的DISKMAN!至于大名鼎鼎的DISKEDIT因为操作过于复杂非老鸟甚用!不然一时失手可能连哭都来不及……。具体步骤是1:检查C盘活动分区有效标志80是否存在。2:编辑0柱1磁头1扇区,查看末尾是否有55AA的有效标志。3:根据自己分区的情况依次检查分区的类型标志,引导标志和系统标志是否与自己的硬盘相同如不同就改为正确的。致此分区引导记录应该被恢复的七七八八了。4:选择DISKMAN菜单中重建分区表一项,从0柱0磁头2扇区以自动或者交互两种方式开始扫描硬盘,建议对硬盘参数有较深了解的人选择交互方式,由于自己对自己的硬盘比较了解所以成功的可靠性大些。不了解的人还是选择自动好些……至此,运气好的话应该可以恢复硬盘的使用了,如果只是分区有问题加之上天保佑的话至此能进入98也是有可能的!备份好必要的数据后最好重新分区并且FOIMAT /U。如果不能使用但可以用启动盘引导后可以得到硬盘的控制权就是说可以进入分区,这时可以使用一些杀毒软件(KV3000)的重建分区功能。毕竟人家正规军的办法比起咱这土办法应该还是牢靠些的。如果还不成的话那我也只好拿出最后的法宝了!用DEBUG搞定它!
事先声明,下面这段DEBUG我只用过一次,虽然幸运的成功了但不保证适用于所有硬盘,而且说实话我的DEBUG水平也就是马马虎虎应付场面的,实在不够牢靠,只提供一下思路,大家用的时候最好搞清楚再来。如果实在没着了照搬也成,反正已经不能用了也不会有更烂的后果……不过至于到底会出现什么后果没我责任哦!呵呵~~~~~
debug
a 100
mov ax,201 */以下三行是对寄存器的操作
mov bx,200
moc cx,1
int 13 */调用中断13对硬盘写操作
int 3
g=200
d 3b0 3ff
e 3be 80 */针对引导区添入引导区有效标志80
e 102 3
g-100

到这如果还搞不定那我也没办法了……只好送修或者找人用专用设备读出残存的数据,不过花费银子不菲,不如买了新的省心!呵呵~~~~

恢复分区说完了现在聊一下如何恢复数据。由于恢复数据和硬盘大小参数密切相关所以不能具体到没一块硬盘这里也只是给一下大致的操作方法,具体到每人的硬盘还要根据自己的具体情况来搞定。
1 :假设 C 全毁(一般我们见势不妙都会立刻关机所以除 C 外其它硬盘不会受到太大的损失)需要恢复 D 上的文件(我们大多数重要文件不会存在 C 盘吧?)。按上面的方法先恢复分区,如果有一个大小及逻辑分区都相同或者至少不是差得很夸张的完好硬盘就最理想不过!只需备份下它的分区表恢复即可!(对于仅有分区表被毁的现象此种恢复方法应列为第一优先的考虑!)
2 :这里就要用到 DISKEDIT 了。恢复分区重新启动后运行 DISKEDIT D : /M 按 F6 以分区表方式查找,一般可以找到 X 道 1 头 1 扇区( X 值难以确定)。由于从 1 磁头开始那么其为第一逻辑分区即 D 的可能很大,如此则其原始连接应在 X 道 0 头 1 扇区,通过 INFO-> DRIVER INFO 查看该扇区得到原主分区的结束位置。因为主分区一般开始于 0 道 0 头 1 扇,现在可以大致确定下主分区的信息了。
3 :执行 TOOLS->RECALCUATE PARTITION 添入刚刚得到的参数重新计算分区,然后写入到硬盘并重新启动。
4 : FORMAT C : /S 重新填充 C 的引导信息
5 :再重启,执行( UN ) FORMAT /Z : 8 D :恢复 D 的原始簇值(因为如此恢复分区簇的数量和原先的数量不同的可能性较大)
6 :如为 FAT32 分区则以 DISKEDIT /M 维护模式编辑磁盘将主分区表中 1C2H 中的 0600 改为 0B00 将 FAT 清零为重新格式化 FAT32 做准备
7 :重新启动后先运行 FORMAT /Z : 8 D :完成后在进行反格式化 UNFORMAT 此时文件应该大部恢复。当然可能部分文件名字会有出入但不会变化太大。

注:此种恢复操作是针对 FAT16 如果分区为 FAT32 那可以省不少的事,但个别时候操作上可能更繁琐些.
原文地址:https://www.cnblogs.com/top5/p/1757836.html