与NTFS文件系统相关的MBR和DBR的简但分析

本文详细分析了Windows系统下NTFS文件系统的MBR(主引导扇区)和DBR(分区引导扇区)。MBR包含引导程序、磁盘签名和分区信息,最多存储4个主分区信息。DBR则包含分区引导程序、OEM代号、BPB(BIOS参数块)等,其中BPB提供了关于分区的重要信息,如簇大小、$MFT起始位置等。

本文描述windows系统下已经确定文件系统下的磁盘主引导扇区,文件系统为NTFS。其他操作系统下是否完全相同,暂时不知。

MBR以及DBR扇区分析

1 MBR

MBR全称为Master Boot Record ,俗称为主引导扇区。它是系统运行时第一块加载到内存中的扇区,其结构为:引导程序、磁盘签名、主分区信息和结束标记。每一部分在MBR中所占的位置如下图:

1 MBR扇区结构

黑框内为引导程序,绿色框内为 磁盘签名,红色框内为结束标志。引导程序不是我们感兴趣的不做分析。

磁盘签名在上图中标记占用了6B,但是实际上磁盘签名仅仅占用了前4个字节。磁盘签名的作用是说明当前物理磁盘已经完成了格式化和分区,如果磁盘签名为空,即4个字节的数据全部为00,那么说明磁盘尚没有完成初始化,操作系统无法识别和加载,从而导致系统崩溃。如果我们连续两次对物理磁盘进行格式化,那么每次格式化得到的磁盘签名是不相投的。

结束标志,结束标志的值始终是55 AA,占用2个字节。如果结束标志不是55 AA,那么在系统加载磁盘时候会报错。

在磁盘签名和结束标志之间是当前物理磁盘的分区信息。众所周知,通过操作系统界面,我们看到的磁盘分区有好多个。如果你通过管理界面查看分区信息,会看到有的磁盘分区是主分区,有些磁盘分区是扩展分区。之所以有这些差别,其原因就在这里。在MBR中每个分区记录占用16个字节,所以在仅仅占用64个字节中包含所有的磁盘分区信息是不肯能的。在MBR中最多包含4个分区的信息,而这4个分区称之为主分区;不在MBR中的分区信息称之为扩展分区。第一个扩展分区的位置信息在MBR中最有一个分区记录中表示。下面对分区记录中每个字节所代表的意义进行分析和阐述。

我们对图1中的第一条分区记录和最后一条分区记录进行分析,之所与选择这两条记录,原因是:当前物理磁盘总共划分了8个分区,第一条记录是普通的一条主分区记录,最后一个分区记录包含了扩展分区信息所在位置等信息。

第一条分区记录是:80 6B 10 00 07 86 0E 30 00 80 00 00 00 20 03 00

最后一条分区记录是:00 86 CE FF 0F 86 CE FF B1 A1 A9 03 60 10 6E 21

为了更加直观和清晰的表示每个字节所代表的意义,采用列表方式,如下表

偏移量

长度

意义

1BE

80

1B

引导标志,指明该分区是否为活动分区

1BF

6B

1B

开始磁头

1C0

10

6b

起始扇区,并且只是用了“10”字节中的0~5位,后面两位67用于起始柱面

1C1

00

10b

该字节的8为加上10字节中的后两位,总共8为表示该分区起始柱面

1C2

07

1B

表示分区类型,该条记录表示是分区本身文件系统类型或者分区是否为扩展分区(即该记录指向扩展分区信息所在扇区)

1C3

86

1B

该分区的结束磁头

1C4

0E

6b

结束扇区,同起始扇区类似,只占用当前字节中的0~5为,后面67位用于结束柱面

1C5

30

10b

结束柱面,共10为,包括本字节的八位和上一个字节的67两位

1C6

00 80 00 00

4B

偏移扇区,即当前扇区到分区起始扇区的距离(单位:扇区)

1C9

00 20 03 00

4B

分区所拥有的总扇区数

1 分区记录字节意义表

(如果字段长度超过一个字节,那么该字段代表的数值是按照由左到右有地位到高位)

