分区
硬盘分区是指将硬盘的整体存储空间划分成多个独立的区域,每个区域可以用来安装操作系统、应用程序以及存储数据文件等。分区的目的是为了更好地管理和使用硬盘空间,提高数据存取的效率和安全性。
分区的类型
硬盘分区主要有三种类型:主分区、扩展分区和逻辑分区。
- 主分区:这是硬盘上最基本的分区类型,通常用于安装操作系统。一个硬盘最多可以有四个主分区。
- 扩展分区:由于主分区的数量限制,扩展分区被引入来解决这个问题。扩展分区本身不能存储数据,但可以包含多个逻辑分区。
- 逻辑分区:逻辑分区是扩展分区的一部分,可以用于存储数据。一个扩展分区可以包含多个逻辑分区。
分区的好处
分区有以下几个好处:
- 数据隔离:每个分区的数据是独立的,对一个分区的操作不会影响其他分区的数据。
- 提高性能:将数据集中在一个分区内,可以提高数据的读写速度和性能。
- 便于管理:分区可以帮助用户更好地管理硬盘空间,例如将操作系统、应用程序和数据文件分别存放在不同的分区中。
分区格式
常见的分区格式有MBR(主引导记录)和GPT(GUID分区表)。
- MBR格式:这是早期硬盘使用的分区格式,支持最多四个主分区或三个主分区加一个扩展分区。
- GPT格式:这是较新的分区格式,支持更多的分区,并且具有更好的兼容性和安全性。
MBR格式
MBR(Master Boot Record)诞生于1983年,伴随着IBM PC DOS 2.0问世,至今已有近40年历史。这个古老而精巧的设计位于硬盘的第一个扇区(第0扇区),虽然只有512字节,却掌控着整个硬盘的命运。
这512字节可以分为三个关键部分:
- 引导代码(前446字节):包含可执行代码,负责加载操作系统的第一阶段引导程序。
- 分区表(接下来的64字节):记录硬盘的分区信息,这是我们需要重点研究的核心内容
- 结束标志(最后2字节55AA):标识这是一个有效的MBR。
MBR分区表
- 第 1 字节:引导标志
- 这决定了计算机能不能从这个分区启动系统。
- 如果在底层看到
80,代表这是激活的主分区(通常是 C 盘);如果是00,代表非激活。如果遇到无法引导的故障,或者在分析恶意软件破坏引导扇区时,检查这个字节是第一步。
- 第 2、3、4 字节 & 第 6、7、8 字节:CHS 寻址
- CHS 代表 柱面(Cylinder)、磁头(Head)、扇区(Sector)。这是早期机械硬盘物理结构的寻址方式。
- 但在现代大容量硬盘中,这种老旧的寻址方式早已触及上限(通常会被填满
FF FF FF以表示该数值无效)。不过,在分析老旧存储设备或某些特定嵌入式系统的镜像包时,依然会遇到它。
- 第 5 字节:分区类型 ID
- 这就是咱们上一个问题中提到的类型标识符。
07是 NTFS,83是 Linux 等。在进行底层数据恢复时,如果这一个字节被恶意软件篡改或者意外损坏(比如变成了00未知状态),操作系统就会在资源管理器中提示“分区未格式化”或完全不显示,但实际上底层的完整数据区毫发无损。通过手动将这个字节改回07,就能瞬间恢复一个丢失的 Windows 盘。
- 第 9、10、11、12 字节:LBA 起始偏移
- 这是现代硬盘真正依赖的寻址方式(Logical Block Addressing,逻辑块寻址)。它记录了该分区从硬盘的第几个扇区开始。
- 关键点——小端存储(Little-Endian): 图中特别标注了这一点。在计算机底层,低位字节存放在低地址。这意味着如果你在十六进制编辑器里看到这四个字节是
00 08 00 00,你需要把它反过来读成00 00 08 00(十六进制),转换成十进制也就是第 2048 个扇区(这是现代 Windows 系统常见的起始偏移量,用于 4K 对齐)。
- 第 13、14、15、16 字节:总扇区
- 这决定了当前分区到底有多大。同样采用小端序存储。
- 计算公式:
起始 LBA 扇区号+总扇区数= 这个分区的物理结束位置。在手工提取固件、切割磁盘镜像或逆向分析存储结构时,这两个 LBA 参数是划定数据边界的唯一基准。
局限性与变通方案
MBR设计上的限制逐渐在现代计算环境中显现:
- 容量限制:由于使用32位表示扇区数,MBR最大支持2TB(2^32×512字节)的硬盘。
- 分区数量限制:最多4个主分区,需要通过扩展分区和逻辑分区的复杂方案来突破。
- 单点故障:MBR损坏将导致整个磁盘无法访问,缺乏冗余设计。
尽管有这些限制,MBR因其简单可靠,至今仍被许多传统系统和工具所支持。
GPT格式
与 MBR 仅有 64 字节的局促空间不同,GPT 采用了极其宽裕且安全的设计。它抛弃了陈旧的 CHS 寻址,全面采用 64 位的 LBA(逻辑块寻址),最大支持惊人的 9.4 ZB 容量。
在底层结构上,GPT 最大的特点是冗余备份:硬盘头部(LBA 1)有一份主分区表,硬盘尾部(最后一个扇区)还会强制存放一份备份分区表。在数据取证或灾难恢复时,如果头部遭受勒索软件破坏,直接跳转到磁盘末尾提取备份表,即可瞬间找回所有分区。
GPT 的每个分区表项占用 128 字节,详细拆解如下:
- 第 0~15 字节:分区类型 GUID
- 占用 16 字节(128 位)。这是分区的“职业代码”。
- 例如:Windows 基本数据分区的固定代码是
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7。在底层扫描时,如果匹配到这串十六进制特征码,就可以断定这是一个 Windows 数据盘。
- 第 16~31 字节:唯一分区 GUID
- 占用 16 字节。这是分区的“绝对唯一身份证”。
- 每次创建分区时由系统随机生成。在复杂的电子证据保全中,这个 GUID 是确认“这就是原本那个分区”的铁证,比盘符(C盘、D盘)可靠得多。
- 第 32~39 字节:起始 LBA
- 占用 8 字节(64 位寻址),这也是它能突破 MBR 2TB 限制的核心。
- 关键点——依然是小端存储:同 MBR 一样,低位字节在前。它精确记录了分区数据的物理起点的绝对扇区号。
- 第 40~47 字节:结束 LBA
- 占用 8 字节。记录分区结束的绝对扇区号。
- 计算公式: 与 MBR 需要自己计算不同,GPT 直接给出了终点。
(结束 LBA - 起始 LBA + 1) * 扇区大小(通常512或4096字节)= 这个分区的精确字节大小。
- 第 48~55 字节:属性标志
- 占用 8 字节的标志位。
- 它控制着这个分区在操作系统中的行为。例如,第 60 位如果被设置为
1,操作系统就会将其视为“只读”分区,禁止写入;第 62 位可将其设为“隐藏”分区。
- 第 56~127 字节:分区名称
- 占用 72 字节。
- 编码方式: 采用 UTF-16LE 编码(小端序 Unicode)。每个字符占 2 个字节,这意味着它最多可以存储 36 个字符的自定义名称(比如你给分区起的“Work Data”或“证据镜像”)。这在底层十六进制查看器中,通常表现为字母中间夹杂着
00。
文件系统
核心作用
- 空间分配:当你保存一个文件时,文件系统负责在硬盘上寻找空闲的“货架”(扇区/簇),并把数据存进去。
- 目录结构维护:它实现了我们熟悉的“文件夹嵌套文件夹”的树状结构,让你能通过路径(如
/usr/local/bin或C:\Windows)找到目标。 - 索引与寻址(关键机制):文件系统会维护一本“超级目录”(比如 Windows 的 MFT 或 Linux 的 Inode 表)。这本目录记录了每个文件的名称、权限(元数据),以及它在硬盘上的物理绝对位置。
常见文件系统
FAT文件系统
FAT16

