一、基础知识
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,备用。