前言

在上一篇文章后,我们了解到了 Winhex 是什么,以及 Winhex 的快捷键等。

本篇,我们将正式使用 Winhex 进行简单的分区恢复。

你可以在 https://winhex.im0o.top/ 中查看所有例题文件

知识点总览

  • Winhex 窗口使用介绍
  • 实例:填写 MBR
  • 什么是 DBR
  • 主分区与扩展分区

Winhex 窗口使用介绍

  • 文件类功能

功能名称 作用
新建 新建一个文件(可以自定义大小,导出文件时可以自定义扩展名)
打开 打开一个文件
保存 保存更改
创建磁盘镜像 为一个分区/磁盘创建镜像
打印 将范围内的二进制数据导出为*.xps 格式的文档
属性 查看一个文件的属性
打开文件夹 打开一个文件夹进行编辑
  • 编辑类功能

功能名称 作用
撤销 撤销上一次的操作
复制选区 复制选定的区域
粘贴选区 将刚刚复制的内容粘贴
写入剪贴板 将剪贴板的数据写入
叠加扇区 叠加扇区
修改数据 对选定的数据批量操作(动刀子)
  • 查找类功能

功能名称 作用
同步搜索 高级搜索
查找文本 查找 ASCII/Unicode 等其他格式的文本
查找十六进制数值 查找 16 进制格式的数值
替换文本 查找并替换 ASCII/Unicode 等其他格式的文本
替换十六进制数值 查找并替换 16 进制格式的数值
  • 跳转类功能

功能名称 作用
转到偏移量 转到相对位置
跳至扇区 转到绝对位置
向前 转到上一个光标所在的位置
向后 转到后一个光标所在的位置
  • 其他功能

功能名称 作用
打开磁盘 在 Winhex 中打开一个磁盘/分区进行编辑
克隆磁盘 克隆一个磁盘
打开 RAM 打开 RAM 内存
计算器 打开计算机基带软件——计算器
分析选快 分析选中的区域
进行磁盘快照 对磁盘进行磁盘快照
Mount as Drive Letter
(空)
  • 设置项

功能名称 作用
常规设置 打开常规设置菜单
目录浏览器 打开目录浏览器设置菜单
减小一列 减小 16 进制编辑器中显示的一列(默认 16 列,不会更改分区/磁盘大小)
增大一列 增加 16 进制编辑器中显示的一列
内容 Winhex 帮助,打开时会提示“是否打开”
  • 工具:数据解释器

数据解释器

数据解释器是Winhex中比较重要的一个工具,你可以通过点击某字节/某字节组的头看到这(几)个字节的数值大小。

  • 如何打开数据解释器?

在 WinHex 中,数据解释器默认会一直存在,如果你不小心关闭了它,可以在【查看】—【显示】—【数据解释器】中打开它(如图)

  • 使用数据解释器

如图,黄色部分则为 16 进制(Little-Endian)数值,红色部分则为前方黄色部分的数值,FF 则为例子填充。

当点击字节时,数据解释器默认会以 Little-Endian 显示从光标开始(包括光标所在字节)向后 3 个字节的数值大小,8Bit 栏为 1 个字节,16Bit 栏为 2 个字节,32Bit 栏为 4 个字节。

数据解释器可以在【选项】—【数据解释器】中修改(快捷键:Alt+F5)

打开后的界面如下:

实例:填写 MBR

  1. 导入题目 MBR.vhd 后使用 Winhex 打开:

MBR.vhd 0

  1. 填写 0 扇区中的结束标志:55 AA

观察 0 扇区后面的几个扇区,发现是这个虚拟磁盘的分区结构是MBR 分区结构

填写完结束标志后保存并关闭,重新打开虚拟磁盘

  1. 寻找第一个分区

可以通过多种方法寻找到第一个分区,这里举例两种方法:

通过位置管理器跳转到第一个分区

​ 如果你能够像图中在位置管理器中看到第一个分区,可以直接点击该分区跳转到该分区的 DBR 处

通过搜索结束标志

​ 你可以搜索每个扇区结尾 2 字节的55 AA(结束标志)来找到分区的 DBR,如果55 AA被删除了,就无法通过该方法找到 DBR

通过搜索非零

​ 你可以在 MBR 主引导记录后的空闲扇区中向下搜索!00(非零)找到 DBR,在本例题中,你需要进行搜索非零或直接通过导航跳转。

记录 DBR 的信息

打开记事本,记录 DBR 的信息,一般的记录格式为:

| 分区类型1| 分区地址 | 分区大小 |

如果该分区是 FAT32 类型,则记录格式为:

| 分区类型 | 分区地址 | 分区大小 | 保留区大小 | FAT表大小 | 每簇扇区数 |

如果该分区是扩展分区2,则记录格式为:

| 分区类型(05) | EBR地址 | 分区类型 | ……(同上)

记录格式只是为了方便分区的恢复与数据的填写,这玩意……怎么顺手怎么来吧。


查看该分区的位置与大小

