电脑的esp分区在哪 电脑怎么划分esp分区_寻址

0x01 分区表:划分土地

分区表的意义就好比“老王有一块祖传的土地,他今年希望一半种玉米,一半种小麦。所以他把土地一分为二,中间用一个栅栏隔开,无论是播种还是施肥都分开管理。”


现在有一块磁盘,为了将不同用途的文件分开存放,便于管理,就可以使用分区表将磁盘划分为不同分区。通过各种工具(比如Disk Genius)或者命令(比如mkfs)可以将分区转化为可以直接使用的文件系统。

电脑的esp分区在哪 电脑怎么划分esp分区_寻址_02


磁盘分区图 分区表不是必须存在的,整个磁盘可以直接被格式化为某个文件系统。 比如在linux中可以直接通过 mkfs.ext4 /dev/sda 格式化 /dev/sda 绕过创建分区这一步。 大部分情况下,磁盘是不会被完整利用的。在使用了分区表的情况下,用于隔开分区的栅栏本身就会占用部分空间,分区表与第一个分区之间也存在空隙。即使排除以上的浪费,文件系统是严格按照簇的单位使用土地的,不被簇整除的土地会被抛弃。(下一章文件系统再聊簇)

电脑的esp分区在哪 电脑怎么划分esp分区_寻址

0x02 分区表第一代:MBR

MBR(Master Boot Record)是第一代被使用的分区表,存在于磁盘的第一个扇区。以下图为例(在010 Editor中加载Driver.bt模版也可以看到如下的图):



电脑的esp分区在哪 电脑怎么划分esp分区_电脑的esp分区在哪_04

关于MBR,能聊的东西很多,下面我们挑些重点来讲:



电脑的esp分区在哪 电脑怎么划分esp分区_寻址_05


MBR以末尾 55 AA

作为标志符。顺着 55 AA

往前推64个字节(每个分区16个字节)存4个分区信息。比如上图选中的部分: 1

第1个字节如果值是0x80表示该分区能作为启动分区。如果在下面4个分区项第一个字节都不是0x80可以初步推断这个磁盘上没有操作系统,很可能是数据分区,那就不用浪费时间去做取证仿真分析了。 2

第5个字节的07代表分区内文件系统类型,但是这个值是不可信的。根据上一章所说,这个东西类似扩展名,只是提示类型。具体类型以分区内实际十六进制为准。 3

从第9个字节开始4个字节  3F 00 00 00  代表该分区的起始位置,以扇区为单位。最后4个字节代表该分区的总大小  CE 2E C0 03 ,也是以扇区为单位。

电脑的esp分区在哪 电脑怎么划分esp分区_寻址

0x03 MBR的弊端

✪  不支持2T硬盘是致命伤


1

MBR使用64个字节描述4个分区信息,那如果分区数大于4个如何处理呢?扩展分区是为了尽可能使用每一寸硬盘而设计的,整体复杂度很高。 2

每个分区中4个字节描述分区起始位置,其最大值是0xFFFFFFFF,按照大多数扇区大小是512字节计算,那么最大的寻址空间大概2T。那大于2T的硬盘就会有很大的浪费。 3

MBR中混用CHS(Cylinder Head Sector)寻址和LBA(Logical Block Address)寻址。CHS寻址相当于提供磁头、柱面、扇区三个参数,需要人为通过特定公式来计算LBA地址。LBA就是我们讨论的第几个扇区。可以看出LBA可读性会更好贴近于用户需求,而CHS则贴近于硬件底层喜好。

电脑的esp分区在哪 电脑怎么划分esp分区_寻址

0x04 GPT闪亮登场

✪  34个扇区解决所有问题


GPT(GUID Partition Table)拥有以下几个特性: 1

占据磁盘前34个扇区,通过protected MBR与传统MBR区别开。 2

用32个扇区存放分区信息,每个分区信息占用128个字节。所以最多支持128个主分区。 3

采用8个字节描述分区起始地址与长度。最大磁盘能支持到8 ZiB (2^64 扇区数 × 512字节 )。 4

以往有大量攻击MBR的病毒,在操作系统加载前运行,所以重装系统也无法解决。GPT配合UEFI引导时,操作系统引导程序被存放在ESP分区。当开启UEFI安全启动且固件中存储了可信任根证书时,可以确保在加载操作系统之前,能够执行已签名并获得认证的“已知安全”代码和启动加载程序。这从根源上杜绝"鬼影病毒"。 5

GPT会备份自身分区表,头部被损坏还有副本。

电脑的esp分区在哪 电脑怎么划分esp分区_寻址

0x05 GPT数据结构

1、GPT分区表第一个扇区是Protected MBR。如下图所示:注意图中标识的红色部分,GPT区别于MBR的地方就在于第一个分区表分区系统类型为 EE 。



电脑的esp分区在哪 电脑怎么划分esp分区_分区表_09


2、GPT分区第二个扇区是Partition Table Header。因为第一个扇区几乎没用上,这个扇区其实就是一些描述GPT自身信息的一些数据结构。 比如备份分区表位置,第一个可用扇区(一般是 0x22

表示GPT自身占34个扇区),一共可用的扇区数。PartitionLBA就是下面分区表所在扇区(一般都是2,但是是代表第3个扇区)。每个分区表占字节大小( 0x80

),一共分区个数。详细见下图:

电脑的esp分区在哪 电脑怎么划分esp分区_寻址_10


3、从第3个扇区开始是真的分区表。最重要的有三点:这是什么类型分区;起始位置;结束位置(图中画红框标注出来的分别是起始和结束位置)。

电脑的esp分区在哪 电脑怎么划分esp分区_寻址_11

讲在最后:

1、分区表的存在是为了划分磁盘空间,分区表不是必然存在的。但是没有分区表的磁盘必然不能作为系统盘,所以取证人员在遇到如此情况的磁盘,也不必浪费时间进行仿真分析了。 2、所有的标志符,包括上一章提到的各种文件类型标志符和本章提到的MBR标志符 55 AA

不仅仅起到标识类型的作用,还可以作为CPU字节序的判断标准。 所以如果在第一个扇区末尾看到 AA 55

也不用惊讶,只是比较少见的大端序。 PS:CPU字节序影响后续整数类型的值,比如有4个字节的分区起始扇区,4个字节分区大小。大端和小端看到的值差的真大。 3、MBR分区表操作系统依赖分区的80标志位,GPT分区表启动项统一存放在ESP分区,Basic Data Partition则用于存放数据。这是提到为什么要关注GPT中分区类型的原因。 4、分区表即使被完全损坏也并不是完全没有办法。火眼会自动搜索丢失的分区信息。几乎常见的文件系统都能覆盖到。