MBR和GPT磁盘结构
硬盘分区分布图

MBR硬盘
MBR硬盘的分区表也叫DOS分区表,0号扇区是主引导记录(MBR),DOS分区体系的硬盘用分区表记录每个分区的类型起始位置和分区的大小。其中分区表就在0号扇区内,所以0号扇区如果损坏,那么这个硬盘就不能正确识别分区。
55AA作为签名标志
主分区表项(DBR)
一行16个字节为一个分区表项

分区表项结构
| 偏移(16进制) | 字节数 | 描述 |
|---|---|---|
| 00-00 | 1 | 0x00:不可引导:0x80:可引导(一般是系统盘) |
| 01-03 | 3 | 分区的起始CHS地址(由于CHS只能寻址到8G,早已淘汰不用,可空) |
| 04-04 | 1 | 分区的类型 |
| 05-07 | 3 | 结束CHS地址(可空) |
| 08-0B | 4 | 分区的起始扇区号 |
| OC-0F | 4 | 分区所包含的扇区数 |
第1个字节:只需要一个系统盘,也就是0x80开头的

第2个-第4个字节:CHS地址
CHS地址 是早期硬盘使用的一种物理寻址方式,用于定位磁盘上的每一个扇区。它由三个参数组成:
- Cylinder - 柱面号
- Head - 磁头号
- Sector - 扇区号
因此得名 C(柱面)-H(磁头)-S(扇区)寻址。
a. 柱面
硬盘由多个盘片叠成。所有盘片上半径相同的磁道,在垂直方向上形成一个“圆柱面”,这就是柱面。柱面号就是这些同心圆环的编号,从最外圈开始(0柱面)向内递增。b. 磁头
每个盘片都有上下两个面,每个面都有一个独立的读写磁头。磁头号就是这些磁头的编号。它同时也标识了具体是哪个盘面。c. 扇区
每个磁道(同心圆)被等分为许多小段,每一段称为一个扇区,是磁盘读写的最小物理单元(传统为512字节)。扇区号就是在一个磁道内的编号,从1开始(注意不是0)。因此,一个CHS地址(C, H, S)唯一地指向了硬盘上一个具体的物理扇区。
第5个字节:分区的类型
分区类型值含义
| 类型值 | 含义 |
|---|---|
| 0x07 | NTFS、ExFat |
| 0x0C、0x0B | FAT32 |
| 0x0F、0x05 | 扩展分区表 |
| 0xEE | GPT |
第6个-第8个字节:结束CHS地址
第9个-第12个字节:分区的起始扇区号

如图所示,起始扇区号为2048
第13个-第16个字节:分区所包含的扇区数

如图所示,分区所包含的扇区数为491517952
MBR硬盘结构图
由图可知,MBR硬盘的分区是连续的,一个紧挨着一个。所以我们在做数据恢复时,往往找到一个分区时,很快就能找到所有的分区。
修复主分区表恢复误删的分区
步骤一:
在“查找十六进制数值”功能中搜索EB5290,该开头为NTFS标志,大部分超过100G的磁盘基本采用NTFS,所以在大磁盘情况下,优先查找NTFS标志

如图所示,起始扇区为419999744号扇区,EFDF5609为文件系统的总扇区数,即156688383个扇区
步骤二:
计算该分区最后一个扇区
419999744+156688383=576688127
通过“跳至扇区”功能,输入576688127跳至该扇区
如图所示,已经跳至指定扇区,并且已经出现下一个NTFS的标志头,说明已经找到上一个分区的结尾,那么下一个扇区的就是下一个分区的起始扇区号,重复以上步骤,找出这所有文件系统的起始扇区号和总扇区数
步骤三:
下一步,找到0号扇区的分区表,如下图所示,并且这两个分区的起始扇区号和总扇区数已分别找到

点击对应的数据,可以在数据解释器的32Bit处直接将扇区号输入对数据进行更改

如上图所示,这两个分区的分区类型改为0x07(NTFS),起始扇区和总扇区数也已分别更改
扩展分区表(EBR)

扩展分区表结构
第一个表项:分区起始扇区号(相对于本扩展分区表的位置)
第二个表项:下一个扩展分区表扇区号(相对于整个主扩展分区表)
主扩展分区表位于主分区表项的第四个分区表项,记录主扩展分区表的起始扇区号

记录该主扩展分区的总扇区数

跳转到主扩展分区表的起始扇区219541504号扇区,该主扩展分区表的第一个表项指向第一个逻辑分区(如图逻辑分区1),该起始扇区号显示为2048,但这不是实际的起始扇区号,他是相对于逻辑分区的起始扇区号,而不是相对于整个分区,所以应该加上219541504,2048+219541504=219543552,第一个逻辑分区(如图逻辑分区1)的起始扇区号为219543552

主扩展分区表的第二条表项为下一个普通扩展分区表(如图扩展分区表2),61440000是该逻辑分区(如图逻辑分区1)的总扇区数,加上第一个逻辑分区(如图逻辑分区1)的起始扇区号219543552,61440000+219543552=280983552,得到下一个普通扩展分区表(如图扩展分区表2)的起始扇区号为280983552
1 | 219541504 + 2048 + 61440000 =280983552 |

根据280983552地址,跳转到下一个扩展分区表(如图扩展分区表2)的起始扇区
该普通扩展分区(如图扩展分区表2)的对应的逻辑分区(如图逻辑分区2)的起始扇区号为280983552+2048=280985600,该逻辑分区2的总扇区数为102397952,那么可以相加(280985600+102397952=383,383,552)计算出下一个扩展分区表(如图扩展分区表3)的起始扇区号
同时,还有另一种办法,因为该扩展分区表(如图扩展分区表2)的第二个表项中的起始扇区的部分是指向下一个扩展分区表(如图扩展分区表3)的起始扇区,但是这个起始扇区是相对于整个主扩展分区表的,所以使用主扩展分区表的起始扇区号+扩展分区表2第二个表项显示的扩展分区表3的起始扇区号=扩展分区表3实际的起始扇区号
如下图所示:

- **注:主扩展分区表只有一个,其他的就是普通的扩展分区表**,可以有多个
最后计算得到的数据中,分区1-3为主分区,分区4开始为扩展分区,主扩展分区表以及普通扩展分区表的起始扇区号均对应各分区的第1扇区