标识符
- 在 MBR 分区表中(第 5 字节): 与 NTFS 固定使用
07不同,FAT 系统由于历史悠久,经历了多次升级,所以有多个标识符(Type ID):06:早期的 FAT16(大于 32MB 的分区)。04:极其古老的 FAT16(小于 32MB 的分区)。
- 在 GPT 分区表中(16 字节 Type GUID):
- 如果你在硬盘上划出一块 2GB 的空间并格式化为 FAT16,在底层的 GPT 分区表中,它的 第 0~15 字节(分区类型 GUID) 会被无差别地打上以下标识:
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 C12A7328-F81F-11D2-BA4B-00A0C93EC93B
- 如果你在硬盘上划出一块 2GB 的空间并格式化为 FAT16,在底层的 GPT 分区表中,它的 第 0~15 字节(分区类型 GUID) 会被无差别地打上以下标识:
- 逻辑层面
- FAT16:在 VBR 偏移
0x36处,固定为 ASCII 码FAT16(十六进制:46 41 54 31 36 20 20 20)
- FAT16:在 VBR 偏移
FAT32

特点
- 最广泛兼容的文件系统,几乎所有操作系统都能识别
- 单个文件最大不能超过4GB
- 单个分区最大不能超过32GB(实际格式化时通常限制在2TB以内)
- 没有内置的安全特性和权限管理
适用场景:U盘、存储卡、需要在不同系统间共享的小容量存储设备
标识符
- **在 MBR 分区表中(第 5 字节)
0B:FAT32(使用旧的 CHS 寻址,通常适用于 8GB 以下容量)。0C:FAT32(使用现代的 LBA 寻址,目前最常见)。
- 在 GPT 分区表中(16 字节 Type GUID):
- 普通数据盘: 如果你把 U 盘格式化为 FAT32,它通常直接共用 Windows 基本数据分区的 GUID:
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7。 - 系统引导盘(ESP): 这是现代计算机非常关键的一个分区。所有采用 UEFI 启动的电脑,硬盘开头必定会隐藏一个 EFI 系统分区 (ESP),用来存放引导文件。这个 ESP 分区强制要求必须是 FAT32 格式,它拥有专属的强标识 GUID:
C12A7328-F81F-11D2-BA4B-00A0C93EC93B。
- 普通数据盘: 如果你把 U 盘格式化为 FAT32,它通常直接共用 Windows 基本数据分区的 GUID:
- 逻辑层面(内部 VBR 扇区特征码):
- FAT32:在 VBR(第 0 扇区)偏移
0x52到0x59处,固定为 ASCII 码FAT32(十六进制:46 41 54 33 32 20 20 20)。 - FAT16:在 VBR 偏移
0x36处,固定为 ASCII 码FAT16(十六进制:46 41 54 31 36 20 20 20)。
- FAT32:在 VBR(第 0 扇区)偏移
exFAT文件系统
特点
- 微软专为闪存设计的文件系统
- 克服了FAT32的文件大小限制,支持超过4GB的大文件
- 比NTFS更轻量,但没有NTFS的高级功能
- 兼容性介于FAT32和NTFS之间,苹果电脑也可读写
标识符
- 逻辑层面
- exFAT:在 VBR 偏移
0x03处,固定为 ASCII 码EXFAT(十六进制:45 58 46 41 54 20 20 20)。
- exFAT:在 VBR 偏移
Windows文件分区
NTFS文件系统
NTFS 抛弃了 FAT 系列老旧的链表式结构,采用了一种名为 MFT(主文件表,Master File Table) 的关系型数据库结构来管理硬盘。在 NTFS 的世界里有一个至高无上的哲学:“万物皆文件”(包括文件系统本身的元数据,也全都是隐藏文件)。
特点
- Windows NT/2000/XP/Vista/7/8/10/11的默认文件系统
- 理论上支持16EB(1EB=1024PB=1,048,576TB)的单个文件和分区大小
- 提供文件权限控制、加密、压缩功能
- 具有日志功能,可以在系统崩溃后快速恢复数据一致性
- 支持硬链接、文件流等高级特性
标识符
- 物理层面(分区表): MBR 中为
07;GPT 中同为基本数据分区 GUIDEBD0A0A2-B9E5-4433-87C0-68B6B72699C7。 - 逻辑层面(内部 VBR 扇区):
- 偏移
0x03到0x0A处,固定为 ASCII 码NTFS(十六进制:4E 54 46 53 20 20 20 20)。 - 扇区开头的跳转指令通常为
EB 52 90。
- 偏移
- 终极取证层面(MFT 魔数):
- 每一个 1KB 的 MFT 记录起点,固定为 ASCII 字符
FILE(十六进制:46 49 4C 45)。 - 若该区域有物理坏道,Windows 会将其标记为
BAAD(十六进制:42 41 41 44)。全盘搜索FILE0即可在无分区表的情况下重建目录树。
- 每一个 1KB 的 MFT 记录起点,固定为 ASCII 字符
MFT(主文件表)的微观世界
MFT 就像是一本超级字典,硬盘里的每一个文件(或文件夹)在这本字典里都占有一页,这一页被称为 MFT 记录(通常是 1024 字节/1KB) 在数据恢复和底层分析时,我们主要就是和这 1KB 的记录打交道。NTFS 会用不同的“属性(Attributes)”来填充这 1KB 的空间:
- 驻留属性 (Resident): 如果你存了一个只有几十个字节的极小文件(比如一段密码文本),NTFS 觉得为了这点数据去硬盘里找个大扇区太浪费了,它会直接把文件的真实内容塞进这 1KB 的 MFT 记录里! 这种情况下,文件甚至不需要占用外部的数据簇。
- 非驻留属性 (Non-Resident): 当文件很大,1KB 塞不下时,NTFS 就会在这 1KB 里写下被称为“数据运行(Data Runs)”的指针,这些指针像藏宝图一样,精确指向硬盘上真正存放巨大数据的物理扇区位置。
Linux文件分区
Linux 遵循“一切皆文件”的哲学,通过 VFS(虚拟文件系统)屏蔽了底层差异。其核心数据结构与 Windows 有着本质的区别。
ext4文件系统
作为绝大多数主流 Linux 发行版(如 Ubuntu, Debian)的默认格式,ext4 是目前最经典、使用最广泛的 Linux 文件系统。
特点
- 极度稳定与成熟:支持日志记录(防断电损坏),支持大文件。
- 连续数据块技术 (Extent):底层采用 extent 技术来分配连续的物理扇区,极大地减少了磁盘碎片,提升读写效率。
- 权限分离:基于 Linux 特有的 UID/GID 权限体系,与 Windows 的 ACL 权限体系完全不互通。
标识符
- 物理层面(分区表):
- MBR 中,Linux 原生数据分区的标识符通常固定为
83。 - GPT 中,Linux 基本数据分区的 GUID 通常为
0FC63DAF-8483-4772-8E79-3D69D8477DE4。
- MBR 中,Linux 原生数据分区的标识符通常固定为
- 逻辑层面(内部超级块特征码):
- ext4 的底层特征码不叫 VBR,而是存放在超级块 (Superblock) 中。
- 偏移与魔数:跳转到分区的第 1024 字节(
0x400)处进入超级块,在超级块的偏移0x38处,必定能看到固定的 十六进制特征码53 EF(小端序存储的0xEF53)。这是底层取证扫描 ext4 分区的绝对核心标志。
Inode (索引节点) 的微观世界
与 NTFS 的 MFT 记录直接包含文件名不同,Linux 的文件属性和文件名是身首异处的。
- Inode 本体:这是 Linux 底层真正的文件身份证。里面存放了文件的大小、权限(rwx)、所有者(UID/GID)、时间戳(MAC时间)以及指向物理数据块的指针。注意:整个 Inode 中绝对不包含文件名!
- 目录项 (dentry):文件名存放在该文件所在的“父目录”的数据中。目录就像一个通讯录,记录着“文件名 → Inode 号”的映射关系。
- 取证与底层意义:这解释了为什么 Linux 可以一边运行程序一边无缝更新它(底层认的是 Inode 号,只要进程还占着这个 Inode,数据就在运行);这也是硬链接的底层原理(两个不同名字的文件指向同一个 Inode)。
XFS文件系统
特点
- 企业级王者:目前 CentOS 和 Red Hat (RHEL) 的默认文件系统。
- 超强吞吐:极度擅长处理超大文件和高并发的并行 I/O 读写,非常适合大型数据库和视频存储服务器。
- 能屈不能伸:支持在线扩容,但极难缩容,强行缩小分区极易导致底层数据崩溃。
Btrfs文件系统
特点
- 新一代魔法师:全称 B-Tree FS,被认为是 Linux 存储的未来,目前是 Fedora 等系统的默认格式。
- 写时复制 (CoW):修改文件时,不覆盖原数据块,而是写入新的空闲块,最后再修改指针。
- 原生快照:得益于 CoW 技术,可以实现极速的系统状态备份和秒级无感回滚,且快照本身几乎不占用额外存储空间。
文件
文件的构成
文件头
- 作用: 告诉操作系统和软件“这是一个什么类型的文件”。它位于文件的最起始位置。
- 细节:计算机其实并不完全依赖文件名后缀(如
.jpg或.mp3)来识别文件。很多文件开头都有一串特殊的特征码。例如,PDF 文件的内部往往以%PDF-开头,而 ZIP 压缩包通常以PK开头。如果文件头损坏,文件通常会无法打开。
元数据 / 属性信息
- 作用:描述文件本身的信息(即“关于数据的数据”)。
- 细节:它通常包含两部分:
- 文件系统层面的元数据:包括文件名、创建时间、最后修改时间、文件大小、读写权限等(通常存储在硬盘的目录索引中)。
- 嵌入式元数据 存在于文件内部的信息。比如一首 MP3 音乐里包含的歌手名、专辑封面;一张手机拍摄的 JPG 照片中包含的 EXIF 信息(拍摄时间、GPS 定位、手机型号等)。
主体数据区
-
作用: 文件的核心内容,也是占用存储空间最大的部分。
-
细节:这是你真正需要存储和查看的信息。
- 对于纯文本文件 (TXT),这里是文字的字符编码(如 UTF-8)。
- 对于图片/视频,这里是由复杂算法压缩过的像素和音频数据。
- 对于可执行程序 (.exe),这里是计算机 CPU 可以直接执行的二进制机器指令。
文件尾 / 结束标志
- 作用:标记文件数据的结束,告诉读取软件“内容到此为止”。
- 细节: 并非所有文件格式都有明确的文件尾,但很多结构严谨的格式会使用它。例如,标准的 JPEG 图片文件会以固定的
FF D9两个字节作为结尾;一些视频文件也会在文件尾部存放索引(Index),以便播放器能够快速拖动进度条。如果文件尾丢失,通常意味着文件下载未完成或损坏。
文件头文件尾
图片
- JPEG 文件头:
FF D8 FF文件尾:FF D9 - TGA 未压缩的前4字节
00 00 02 00RLE压缩的前5字节00 00 10 00 00 - PNG 文件头:
89 50 4E 47 0D 0A 1A 0A文件尾:AE 42 60 82 - GIF 文件头:
47 49 46 38 39(37) 61文件尾:00 3B - BMP 文件头:
42 4D文件头标识(2 bytes) 42(B) 4D(M) - TIFF (tif) 文件头:
49 49 2A 00 - ico 文件头:
00 00 01 00 - Adobe Photoshop (psd) 文件头:
38 42 50 53
office文件
- MS Word/Excel (xls.or.doc) 文件头:
D0 CF 11 E0 - MS Access (mdb) 文件头:
53 74 61 6E 64 61 72 64 20 4A - WordPerfect (wpd) 文件头:
FF 57 50 43 - Adobe Acrobat (pdf) 文件头:
25 50 44 46 2D 31 2E - application/vnd.visio(vsd) 文件头:
D0 CF 11 E0 A1 B1 1A E1 - Email [thorough only] (eml) 文件头:
44 65 6C 69 76 65 72 79 2D 64 61 74 65 3A - Outlook Express (dbx) 文件头:
CF AD 12 FE C5 FD 74 6F - Outlook (pst) 文件头:
21 42 44 4E - Rich Text Format (rtf) 文件头:
7B 5C 72 74 66 - txt 文件(txt) 文件头:Unicode:
FE FF/ Unicode big endian:FF FE/ UTF-8:EF BB BF/ANSI编码是没有文件头的
压缩包文件
- ZIP Archive (zip) 文件头:
50 4B 03 04文件尾:50 4B - RAR Archive (rar) 文件头:
52 61 72 21
音频文件
- Wave (wav) 文件头:
57 41 56 45 - audio(Audio) 文件头:
4D 54 68 64 - audio/x-aac(aac)
- avi文件头:
52 49 46 46(RIFF) 后跟41 56 49 20(AVI) - 文件头:
FF F1(9)
视频文件
- AVI (avi) 文件头:
41 56 49 20 - Real Audio (ram) 文件头:
2E 72 61 FD - Real Media (rm) 文件头:
2E 52 4D 46 - MPEG (mpg) 文件头:
00 00 01 BA(3) - Quicktime (mov) 文件头:
6D 6F 6F 76 - Windows Media (asf) 文件头:
30 26 B2 75 8E 66 CF 11 - MIDI (mid) 文件头:
4D 54 68 64
代码文件
- XML (xml) 文件头:
3C 3F 78 6D 6C - HTML (html) 文件头:
68 74 6D 6C 3E - Quicken (qdf) 文件头:
AC 9E BD 8F - Windows Password (pwl) 文件头:
E3 82 85 96
其他类型
- windows证书文件(der) 文件头:
30 82 03 C9 - CAD (dwg) 文件头:
41 43 31 30 - Windows Shortcut (lnk) 文件头:
4C 00 00 00 - Windows reg(reg) 文件头:
52 45 47 45 44 49 54 34