FAT32文件系统的DBR与FAT16的DBR很类似,也由5部分组成,分别为跳转指令、OEM代号、BPB、引导程序和结束标志,图4-286所示是一个完整的FAT32文件系统的DBR。

FAT32文件系统的DBR分析-数据恢复迷

图4-286 FAT32文件系统的DBR

跳转指令

跳转指令本身占用2字节,它将程序执行流程跳转到引导程序处,比如当前DBR中的“EB 58”,就是代表汇编语言的“JMP 58”。需要注意该指令本身占用2字节,计算跳转目标地址时以该指令的下一字节为基准,所以实际执行的下一条指令应该位于5A。紧接着跳转指令的是一条空指令NOP(90H)。

OEM代号

这部分占8字节,其内容由创建该文件系统的OEM厂商具体安排。当前DBR中的OEM代号为“MSDOS5.0”,说明这个FAT32分区是由微软的Windows 2000以上的操作系统格式化创建的。

BPB

FAT32的BPB从第DBR的第12(0BH偏移处)个字节开始,占用79字节,记录了有关该文件系统的重要信息,其中各个参数的含义见表4-25。

表4-25 FAT32的BPB参数

FAT32文件系统的DBR分析-数据恢复迷

这些参数也可以使用WinHex中的模板来查看,WinHex的模板管理器中提供FAT32的DBR模板。打开WinHex的模板管理器,选择FAT32的DBR模板,如图4-287所示。

FAT32文件系统的DBR分析-数据恢复迷

图4-287 选择FAT32的DBR模板

双击模板后就可以查看FAT32的DBR信息了,如图4-288所示。

FAT32文件系统的DBR分析-数据恢复迷

图4-288 FAT32的DBR模板

下面对这些参数作详细分析。

(1)0BH~0CH:每扇区字节数

记录每个逻辑扇区的大小,一般为512字节,但512并不是固定值,该值可以由程序定义,合法值包括512、1024、2048和4096字节。

(2)0DH~0DH:每簇扇区数

每簇扇区数记录着文件系统的簇大小,即由多少个扇区组成一个簇。

FAT32最大支持128扇区的簇。

在FAT32文件系统中所有的簇从2开始进行编号,每个簇都有一个自己的地址编号,并且所有的簇都位于数据区内,在数据区之前是没有簇的。

(3)0EH~0FH:DBR保留扇区数

DBR保留扇区数是指DBR本身占用的扇区以及其后保留扇区的总和,也就是DBR到FAT1之间的扇区总数,或者说是FAT1的开始扇区号。

对于FAT32文件系统来说,该值的取值范围是32扇区到38扇区之间。

(4)10H~10H:FAT个数

FAT个数描述了该文件系统中有几个FAT表,一般在FAT文件系统中都有两个FAT,即FAT1和FAT2,FAT2是FAT1的备份。

(5)11H~12H:未用

这两个字节在FAT16中用来表示FDT中最大所能容纳的目录项数,FAT32没有固定的FDT,所以不用这个参数。

(6)13H~14H:未用

这两个字节在FAT16中用来表示小于32MB的分区的扇区总数,FAT32的总是大于32MB,所以不用这个参数。

(7)15H~15H:介质描述符

介质描述符是描述磁盘介质的参数,根据磁盘性质的不同,取不同的值。具体取值见表4-21。

(8)16H~17H:未用

这两个字节在FAT16中用来表示每个FAT表包含的扇区数,FAT32不用这个位置。

(9)18H~19H:每磁道扇区数

这是逻辑C/H/S中的一个参数,其值一般为63。

(10)1AH~1BH:磁头数

这也是逻辑C/H/S中的一个参数,其值一般为255。

(11)1CH~1FH:隐藏扇区数

隐藏扇区数是指本分区之前使用的扇区数,该值与分区表中所描述的该分区的起始扇区号一致。对于主磁盘分区来讲,是MBR到该分区DBR之间的扇区数;对于扩展分区中的逻辑驱动器来讲,是其EBR到该分区DBR之间的扇区数。

(12)20H~23H:扇区总数

扇区总数是指分区的总扇区数,也就是FAT32分区的大小。

(13)24H~27H:每FAT扇区数

这四个字节用来记录FAT32分区中每个FAT表占用的扇区数。

(14)28H~29H:标志

这两个字节用于表示FAT2是否可用,当其二进制最高位置1时,表示只有FAT1可用,否则FAT2也可用。

(15)2AH~2BH:版本

这两个字节通常都为0。

(16)2CH~2FH:根目录首簇号

分区在格式化为FAT32文件系统时,格式化程序会在数据区中指派一个簇作为FAT32的根目录区的开始,并把该簇号记录在BPB中。通常都是把数据区的第一个簇分配给根目录使用,也就是2号簇。

(17)30H~31H:文件系统信息扇区号

FAT32文件系统在DBR的保留扇区中安排了一个文件系统信息扇区,用以记录数据区中空闲簇的数量及下一个空闲簇的簇号,该扇区一般在分区的1号扇区,也就是紧跟着DBR后的一个扇区,其内容如图4-289所示。

FAT32文件系统的DBR分析-数据恢复迷

图4-289 文件系统信息扇区

该扇区具体结构参数见表4-26。

表4-26 文件系统信息扇区的参数

字节偏移 字段长度(字节) 字段内容及含义
0x00 4 扩展引导标签“52 52 61 41”
0x04 480 未用
0x1E4 4 文件系统信息签名“72 72 41 61”
0x1E8 4 空闲簇数
0x1EC 4 下一个空闲簇的簇号
0x1F0 14 未用
0x1FE 2 结束标志“55 AA”

文件系统信息扇区的参数模板如图4-290所示。

FAT32文件系统的DBR分析-数据恢复迷

图4-290 文件系统信息扇区的参数模板

(18)32H~33H:DBR备份扇区号

FAT32文件系统在DBR的保留扇区中安排了一个DBR的备份,一般在6号扇区,也就是分区的第7个扇区。该备份扇区与原DBR扇区的内容完全一样,如果原DBR遭到破坏,可以用备份扇区修复。

(19)34H~3FH:未用

这12个字节保留不用。

(20)40H~40H:BIOS驱动器号

这是BIOS 的INT 13H所描述的设备号码,一般把硬盘定义为8xH。

(21)41H~41H:未用

这一个字节不使用,为0。

(22)42H~42H:扩展引导标记

扩展引导标记用来确认后面的三个参数是否有效,一般值为29H。

(23)43H~46H:卷序列号

卷序列号是格式化程序在创建文件系统时生成的一组4字节的随机数值。

(24)47H~51H:卷标

卷标是由用户在创建文件系统时指定的一个卷的名称,原来的系统把卷标记录在这个地址处,现在的系统已经不再使用这个地址记录卷标,而是由一个目录项来管理卷标。

(25)52H~59H:文件系统类型

BPB的最后一个参数,直接用ASCII码记录当前分区的文件系统类型。

引导程序

FAT32的DBR引导程序占用420字节(5AH~1FDH),在Windows 98之前的系统之下,这段代码负责完成DOS三个系统文件的装入,在Windows 2000之后的系统中,其负责完成将系统文件NTLDR装入,对于一个没有安装操作系统的分区来讲,这段程序没有用处。

结束标志

DBR的结束标志与MBR、EBR的结束标志都相同,为“55 AA”。

以上5个部分共占用512字节,正好是一个扇区,因此称它为DOS引导扇区。该部分的内容中除了第5部分结束标志是固定不变之外,其余4个部分都是不完全确定的,都因操作系统版本的不同而不同,也因硬盘的逻辑盘参数的变化而变化。