如上图,在黄色标记处为该分区的绝对位置,红色标记处为该分区的大小,通过点击 4 个字节中的第一个字节,可以在数据解释器中看到位置和大小的数据。图中的分区为 NTFS 分区,其位置的 16 进制数值为00 08 00 00;其分区大小数值为FF 07 A0 00,换算为 Big-Endian 为00 00 08 0000 A0 07 FF其值为204810487807

填写数值

将刚刚找到的数值填入记事本(如下图)

接着,从该分区的 DBR 向后跳转其分区大小10487807即可转到该分区的备份

下图为该分区跳转示意图

由跳转图我们可以知道,NTFS 分区 DBR 中描述的分区大小不包括 NTFS 分区的备份,所以最后填写到 MBR 主引导记录中的分区大小要比记录的大小+1

在第一个分区的备份后即为第二个分区的 DBR,重复上述的步骤,得到以下数据。

  1. 填写 MBR

跳转到 0 扇区后,填写主引导记录中的分区表。

在填写分区表前,我们需要了解分区表结构:

字节偏移 字段长度 字段名定义
0x01BE 1 字节 0x80 引导标志:指明该分区是否为活动分区
0x01BF 1 字节 0x20 开始磁头
0x01C2 1 字节 0x07 分区类型描述
0x01C6 4 字节 0x00008000 分区起始扇区
0x01CA 4 字节 0x0C800800 分区大小

实际需要填写的内容为上表中加粗的部分,将记事本中的内容填入分区表。

填完之后的效果:

Ctrl+S 保存后进入计算机管理——存储——磁盘管理中刷新虚拟分区

如果你看到的是图中的效果,那么恭喜你,你成功恢复了这 4 个分区

什么是 DBR

DBR(DOS BOOT RECORD),分区引导扇区,是由 FORMAT 高级格式化命令写到该扇区的内容,DBR 是由硬盘的 MBR 装载的程序段。DBR 装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的 DBR 才会被 MBR 装入内存运行。


DBR 一般位于一个分区的分区头,是这个分区的开始。各个分区的 DBR 结构也会有所不同,若将分区的 DBR 删除,则系统将无法识别这个分区(即会显示为 RAW)

一般情况下,分区的 DBR 会有其备份,例:

分区类型 备份偏移地址
NTFS 分区结束后 1 个扇区
FAT32 DBR 后 6 个扇区
ExFAT DBR 后 12 个扇区

图为 FAT32 从 DBR 向后跳转了 6 个扇区到达备份

主分区与扩展分区

主分区

MBR 磁盘的分区形式一般有 3 种:主分区,扩展分区和非 DOS 分区3。主分区又被称为主 DOS 分区,目前也称为主磁盘分区。

为了便于用户对磁盘的管理,操作系统引用了分区的概念,即将一块磁盘逻辑划分为几个区域。在分区表的 64 字节中,以 16 个字节为一个分区表项来描述一个分区的结构。

一块硬盘中可以有多个主磁盘分区,被激活的主磁盘分区称为活动分区,活动分区在一块分区中只能有一个。

扩展分区

在了解扩展分区之前,我们先看看 MBR 中分区表的结构:

图中加黑部分为 MBR 主引导记录中的分区表,分区表被分为了 4 个主分区表项,这就意味着,在 MBR 分区结构中只能存在 4 个主分区表项,即 4 个主分区。那我们如何分出 4 个以上的分区呢?

使用分区工具 DiskGenius 的快速分区功能,我们可以看到

可以看到高级设置中分区的最右方有主分区选项,当我们把分区数目选择为 4 个分区以上时,再视图将所有分区设置为主分区,可以看到这样的效果

只能将 3 个分区分配成主分区,剩下两个分区无法设置成分配为主分区,当我们点击确定后,该磁盘将被分成 5 个分区

请务必在虚拟磁盘上执行该操作!格式化之前请注意不要格成自己的硬盘,以免造成数据丢失!

格式化后可以在 DiskGenius 中看到分区情况

可以看到虚拟磁盘被分为了 3 个主分区和一个扩展分区,扩展分区内包含了两个分区。

再在 Winhex 中打开该虚拟磁盘查看它的分区表

可以观察到扩展分区的标识符是 0F,通过数据解释器可以看出其大小为41,934,848,约为 20GB,即为 2 个分区(L:和 J:)的大小。

接下来跳转到扩展分区的位置,查看它的“DBR”

可以观察到,扩展分区的“DBR”类似于 MBR,拥有分区表,里面指向了两个分区。

由此可见,扩展分区严格意义上并不算是一个分区,它的作用仅仅是指向后面的分区。

因此,我们给扩展分区的“DBR”定义了一个专属的名字:EBR(Extended Boot Record)

在扩展分区内的分区也有专属的称呼:逻辑分区

下图为 MBR 指向扩展分区的流程:


  1. 这里访问本题地址
  2. 这里查看(近乎)所有的分区类型标识符
  3. 扩展分区仅在 MBR 结构分区中存在,将在以后的教程讲到。
  4. 一般情况为启动盘