最近经常见有很多硬盘分区表及硬盘数据被破坏而导致机器不能引导或使用的帖子,本着扶危济困的人道主义精神,和近十年的电脑龄以及之前成功修复N(N约等于10)块硬盘的经验特发一帖,系统讲述硬盘软故障恢复的方法,望大家不吝伺教! 注:所有前提是硬盘没有物理损坏,以DISKEDIT(诺顿2.0forwindows中获取),DISKMAN(华军软件园),NORTON(D版),UNFOMAT(其它兼容的反格式化软件也可)等软件为基础,如果多少精通一下下汇编就再理想不过啦!呵呵~~~~ 好,万事就绪!先说一下当系统分区表被误操作或病毒破坏时会出现的现象。1:启动显示NOROMBASIC。2:启动显示INVALIDPARTITIONTABLE。3:无显示(如遭CIH毒手)。4:提示硬盘逻辑分区错误无法正常识别(如提示逻辑盘符超过Z,并切FDISK等程序无法识别)5:对于AWARDBIOS可能还会提示硬盘无法初始化(没用过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 a100 movax,201*/以下三行是对寄存器的操作 movbx,200 moccx,1 int13*/调用中断13对硬盘写操作 int3 g=200 d3b03ff e3be80*/针对引导区添入引导区有效标志80 e1023 g-100 到这如果还搞不定那我也没办法了……只好送修或者找人用专用设备读出残存的数据,不过花费银子不菲,不如买了新的省心!呵呵~~~~ 恢复分区说完了现在聊一下如何恢复数据。由于恢复数据和硬盘大小参数密切相关所以不能具体到没一块硬盘这里也只是给一下大致的操作方法,具体到每人的硬盘还要根据自己的具体情况来搞定。 1:假设C全毁(一般我们见势不妙都会立刻关机所以除C外其它硬盘不会受到太大的损失)需要恢复D上的文件(我们大多数重要文件不会存在C盘吧?)。按上面的方法先恢复分区,如果有一个大小及逻辑分区都相同或者至少不是差得很夸张的完好硬盘就最理想不过!只需备份下它的分区表恢复即可!(对于仅有分区表被毁的现象此种恢复方法应列为第一优先的考虑!) 2:这里就要用到DISKEDIT了。恢复分区重新启动后运行DISKEDITD:/M按F6以分区表方式查找,一般可以找到X道1头1扇区(X值难以确定)。由于从1磁头开始那么其为第一逻辑分区即D的可能很大,如此则其原始连接应在X道0头1扇区,通过INFO->DRIVERINFO查看该扇区得到原主分区的结束位置。因为主分区一般开始于0道0头1扇,现在可以大致确定下主分区的信息了。 3:执行TOOLS->RECALCUATEPARTITION添入刚刚得到的参数重新计算分区,然后写入到硬盘并重新启动。 4:FORMATC:/S重新填充C的引导信息 5:再重启,执行(UN)FORMAT/Z:8D:恢复D的原始簇值(因为如此恢复分区簇的数量和原先的数量不同的可能性较大) 6:如为FAT32分区则以DISKEDIT/M维护模式编辑磁盘将主分区表中1C2H中的0600改为0B00将FAT清零为重新格式化FAT32做准备 7:重新启动后先运行FORMAT/Z:8D:完成后在进行反格式化UNFORMAT此时文件应该大部恢复。当然可能部分文件名字会有出入但不会变化太大。 注:此种恢复操作是针对FAT16如果分区为FAT32那可以省不少的事,但个别时候操作上可能更繁琐些。 感谢大家能耐心看完,我这些土办法还是经过一定的实践考验的,可能比不上专业的工具或技术人员但在实在没有办法的时候也还能讲就一下的。全部文章都只是个思路,尤其恢复文件是根据格式化后可以反格式化完成的,此间不能有写硬盘的操作,所以还是有点不便。其实如果能用现成的软件完成任务的话就不要用我的方法了。一家之言谨做参考,如果谁还有其它办法欢迎一起切磋!谢谢