|
本帖最后由 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 |
|