简介:这是一份面向数据恢复初学者与IT运维人员的Winhex图文使用教程文档,系统讲解十六进制编辑与手工数据恢复的核心知识。内容从数据恢复分类切入,区分硬恢复与软恢复的适用场景,并强调数据不可被二次破坏或覆盖这一前提;随后深入硬盘数据构造,剖析MBR、EBR与数据区的组成,包括引导代码、分区表及55AA结束标志等关键结构。文档共1个doc文件,压缩包约3.44MB,以图文并茂的方式呈现,便于对照软件界面逐步理解。教程覆盖Winhex的安装启动、编辑物理磁盘与逻辑磁盘任意扇区、恢复误分区、引导代码与分区表等实操方法,并穿插数据恢复技巧与经验总结。目前已有1560人学习,适合希望掌握手工恢复思路、理解分区链与文件簇链原理的读者参考。
1. 为什么我至今还在用 Winhex 手工恢复分区表
一块硬盘突然变成“未初始化”,DiskGenius 能扫到分区但重建后盘符错乱,这种场面我遇到过不止一次。多数时候,问题出在 MBR 那 64 字节的分区表被病毒或误操作抹掉了,而 EBR 链其实完好无损。这时候用 Winhex 直接读扇区、手工填回分区表,往往比任何“一键恢复”都干净利落。这份《winhex 超全图文使用教程.doc》讲的就是这套手艺:从 MBR、EBR、DBR 的数据结构,到用 Winhex 打开物理磁盘、定位扇区、计算隐含扇区数、填充 00 模拟破坏、再手工复原分区表。它适合已经懂一点硬盘结构、想摆脱“点下一步”式恢复的从业者,也适合刚入行、想搞明白分区链到底怎么串起来的新手。前提只有一条:数据不能被二次破坏、覆盖,动手前先做全盘镜像。
2. 先把 MBR 那 512 字节拆开看:分区表 64 字节到底存了什么
2.1 MBR、EBR、DBR 三者的位置关系
硬盘上电后,系统最先读的是 0 柱面 0 磁道 1 扇区,也就是 LBA 0,这 512 字节叫 MBR。MBR 占用了 63 个扇区,但真正有内容的只有第一个扇区,后面 62 个扇区填零不用。这 512 字节分三块:前 446 字节是引导代码,中间 64 字节是分区表,最后两字节是 55AA 结束标志。分区表 64 字节又切成 4 个分区表项,每项 16 字节,最多描述 4 个主分区或扩展分区。如果要分超过 4 个区,就得用扩展分区,扩展分区指向的下一个分区表扇区叫 EBR,结构和 MBR 完全一样,只是前 446 字节引导代码为零,因为它不需要引导。EBR 再指向下一个 EBR,形成一条分区链。每个分区内部又由 DBR、FAT1、FAT2、DIR、DATA 组成,DBR 是分区的引导记录,FAT 是文件分配表。搞恢复的人,眼睛主要盯在 MBR 和 EBR 的分区表上,因为 DBR 和 FAT 通常不会同时被破坏。
2.2 16 字节分区表项逐字节含义
每个分区表项 16 字节,含义固定,教程里给了一张表,我把它整理成更直观的版本:
| 字节位置 | 含义 | 常见取值 |
|---|---|---|
| 第 1 字节 | 引导标志 | 80H 活动分区,00H 非活动 |
| 第 2-4 字节 | 起始磁头号、扇区号、柱面号 | LBA 模式下可忽略 |
| 第 5 字节 | 分区类型符 | 06H FAT16,0BH FAT32,05H 扩展,07H NTFS,0FH LBA 扩展,83H Linux |
| 第 6-8 字节 | 结束磁头号、扇区号、柱面号 | LBA 模式下可忽略 |
| 第 9-12 字节 | 本分区之前已用扇区数 | 小端序存放 |
| 第 13-16 字节 | 本分区总扇区数 | 小端序存放 |
这里有个血泪经验:第 9-12 和第 13-16 字节是小端序,也就是你看到的3F 00 00 00,实际数值是00 00 00 3F,转十进制是 63。很多人第一次算隐含扇区数就是栽在字节序上,直接拿3F 00 00 00当 0x3F000000 算,结果差出几个数量级。教程里反复强调“反过来填写”,说的就是这件事。第 2-4 和第 6-8 字节的 C/H/S 寻址在老硬盘上有意义,现在 LBA 模式下系统只认第 9-16 字节,所以恢复时这两组可以直接填 0 或者照抄原值,不用费劲计算。
2.3 用计算器把扇区数算清楚
Winhex 工具栏上有个计算器按钮,点开选“科学型”,就能在十六进制和十进制之间转换。比如 C 盘分区表项第 13-16 字节是C1 E6 15 00,反过来是00 15 E6 C1,转十进制 1435329,这就是 C 盘的总扇区数。D 盘 EBR 的起始扇区 = MBR 占用扇区数 + C 盘总扇区数 = 63 + 1435329 = 1435392。在 Winhex 里点“转到扇区”,输入 1435392,就能直接跳到 D 盘的 EBR。这个计算过程是手工恢复的核心,分区表被破坏后,你就是靠这些数字把链重新接起来的。
3. 用 Winhex 定位扇区并模拟分区表被破坏
3.1 打开物理磁盘而不是逻辑分区
启动 Winhex,出现启动中心对话框,选“打开磁盘”。在“编辑磁盘”对话框里,会列出 HD0、HD1 等物理磁盘。HD0 通常是当前系统盘,HD1 是要分析的从盘。这里一定要选整个物理硬盘,不要选单个分区,因为分区表在物理磁盘的 LBA 0,逻辑分区视图里看不到。选中 HD1 点确定,工作区就显示硬盘第一个扇区的十六进制内容,右边是 ASCII 码。右边详细资源面板分状态、容量、当前位置、窗口情况、剪贴板五块,对把握硬盘整体情况很有用。如果面板关了,通过“查看”菜单里的“显示”命令重新打开。最下面一栏显示当前扇区号和总扇区数,滚动条每遇到一个灰色横杠就是一个扇区,512 字节,每两个数字一个字节。
3.2 选中 MBR 扇区并填充 00
为了模拟病毒破坏,教程把 MBR 整个扇区填零。操作步骤:
- 鼠标指向第一个字节,右键选“选块开始”。
- 鼠标指向 MBR 最后一个字节,右键选“选块结尾”。
- 在选区内右键,选“编辑”,再选“填充选块”。
- 在“用十六进制填充”输入框里填
00,点确定。
这时 MBR 扇区全变 00。注意,修改后没存盘的数据会显示成别的颜色,想取消选区就随便拖选另一块区域。要让修改生效,走“文件”菜单的“保存扇区”命令,弹出提示点确定、再点是。存盘后扇区数据变回黑色。这时候打开“我的电脑”,F、G、H 三个分区还在,数据也能正常访问,因为系统还在用内存里的分区信息。必须重启,重启后三个分区才会消失。这一步是理解恢复原理的关键:破坏的是磁盘上的分区表,不是内存里的,所以重启才生效。
3.3 通过“访问”菜单快速跳转分区表
Winhex 的“访问”下拉按钮里,有“分区二”“分区三”等子菜单,每个下面有“分区表”选项,点一下直接跳到对应 EBR 扇区。比如点“分区二”下的“分区表”,直接到 1435392 扇区,也就是 D 盘的 EBR。这比手工算扇区号再“转到扇区”快得多,适合已经知道分区结构、只想核对数值的场景。但如果是分区表已经被破坏、链断了,这个菜单可能失效,那时候就只能靠手工计算加“转到扇区”。
4. 手工复原分区表:从计算到填写的完整流程
4.1 先算出每个分区的起始和总扇区数
假设 MBR 被填零,但 EBR 还在。恢复思路是:从已知的 EBR 反推 MBR 分区表。先找到 D 盘 EBR 所在扇区,读它的第一个分区表项,第 9-12 字节是 D 盘之前已用扇区数,也就是 EBR 的数目 63;第 13-16 字节是 D 盘总扇区数 1435329。再读第二个分区表项,第 9-12 字节是 D 盘 EBR 加 D 盘总共大小 1435392,第 13-16 字节是 E 盘大小加一个 EBR 的数目 1253952。把这些数记下来,就能反推 MBR 里 C 盘和扩展分区的值。C 盘起始隐含扇区是 63,总扇区数 1435329;扩展分区起始隐含扇区是 1435392,总扇区数 2689344。验证一下:1435392 + 2689344 = 4124736,正好是整个硬盘总扇区数。
4.2 在 Winhex 里逐字节填回分区表
回到 LBA 0,定位到偏移 446 字节处,开始填第一个分区表项:
# 第一个分区表项(C 盘),16 字节 80 # 引导标志,活动分区 00 00 00 # 起始 C/H/S,LBA 模式下填 0 0B # 分区类型,FAT32 00 00 00 # 结束 C/H/S,填 0 3F 00 00 00 # 本分区之前已用扇区数,63,小端序 C1 E6 15 00 # 本分区总扇区数,1435329,小端序第二个分区表项(扩展分区):
00 # 非活动分区 00 00 00 # 起始 C/H/S 05 # 扩展分区 00 00 00 # 结束 C/H/S 00 E7 15 00 # 本分区之前已用扇区数,1435392 40 09 29 00 # 本分区总扇区数,2689344第三、第四分区表项填零。最后两个字节填55 AA。填完后“保存扇区”,重启,分区应该就回来了。这里的关键是字节序:所有多字节数值都是低位在前。3F 00 00 00实际是 0x0000003F,C1 E6 15 00实际是 0x0015E6C1。填的时候直接照抄教程里给出的字节序列就行,不用自己再转一遍,转错了反而翻车。
4.3 恢复引导代码的两种方式
如果只是引导代码丢了、分区表还在,硬盘作为从盘时所有分区数据都能访问,只是不能自己启动进系统。恢复引导代码可以用 DOS 下的FDISK /MBR,这个命令只重写引导代码,不动分区表,不会丢数据。也可以用 DiskGenius 或 Winhex 手工填。Winhex 里就是定位到 LBA 0 的前 446 字节,把正确的引导代码写回去。但要注意,不同系统、不同分区表的引导代码可能不一样,最稳妥的是从同型号同分区结构的正常硬盘上备份一份出来,直接覆盖。
5. 避坑与排查:分区表恢复里最容易翻车的五件事
5.1 现象:填完分区表重启,分区还是不见
原因:只保存了扇区但没重启,或者保存时点了取消。Winhex 修改扇区后必须走“文件”→“保存扇区”,弹出提示点确定、再点是,扇区数据变黑才表示写盘成功。另外,系统缓存里的分区信息要重启才刷新,不重启看不到变化。
解决:确认保存成功,然后冷重启。如果还不出现,检查 55AA 结束标志有没有填,分区类型符有没有写错(FAT32 是 0B,NTFS 是 07)。
5.2 现象:分区回来了但盘符错乱、容量不对
原因:第 9-12 或第 13-16 字节的字节序搞反了。比如把3F 00 00 00当成 0x3F000000 填进去,隐含扇区数就变成十亿级别,分区自然错位。
解决:所有多字节数值一律低位在前。用 Winhex 计算器转换时,先选中“十六进制”输入反转后的值,再切“十进制”看结果。填之前把每个数值算两遍。
5.3 现象:EBR 链断了,只能看到 C 盘
原因:扩展分区的 EBR 被破坏,或者 MBR 里扩展分区表项的起始扇区数填错,导致系统找不到第一个 EBR。
解决:从已知的 D 盘 EBR 扇区反推。如果 EBR 本身也坏了,就得用 Winhex 搜索55AA标志,或者搜索 FAT32/NTFS 的 DBR 特征串,手工重建 EBR。教程里不建议分析 EBR,因为容易绕晕,但链断了的时候只能硬着头皮上。
5.4 现象:恢复过程中硬盘异响、读取极慢
原因:硬盘本身有物理损伤,属于硬恢复范畴。这时候继续用 Winhex 反复读扇区,可能加重坏道扩散。
解决:立即停止,先做全盘镜像。用 dd 或 Winhex 的克隆功能,把能读出来的扇区先备份到健康盘上,再在镜像上做恢复。硬恢复需要 PC3000、电烙铁这些工具,不是 Winhex 能解决的。
5.5 现象:分区表填对了,但数据打不开
原因:DBR 或 FAT 也被破坏了。分区表只负责描述分区的位置和大小,分区内部的文件系统结构是 DBR 和 FAT 管的。
解决:分区表恢复后,如果分区能识别但提示“需要格式化”,说明 DBR 坏了。用 Winhex 定位到分区起始扇区,检查 DBR 的 55AA 标志和 BPB 参数。FAT 坏了就得用文件恢复软件扫簇链,那是另一个层面的活了。
6. 进阶:用 Winhex 搜索特征串定位丢失的 DBR
分区表恢复只是第一步,真正难的是 DBR 和 FAT 都丢了、分区表也乱了的情况。这时候我一般会用 Winhex 的“查找十六进制数值”功能,搜文件系统的特征串。FAT32 的 DBR 里通常有FAT32字样,NTFS 的 DBR 里有NTFS字样,搜到之后往前推 512 字节对齐,就能定位到分区起始扇区。找到起始扇区后,再结合总扇区数反推分区表该怎么填。
具体操作:在 Winhex 里按 Ctrl+F,选“十六进制数值”,输入4E 54 46 53(NTFS 的 ASCII),从 LBA 0 开始搜。搜到之后记下扇区号,检查该扇区开头是不是EB 52 90(NTFS 的跳转指令),是的话基本就是 DBR。然后从 DBR 往前找 63 个扇区,看是不是 EBR 或 MBR 的位置。这个方法在分区链完全断掉的时候特别管用,相当于用文件系统特征串当路标,把分区表重新拼出来。
还有一个技巧:Winhex 的“分区二”→“分区表”菜单能直接跳 EBR,但如果链断了,这个菜单会失效。这时候可以手工在“转到扇区”里输入候选扇区号,一个个试。试的时候看扇区末尾是不是55 AA,是的话大概率是分区表扇区。我一般会从 63、1435392、2870784 这几个常见位置开始试,因为 MBR 占 63 个扇区,第一个分区通常从 63 开始,后面每个 EBR 间隔一个分区的总扇区数。
从那以后我每次做分区表恢复,都强制先做全盘镜像,再在镜像上操作,而且填完每个数值都用计算器反算一遍字节序。希望帮到你。
本文还有配套的精品资源,点击获取