提示“目录或文件损坏且无法读取”的恢复
远程做的一个“目录或文件损坏且无法读取”的恢复。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打开,所有的元数据文件全部显示出来。文件、目录损都可以正常读取
提示“目录损坏且无法读取的原因有很多”。具体情况具体分析,以上方法仅供参考! 谢谢,从大哥的贴子里我学到了很多东西,谢谢(49: 谢谢,从大哥的贴子里我学到了很多东西,谢谢(49:
酒窝 发表于 2009-11-17 21:02 http://bbs.intohard.com/images/common/back.gif
呵呵,互相学习吧··~~ 支持樓主 ~!! 谢谢,从大哥的贴子里我学到了很多东西,谢谢 谢谢各位支持·· 最近一直比較忙,很久沒有回來逛逛了,呵呵.感謝冷狐兄弟分享經驗,. 最近一直比較忙,很久沒有回來逛逛了,呵呵.感謝冷狐兄弟分享經驗,.
dgtan 发表于 2009-11-18 10:07 http://bbs.intohard.com/images/common/back.gif
最近是很少看到你了··
由于是远程做的,截图不清楚,所以我在我的电脑上模拟出来的一个案例· 好贴,收藏下来慢慢消化。 好东西,支持