提示“目录或文件损坏且无法读取”的恢复

提示“目录或文件损坏且无法读取”的恢复
2009-11-17 21:38:21
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wnving.blog.51cto.com/801842/228879
        远程做的一个“目录或文件损坏且无法读取”的恢复。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打开,所有的元数据文件全部显示出来。文件、目录损都可以正常读取
  提示“目录损坏且无法读取的原因有很多”。具体情况具体分析,以上方法仅供参考!
本文出自 “北京天问数据恢复” 博客,请务必保留此出处http://wnving.blog.51cto.com/801842/228879
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章