1 是以分区记录中的第一条记录为例进行说明其意义的。如果我们将最后一条 分区记录的数据按照表1进行分析,分区类型为0F,查找分区类型表可知为扩展分区(windows 95 Extended 大于8GB)。由于分区类型表比较大,所以在这里对分区类型不进行详细列举。如果分区类型为0F,那么偏移扇区为第一扩展分区信息所在扇区的偏移量,而总扇区数表示所有扩展分区拥有的扇区数目累加和。

下图扩展分区信息所在的扇区数据

 

2 扩展分区分区记录所在扇区数据

在扩展分区的分区记录所在扇区,除最后两字节为结束标记以及两条分区记录外,其他位置的值是不确定的。图2中黑色方框内的数据为当前扩展分区的分区记录信息,红色方框内的数据时下一扩展分区的分区记录信息。如果当前扩展分区为最后一个扩展分区,那么红色方框内的数据为00。扩展分区记录的数据结构与MBR中分区记录的数据结构相同,所以在此不再累赘介绍,具体字节意义请参照表1

2 DBR

DBR全称为Driver Boot Record,俗称分区引导扇区。在DBR中包含分区引导程序、分区信息记录,比如文件$MFT起始簇、跳转代码、OEM、结束标志等信息。下图为DBR扇区数据:

 

3 DBR扇区数据分布情况

上图为DBR所在扇区分布情况。DBR 扇区总共有五部分数据组成,即跳转程序,绿色方框内的数据,共占3BOEM代号,浅绿色方框内,共占8BBPB数据,红色方框内,共占73B;引导程序,红色方框和黑色方框之间数据,共占426B;结束标志,黑色方框内,数值为 55 AA,占用2B。其中OEM代号的值与系统厂商有关,这里不做具体分析,由厂方设置其值。在本文中,分析的重点为BPB,具体如下所述。

BPBDBR整个扇区的的起始地址为0X0B,共73个字节,并且包含了丰富的关于当前分区的信息。我们以图3为例,对BPB进行详细分析,具体如下表:

偏移量

字段值

字段长

字段意义

0X0B

00 02

2B

每个扇区字节数目

0x0D

08

1B

每个簇所拥有扇区数

0X0E

00 00

2B

保留扇区(在NTFS中无用)

0x10

00 00 00

3B

无意义

0X13

00 00

2B

NTFS未使用

0X15

F8

1B

介质描述,F8代表硬盘,

0x16

00 00

2B

总为0

0x18

13 00

2B

每个磁道扇区数

0X1A

E0 00

2B

磁头数,是逻辑C/H/S中的一个参数,一般为FFNTFS中已经不使用了。

0X1C

B0 04 00 00

4B

隐藏扇区数,即MBR分区到当前DBR分区的扇区总数。

0X20

00 00 00 00

4B

NTFS未使用

0X24

80 00 80 00

4B

NTFS 未使用

0x28

FF 5F EF 07 00 00 00 00

8B

扇区总数

0x30

00 00 0C 00 00 00 00 00

8B

$MFT文件起始簇号

0x38

02 00 00 00 00 00 00 00

8B

$MFTMirr文件起始簇号

0x40

F6

1B

文件记录大小描述,该字节待用符号,当其为负数时,说明每个文件记录的大小要小于每个簇的扇区数,计算方法为2-1X每个文件记录的簇树

0x41

00 00 00

3B

未用

0X44

01

1B

索引缓冲区的大小描述,该字节与文件记录大小描述以及其计算方法相同。

0X45

00 00 00

3B

未用

0X48

BE 6B 50 4C B1 50 4C 78

8B

卷序列号

0X50

00 00 00 00

4B

校验和

2 DBR扇区中BPB字段分析表

2中提到簇的概念,所谓的簇是指文件系统划分的以若干个扇区为单位,一个簇至少包含1个扇区。在对文件分配空间或者文件预读取等,文件系统可以以簇为单位,来减少磁盘碎片和减少磁盘操作次数等。在BPB中,我们可以获取分区许多信息,比如磁盘大小、簇大小、$MFT文件起始位置、索引缓冲区大小等等,而这些信息也是我们以后分析$MFT文件记录和读取文件等操作所必须的信息。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值