(完整版)WinHex数据恢复教程笔记
WinHex 数据恢复教程笔记 WinHex 是在 Windows 下运行的十六进制编辑软件,此软件功能非常强大。 有完善的分区管理功能和文件管理功能,能自动分析分区链和文件簇链,能对硬盘进行不同方式不同程度的备份,甚至克隆整个硬盘; 它能够编辑任何一种文件类型的二进制内容(用十六进制显示)其磁盘编辑器可以编辑物理磁盘或逻辑磁盘的任意扇区,是手工恢复数据的首选工具软件。 数据恢复的前提:数据不能被二次破坏、覆盖! 数据恢复首选软件用十六进制编辑器:WinHex MBR 、EBR 是分区产生的。 MBR 主引导记录大小是固定的,位于整个硬盘的 0 柱面 0 磁道 1 扇区。共占用了 63 个扇区,实际只使用了 1 个扇区,即硬盘第一扇区中的 512 字节。 DBR 是分区引导扇区,是由 FORMAT 高级格式化命令写到该扇区的内容,DBR 是由硬盘的 MBR 装载的程序段。DBR 装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区才会被 MBR 装的 DBR 入内存运行
表 32 扇区
04H 分区系统标志
当该值为 00H 时,表示此分区为不可识别的系统;
为 04H 时该分区为 FAT16 分区;
为 05H 或 0FH 该分区为扩展分区;
为 0B 时该分区为 FAT32 分区;
F8H FFH FFH 0FH 开始的 FAT 表,(对于 FAT16 是以 F8H FFH 开始的),每个 FAT 项占 32 位(4 个字节), FAT16 的每个 FAT 项占 16 位(2 个字节),
也就是说 FAT 和簇是一一对应的关系,对于 FAT32 的 FAT 来说每 4 个字节为 1 个 FAT 项. (对于 FAT16 的 FAT 每 2 个字节为一个 FAT 项)
512 字节的 MBR 主引导记录又分为三部分:
1.主引导扇区里的主引导程序代码(boot loader ),占 446 个字节;
2.硬盘分区表 DPT (Disk Partition table ),占 64 字节;
主分区表项 1 占 16 字节,447-461
每一个分区表项各占 16 个字节.
硬盘中分区有多少以及每一分区的大小都记在其中。
3.硬盘 55AA 有效结束标志 magic number ,占两个字节。
MBR 被清零的话,硬盘将不能引导。
如果 0 号扇区被清零,硬盘分区将不被系统识别。提示未初始化。
备份 MBR 只要备份前 512 字节就可以了,包含分区表。
用 WinHex 软件来恢复误分区,主要就是恢复第二部分:分区表。
主引导程序代码(boot loader )的作用:就是让硬盘具备可以引导的功能。
如果引导代码丢失,分区表还在,那么这个硬盘作为从盘所有分区数据都还在,只是这个硬盘自己不能够用来启动进系统了。
如果要恢复引导代码,可以用 DOS 下的命令:FDISK /MBR ;这个命令只是用来恢复引导代码,不会引起分区改变,丢失数据。也可以用工具软件,比如: DiskGenius 、WinHex 等。
EBR ,也叫做扩展 MBR (Extended MBR )。占 63 个扇区。因为主引导记录 MBR 最多只能描述 4 个分区 项,如果一个硬盘上分多于 4 个区,就用 EBR.
EBR 的结构和 MBR 的结构是一样的,所以在倒数第五行倒数第二个字节应该是 00 01,并且前 446 个字节应该是 0。
DBR 的备份:
分区格式是 FAT32 的话,备份在分区的 6 扇区。
NTFS 分区格式的话,在分区的最后一个扇区。
DBR FAT16 没有备份 文件跳转指令 EB 3C 90 FAT16 FAT32 文件跳转指令 EB 58 90 DBR 备份在第 6 扇区 有第一扇区的备份。FAT NTFS 文件跳转指令 EB 52 90 DBR 备份在最后一个扇区
ntfs 格式没有 FAT 表。
而每一个分区又由 DBR、FAT1、FAT2、DIR、DATA5 部分组成。
分区表:
分区表 64 个字节,一共描述 4 个分区表项,每个分区表项可以描述一个主分区或一个扩展分区. (比如上面的分区表,第一个分区表项描述主分区 C 盘,第二个分区表项描述扩展分区,第三第四个分
区表项填零未用)
每一个分区表项各占 16 个字节。
注意:真正的隐含扇区数应该反过来填写!
主分区图:
主分区表项 1 占 16 字节,447-461
80 41 02 00 07 15 F5 FF 00 10 00 00
00 10 B8 05
80 激活标记表示活动分区
41 02 00
07 NTFS 分区
15 F5 FF 分区的结束物理地址位置
9-12 字节 00 10 00 00
00 00 10 00=4096 本分区之前已用了 4096 扇区
13-16 字节=C 盘大小
00 10 B8 05
科学计算器 16 进制转换 10 进制,
05 B8 10 00=95948800 扇区*512=/1024/1024/1024=45.75G 扩展分区表
00 4B C1 FF 0F 0E FF FF15 2D B8 05 2C 1F 80 34
00 非活动分区
4B C1 FF
0F (LBA 模式)扩展分区
0E FF FF
9-12 字节15 2D B8 05
05 B8 2D 15=95956245 扇区D 盘起始扇区
13-16 字节2C 1F 80 34 扩展分区的总扇区数
34 80 1F 2C=880811820 扇区=420G
D 盘起始扇区
95956245*512 扇区=49129597440 字节
D 盘分区表
0077D8FF079CFCFFEB0A000000080005
00A5C1FF050EFFFFE6140005460A802F
00
77 D8 FF
07
9C FC FF
EB 0A 00 00
00 00 0A EB=2795 扇区
00 08 00 05
05 00 08 00=83888128*512
=42950721536 字节=40G D 盘
00
A5 C1 FF
05 扩展分区
0E FF FF
E6 14 00 05=83891430
46 0A 80 2F=796920390
E 盘:880811820-83888128=796923692 扇区=380G 总扇区数:
976773168
硬盘的第一分区表(即 MBR)
9、10、11、1
2 字节
LBA=0 到 DBR 之间的距离。
真正的隐含扇区数应该反过来填写!
第
13、14、15、
16 字节
本分区的总扇区数,就是 C 盘的大小。
因为 C 盘是从第 63 个扇区开始,而 C 盘后面紧接着的是 EBR,所以用 EBR 所
在的第一个扇区数减去 63 就是C 盘的大小。
搜索 EBR
搜索文件夹
MBR 在定义分区的时候,将多余的容量定义为扩展分区,指定该扩展分区的起止位置,根据起始位置指向硬盘的某一个扇区,作为下一个分区表项,接着在该扇区继续定义分区,如果只有一个分区,就定义该分区,然后结束。
如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区描述扇区,在该分区上按照上述原则继续定义分区,直至分区定义结束。
用来描述分区的扇区形成一个“分区链”,通过这个分区链,就可以描述所有的分区。
系统在启动时按照分区链的连接顺序查找分区,直至找出所有分区。这个链显然是个开链结构,如果形成一个环,系统本身并不会去判断它,它只是按照这个链忠实的查找分区,而不进行任何额外的检测与处理。
所谓硬盘逻辑锁,就是让分区链形成一个环,这样系统在启动时就在分区表内循环,表现为系统无法引导,就是从软盘启动,也不能进入硬盘。
系统就是利用这种方法使一个硬盘分区后看起来象多个硬盘。
系统能够找到 C 盘以外的其他逻辑盘的唯一办法就是,沿着 EBR 所描述的分区链查找分区。
其实,通常情况下 EBR 是不会被破坏的,或者破坏的几率极低极低,通常情况下,都是只有 MBR 被破坏,那么这种情况下,我们只要把 MBR 的分区表 64 个字节复原,其他的分区顺着分区表所提供的链自然而然就出来了。
第 13、14、15、16 字节是本分区的总扇区数,就是 C 盘的大小,需要通过计算得到。
因为 C 盘是从第 63 个扇区开始,而C 盘后面紧接着的是 EBR,所以用 EBR 所在的第一个扇区数减去63 就是C 盘的大小。
EBR 的结构和 MBR 是一样的,所以,EBR 的结束标志也一定是 55AA,找到这个结束标志,再看看这个扇区是不是 EBR 不就行了?
单击“搜索”—“查找十六进制数值……”,然后出来一个对话框
在文本框中输入“55AA”,搜索框中选“全部”,然后选中“条件”,把偏移量设置为“512=510”。
再单击“确定”。
技巧:要逐个扇区的查找 55AA 确实太慢了,有没有办法快点的呢?
有,就是先问问客户 C 盘大概有多大,大多数客户还是知道的,比如 C 盘大概有 10 个 G,那么就不要从头开始找了,10 个 G 大概是 2000 万个扇区,那么可以用转到扇区命令直接到 1900 万扇区,从那个地方再开始找不就省事多了。
用 1435392 扇区减去 63,得到 1435329 扇区,再转为 16 进制,就是 15E6C1,将它倒转过来就是
C1E61500,这就是 C 盘的大小。