快速修复U盘、TF卡、SD卡、CF卡等的MBR和DBR恢复数据

[复制链接]
  • TA的每日心情
    奋斗
    2012-8-8 20:58
  • 签到天数: 1 天

    [LV.1]布衣百姓

    14

    主题

    64

    回帖

    856

    积分

    [INTOHARD]连长

    Rank: 4

    积分
    856
    发表于 2012-8-8 22:50:40 | 显示全部楼层 |阅读模式
    本帖最后由 zck699 于 2015-12-3 03:24 编辑

    一、U内存卡的MBR和DBR的基本知识

    1、现在的U盘、TF卡、SD卡、CF卡等容量都较大,分区格式通常为FAT32,FAT16很少(只有一些古董级的使用);

    2、U盘、TF卡、SD卡、CF卡等的MBR扇区(0号扇区)一般有一个分区表及55AA标记(分区表知识在此不赘述),可能有引导代码,也可能没有引导代码(有无引导代码都不影响数据恢复);

    3、DBR扇区00—3F为64个字节的跳转代码、OEM标识、PBP参数及卷标等,引导代码可能有也可能没有(不影响数据恢复),最后两字节为55AA标记;
    以下为FAT32文件系统中各字节含义:
       字节偏移(16进制)  字节数         含义
           00—02             3        跳转代码EB0090;
           03—0A             8        OEM,即文件系统标志(ASCII码),通常为MSDOS5.0
           0B—0C             2        每扇区字节数,通常都为0002(512)
           0D—0D            1        每簇扇区数,常为8、16、32、64等(必须为2的幂)
           0E—0E             1        保留扇区数,即FAT1扇区号与DBR扇区号之差
           10—10             1        FAT个数,通常为2
           11—12             2        根目录可容纳的目录项数目,通常为512(无意义)
           13—14             2        分区扇区总数(即分区大小,小于32M使用),超过32M时使用偏移20—23四个字节存放
           15—15             1        介质描述,通常为F8
           16—17             2        FAT表的大小扇区数(分区小于32M使用)
           18—19             2        每扇区的磁道数,通常为63
           1A—1B             2        磁头数,通常为255
           1C—1F             4        隐藏扇区数,即DBR扇区之前的扇区总数
           20—23             4        分区扇区总数(分区大于32M使用)
           24—27             4        FAT表的大小扇区数(分区大于32M使用)
           28—29             2        延迟,通常为0
           2A—2B             2        版本号
           2C—2F             4        根目录簇号
           30—31             2        FSInfo 扇区号
           32—33             2        DBR备份扇区号
           34—3F             12      保留未使用,通常全为0
           40—40             1        BIOS 驱动,常为80
           41—41             1        保留未使用,通常为0
           42—42             1        扩展引导标记,通常这29H
           43—46             2        卷序列号
           47—51             11      卷标(此处通常为NO NAME的ASCII码,FAT32的卷标在根目录中记录)
           52—57             2        文件系统类型,FAT32的ASCII码
           5A—1FD           2        引导代码
           1FE—1FF          2        签名值55AA

    4、文件系统的6号扇区为DBR备份;

    5、MBR中的分区表被破坏或DBR扇区被破坏,都会表现出在系统中提示未格式化。

    二、MBR和DBR恢复方法

    1、做镜像备份。如果对文件系统不熟悉,为避免做一些错误修改,可先把需要恢复的U盘、TF卡、SD卡、CF卡等做一个扇区级备份,再备份的镜像文件中操作。在winhex的工具→磁盘工具→克隆磁盘,将存储介质备份为一个文件(来源选要备份的存储介质,目标为一个文件);

    2、 在Winhex中打开备份的备份文件并设置镜像文件为磁盘;

    3、查看将MBR号扇区有无分区表及55AA标记。如有,定位到分区起始位置,查看是否为DBR扇区;

    4、如没有分区表或分区表中指定的分区起始扇区不是DBR,搜索FAT32的DBR跳转指令EB5890(设置条件为512=0)或55AA标记(设置条件为512=510),如搜索到确定为DBR,跳过5—7步。如未搜索到,继续下面步骤;

    5、F8FFFF找到FAT1和FAT2的扇区号,用FAT2-FAT1得出FAT表大小值;

    6、复制相应的正常的FAT32文件系统的DBR到MBR扇区和FAT1起始扇区之间任意位置;

    7、修改DBR中相应值:
      (1)“保留扇区”  即为FAT1起始扇区号与DBR扇区号之差;
      (2)“扇区/FAT”  即FAT表大小值,为FAT2与FAT1扇区号之差,上面第5步计算得的值;
      (3)“隐藏扇区数”  DBR之前的扇区总数,因扇区编号从0开始,故隐藏扇区数就是DBR扇区号值;
      (5)“扇区/簇” 即每簇扇区数(通常4G、8G为8,16G为16,32G为32),如不正确再修改,当然最好是搜索两个目录起始扇区分析确定,不过比较麻烦;
      (6)“分区大小扇区”值:可用内存卡扇区总数减DBR扇区号值,修改为接近于该值而小于或等于该值的一个值(最好小于该值,因为通常内存卡中都有部分剩于扇区);

    8、写分区表或修改分区表中的参数:
      (1)分区类型(分区表项的第5个字节)  FAT32文件系统为0B或0C;
      (2)分区起始    为DBR中的隐藏扇区值;
      (3)分区大小扇区数   DBR中的“扇区(32M以上)”或“扇区(32M以下)”值;
      (4)由于现在的磁盘都用LBA寻址方式,分区表中的开始头、开始扇区、开始扇区、结束头、结束扇区、结束扇区已没实际意义,可随便填写(如开始参数为000101,结束参数为FEFFFF),也可不填写;

    8、用ImDisk虚拟磁盘工具将改好的镜像文件装载磁盘,打开装载的盘符,查看数据是否正确,如不正确,再尝试修改DBR中的“扇区/簇”值;

    其实,如果是DBR损坏,这样一项项查再一项项改也是一件麻烦的事,可写一个脚本,在FAT1之前任意定一个扇区作DBR扇区,让脚本自动为你在该盲区写一个DBR,把分区表中的起始扇区号改为你设定的扇区号,非常省事而且快速准确。

    如有需求,欢迎光临我的淘宝店:http://Hisuo.taobao.com
  • TA的每日心情
    开心
    2014-4-15 07:53
  • 签到天数: 1 天

    [LV.1]布衣百姓

    0

    主题

    37

    回帖

    68

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    68
    发表于 2012-12-14 08:35:06 | 显示全部楼层
    这样能行吗
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表