zck699 发表于 2012-8-8 22:46:18

另类手工修复ExFAT文件系统的DBR的方法

本帖最后由 zck699 于 2016-11-6 23:26 编辑

Microsoft的文件系统经历了FAT12、FAT16、FAT32、NTFS等文件系统,NTFS文件系统以其非常好的安全性及可恢复性得到广泛认可,也是微软力推的一种文件系统。
随着闪存盘容量的不断增大,比较适合大容量闪存盘的FAT32文件系统却不能存放单个4G及更大的文件。虽然将闪存盘格式化为NTFS文件系统可以解决这个问题,但是在闪存盘却不适合用NFTS文件系统,NTFS的日志功能会造成对闪存的不断读写,这对于闪存的寿命而言非常不利。为了解决这个问题,Microsoft推出了ExFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)文件系统,以适应大容量闪存存储大文件的需求(理论上它可以存储的单文件大小最大可达16EB,即16×1024×1024TB)。
对文件系统有研究的人都知道,对于FAT、NTFS等文件系统,如果DBR损坏出现格式化提示,我们都只需找一个正常的分区DBR写入并修改其中的PBP参数就能完整恢复原来的数据。然而,对ExFAT文件系统有一定研究的人都知道,ExFAT的DBR及其保留扇区校验非常严格,ExFAT文件系统的0~23扇区中任意一个扇区更改任意一个字节的数据都会出现格式化提示。因此,ExFAT文件系统的DBR扇区数据损坏后,我们用正常的ExFAT文件系统的DBR重写并修复其中的PBP参数来恢复ExFAT文件系统分区的数据是行不通的。可能我们会想到,把该分区格式化再用软件扫描恢复数据,然而,由于ExFAT文件系统才发展起来不久,格式化后,支持ExFAT文件系统格式化恢复的软件非常少,并且格式化会进一步损伤原来的数据,通过扫描恢复也不一定能完全恢复原来的数据。
那么,我们能否在不格式化的前提下,通过修改ExFAT文件系统的DBR及其保留扇区达到完整恢复数据的目的呢?答案是肯定的。在网上看到,有的同道中人可以通过修改PBP参数后更改校验值的方法实现,但这个校验值不是人人都会算,当然我也不会。通过研究,本人得到了另一个可行的办法实现修改ExFAT文件系统的DBR达到完整恢复数据的方法。
在讲解这个方法之前,我们首先对ExFAT文件系统DBR扇区、保留扇区、备份扇区再作一个基本了解。ExFAT文件系统的0号扇区是DBR,1-11号扇区为保留扇区,其中11号扇区是校验,12—23号扇区是0—11号扇区的备份。0-23这24个扇区中的数据都很重要,不能随意便改,只要任意改写这24个扇区中任意一个扇区的任意一个字节的数据,都会导致格式化提示而不能正常打开磁盘分区。
既然不能通过简单的修改DBR中的PBP参数修复ExFAT分区,那么我们应该怎样手工修复DBR呢?我的思路是:构建一个与原来的磁盘分区的PBP参数完全一致的一个DBR扇区及其保留扇区、备份扇区,然后将这个DBR及其后的23个扇区去替换原来的DBR及其后的23个扇区,这样不就可以正常打开原来的分区了吗?经过实践证明,我的这个思路的可行的并且也是成功的。
通常情况下,ExFAT文件系统用在U盘上,下面讲解一下修复步骤及方法:
第一步:构建一个扇区数与待恢复的U盘扇区数完全相同的磁盘镜像文件。
用Winhex打开待修复的磁盘,查看U盘总扇区数,然后新建一个文件,文件大小字节数为U盘扇区数*512字,保存新建文件。当然,也可以将U盘克隆为一个镜像文件,不过速度要慢些。
第二步:写分区表。
打开刚才保存的镜像文件并将它解释为磁盘,再打开待恢复U盘,将U盘0扇区中的分区表数据复制到镜像文件的相应位置并保存。
第三步:用虚拟磁盘工具加载镜像文件为磁盘。
用ImDisk虚拟磁盘工具,加载刚才保存的镜像文件。可加载为硬盘卷,也可加载为可移动盘卷。ImDisk虚拟磁盘工具的用法在这里就不介绍了。
第四步:格式化刚才加载的磁盘。
格式化刚才加载的磁盘分区,在格式化前,要对待恢复U盘分区分析,得到分区的簇大小,然后在格式化选项中,选择簇大小与待恢复U盘的簇大小相同。
第五步:写U盘中ExFAT文件的0—23扇区。
用Winhex打开刚才加载并已格式化好的磁盘分区,选中0—23扇区全部内容,按Ctrl+C将其复制到剪切板中,再打开U盘,跳转到ExFAT分区的起始扇区,按Ctrl+B将刚才复制的内容写入到U盘分区的相应扇区。
到此,重写U盘ExFAT分区的DBR及其保留扇区、备份扇区的工作就结束了,现在我们卸载U盘再重新插入U盘,就可以看到U盘中的数据了。
千万注意备份,如果U盘是在不同的系统上格式化的,参数有可能不相同!

如有需要,可联系淘宝网店“竹都数据恢复”,为您提供远程数据恢复服务!地址:http://zhudu.taobao.com,旺旺:zck699,QQ:2360574454

330wang 发表于 2012-8-9 09:45:29

方法不错。
http://bbs.intohard.com/thread-100031-1-3.html这里有软件。呵呵

xiaok55 发表于 2012-8-9 10:19:09

支持,顶

zck699 发表于 2012-8-9 14:13:05

330wang 发表于 2012-8-9 09:45 static/image/common/back.gif
方法不错。
http://bbs.intohard.com/thread-100031-1-3.html这里有软件。呵呵

软件只能用在起始扇区为63的硬盘上分区上,U盘很多时后它的分区起始扇区并不是63

ifgodie 发表于 2012-8-9 21:36:58

这个写的挺好的,值得借鉴

gepard 发表于 2012-12-9 21:54:11

exFAT适用本地硬盘吗?
exFAT会有变RAW的可能吗?

hsdlh 发表于 2012-12-13 13:54:42

这个写的挺好的

秋风扫落叶 发表于 2012-12-15 21:25:38

有见地啊,值得借鉴

ikkyphoenix 发表于 2013-1-6 14:34:36

支持楼主,不错!

hailanlan 发表于 2017-2-6 11:40:16

有疑问:第二步为什么要把待恢复U盘的分区表拷到镜像文件中,反正镜像文件是要格式化的,那第二步有什么用?
页: [1]
查看完整版本: 另类手工修复ExFAT文件系统的DBR的方法