怎么用WINHEX修复“文件或目录损坏且无法读取”
数据“文件或目录损坏且无法读取”的恢复。232G的NTFS分区D,XP系统,每簇扇区数8,用winhex无法读取分区,提示错误,通过物理磁盘访问该分区,根目录下看不到任何文件,检查DBR,没有发现明显的异常。
由于是远程恢复,原盘未做截图,本教程是模拟了原始分区数据丢失时的情景,请参考恢复思路,如有不足,请各位指正!
跳转到第分区E的EBR(虚拟MBR)位置的上一个扇区,找到损坏的分区的备份的DBR,通过winhex提供的计算hash功能,计算哈希值。再 与第一个DBR的hash值对比。完全一样。(也可以通过winhex提供的同步和对比功能进行验证,winhex会不同的字节上显示黑色)
跳转到$MFT的开始位置,也即是$MFT自身的记录。发现其起始特征本应该是ASCII码的“FILE”四个字节,现在变成了ASCII码“BAD?”。这是造成提示“文件或目录损坏且无法读取”的关键问题所在。
跳转到偏移512=242位置,也就是这个MFT项的文件名起始位置。文件名正常:UNICODE码的“$MFT”。检查标准属性(10H),文件 名属性(30H),数据流属性(80H)属性,到80属性的时候,发现从80属性开始的第三行开始,都被清零,其他的重要的四个元数据文件 中,$Volume属性也出现了同样的错误。
找到备份的前四个元数据文件的记录。覆写错误的记录。根据DBR找到了MFT前四个元数据文件的备份,备份的元数据文件几乎跟前面四个一摸一样的错 误。只能是手工修复$MFT。在$MFT自身的记录当中,发现”结束VCN”并没有遭到破坏,这为后期的修复工作节省了很多时间,复制一个正常分区(分区 E)的第一个扇区到损坏的$MFT中,修改其中的一些数值。在80属性中,第三行字节的开始位置应该是描述的datarun的起始位置,根据起始VCN和 结束VCN得出$MFT的大小,计算方法:起始 VCN+1=LCN,根据这个数值,写入datarun。将LCN * 8 * 512=0000FE6DH。分别写入偏移(想对于80H)48H,50H,和58H,
写入方法:根据DBR中的描述的$MFT起始位置(000000C000H)786432号簇,$MFT的大小为VCN+1个簇 ,那么datarun就是 “33 E0 DF 06 00 00 0C 00H”,按同样的方法修复备份的$MFT的前四个元数据文件。
保存,重新载入分区,winhex打开,所有的元数据文件全部显示出来。文件、目录损都可以正常读取