实例2:分区表、FAT表丢失的数据恢复
一个朋友拿着一个4GB的硬盘来找我,说启动后看不到分区,但里面有一个重要数据文件,也没有备份。 我把这块有问题的硬盘接到我的电脑上,然后大概了解了一下硬盘的情况,询问硬盘损坏的原因:打开电脑,无法启动,主板似乎没有自检,怀疑主板坏了,换了一块主板,发现只能在BIOS里面找到硬盘,而不能进入系统,接到别的电脑上,也看不到分区。初步判断为分区表丢失,如果仅仅是分区表丢了的话比较简单……
第一步:粗略查看硬盘数据。运行WinHEX(下载地址:http://sq3.onlinedown.net/down/winhex.zip)(见图5)或RunTimes的磁盘工具DiskExplorer(下载地址:http://sq.onlinedown.net/down/diskexpl.zip),选中需要的物理硬盘。然后拖动滚动条,浏览一遍整个硬盘,可以看到一些有意义的字符串,还可以见到大批的零数据,当然更多是看不懂的内容。这个没有关系,至少目前说明硬盘没有什么明显物理损坏或逻辑坏道。 
第二步:自动寻找。用EasyRecovery里面的工具试图自动找到分区,但没有成功。
第三步:试图重建分区表。查看第一个扇区也就是MBR的内容,发现分区表完全损坏。如果仅仅是分区表损坏,完全可以通过搜索分区,然后根据分区的偏移重建分区表。
第四步:了解分区情况,如硬盘分有几个区,每个分区大概多大,分区格式是什么。经过询问,了解到电脑大概是1999年左右买的,装的是Windows 98,不知道几个分区,不知道分区文件系统是FAT16还是FAT32,不知道重要的数据保存在哪个分区,哪个目录名。虽然一问三知,但至少知道是FAT,不是NTFS,而且很可能是FAT32(纯属猜测)。根据经验,一般第一个分区从第64个扇区开始,这个扇区是分区的第一个扇区,对于FAT来说,是引导扇区,里面存储着BPB数据。从起始扇区一直浏览到第64个扇区,前面扇区的数据都很混乱,不像是空白的样子,怀疑被病毒改写了,看这样的症状,猜测是CIH,损坏BIOS,导致主板不能启动,同时搞乱C区的数据。一直到远远超过了64个扇区的时候,也没有看到可能是FAT引导扇区的扇区。直接搜索扇区尾部的55AA,搜索了一会,似乎没有找到引导扇区。
第五步:寻找根目录。找不到引导扇区,无法定位分区的开始,从而无法定位FAT文件分配表的位置。换个思路,根目录一般就在FAT表后,挨着FAT表,所以决定搜索根。看看其他电脑中Windows 98的根目录,有MSDOS这个文件名,于是搜索MSDOS这个字符串。很幸运,找到了,在大约第16700个扇区里面,然后倒退几个扇区,发现了FAT表,FAT表一般是排列很整齐的数据。如果不知道FAT表是什么样的,那么你打开你自己的硬盘,看看FAT的16进制表示,就知道这个很整齐大概是什么样子了。这样看来,第一个分区大概在硬盘的8M(16700*512/1024/1024=8M)左右的位置开始的。 找一个磁盘编辑工具,如DiskExplorer,从目录径扇区的开始位置用根目录的模式查看,熟悉的文件名字出现了,说明这里确实是根目录所在的扇区。查看FAT表,似乎前面部分的FAT损坏了一部分,而后面的比较完好,同时 还是没有找到引导扇区,看来引导扇区被破坏了。
第六步:再一次自动寻找。根据前面的信息,已经可以推算出大部分的信息了,但是手工劳动比较辛苦,还是试一试自动化的工具。
于是,再一次运行EasyRecovery,点击“数据修复→AdvancedRecovery”,然后在弹出窗口中点击只有当所选硬盘没有分区时,才可使用的“高级选项”按钮。第一次自动寻找的时候,就是使用了缺省的设置,所以搜索失败,根据前面的分析,设定搜索范围从16000个扇区开始,分区类型选择FAT32、FAT的匹配模式,同时选择忽略FAT表(缺省时候是最佳匹配),然后就可以看到EasyRecovery不断的显示出查找的文件。
第七步:导出重要数据。可以说EasyRecovery恢复得还是比较成功的,恢复出了相当多的目录结构,关键是我看到了Lock2000目录,这就是我们要寻找的重要数据目录。其他没有关系的数据就不要了。存储Lock2000目录后,打开文件,发现大部分文件完全恢复,少部分在最后面出现了乱码,也就是最后面的数据不太对。
历时1个小时,数据恢复基本上是成功的。得到的教训是,要充分利用自动化工具。不过,随着大硬盘的增多,自动化工具扫描一次非常费时间,即使4GB的硬盘也是比较慢的,在实例一中搜索20GB的硬盘是很慢的,要有耐心。所以要注意收集信息,信息收集越充分,提供给自动化工具的信息越多,数据恢复的可能也越大,速度也越快。
小提示
前面讲的2个例子都没有备份数据,这是因为实例一是分区表彻底损坏,而后来仅仅修改了分区表,所以不必备份数据;实例二是因为现在的数据修复工具基本上考虑到了保存原始数据的必要性,一般不是直接在硬盘上操作,而是仅仅在内存中重建FAT等操作,基本没有写硬盘的操作,因为没有对硬盘的写操作,所以不需要备份数据。
但是重申一点,重要数据最好备份,否则一旦误操作,就后悔莫及了。
实例3:误删除文件的恢复
对于误删除的文件,我们有很多选择,如FinalData、Recover4ALL、EasyRecovery,这些软件使用很简单,直接按照向导的指示就可以了。
下面介绍一种手工恢复被删除数据的方法,特别是使用这种自动化的方法恢复无效的时候,这种方法适合恢复有明显特征的结构简单的文件,如文本文件的恢复。
微软公司的VC6有个一直没有修改的BUG:存储写好的程序代码时,偶尔会弹出一个对话框无法存储文件,这时必须再存一次才可以,如果你直接关闭VC6,就会发现刚才那个文件被删除了。刚好我的一个朋友就遇到了这样的BUG,他很费劲才调试好的很长的文件就失踪了。我先试用了前面介绍的软件,结果找出很多以前删除的文件,就是没有需要的。没有办法的情况下,只好使用强行搜索的方法了。
第一步:运行WinHEX,选择菜单中的“Tools→Open Disk”,选择误删除文件所在C区。
第二步:选择“Search”菜单项,使用“Find Text”项,在打开的C区上直接搜索程序代码中的特征串“增加了处理Reg_Expand_SZ”(见图6)。 
第三步:经过一段时间后,把找到代码所在扇区的前后几个扇区全部复制下来(见图7),拷贝到一个新的文件中,这样就找回了原来的代码。

如果文件分散在分区的多个位置,还需要根据文档的内部结构来重新组织文档,才能彻底恢复数据。
误格式化的原理与此非常类似,仅仅是快速格式化时,并没有覆盖原来的数据,所以可以恢复。
实例4:恢复被占用的空白空间
近日,在DOS下运行Ghost的硬盘分区(Partition to Image)映像备份,将系统分区C区备份到另一磁盘E区时,意外发生了断电。待来电时,进入Windows后,却收到了“磁盘空间不足”的报警,打开E区“属性”,才发现不见了近1GB的磁盘空间,可是找遍了“E:”盘的每个角落,除了因备份失败增加了一个0字节的Windows XPsp2.GHO映像文件外,没有其他变化。
由于Ghost备份是在DOS下被意外中止的,会不会是造成了“磁盘中的簇丢失”?于是,运行Windows磁盘扫描程序试试。在“我的电脑”中右击E区图标,选择“属性→工具”,点下“查错”中的“开始检查”按钮,在弹出的选框中把“自动修复文件系统错误”、“扫描并试图恢复坏扇区”两项选中,并按下“开始”,重启电脑即可运行针对E区的磁盘扫描了。
重新进入Windows,打开“资源管理器”选取本地磁盘“E”,此时就E盘中会出现名为“FOUND.000”的文件夹(该文件夹为隐藏文件夹),打开后就可见到占用磁盘空间的“原凶”──还原碎片文件“FILE0000.CHK”已在其中等候你的处置了,将它删除即可。
感谢飞客网(http://www.fix.com.cn)提供部分资料
|