2023年11月24日发(作者:)
用WinHex手工恢复硬盘分区表
最近,PC机不能正常引导,将硬盘挂载到其它PC机上,显示硬盘未分区,结果如下图所
示:
原硬盘分为4个分区,但现在显示未分区,推测是硬盘的分区表丢失,计划用WinHex工
具手工恢复硬盘分区表,通过用WinHex查看分区表,果真丢失了分区表,于是利用该工
具进行了恢复,成功修复硬盘。
恢复期间,参考了网上的众多资料,这些资料虽然提供了很多帮助,但感觉理论性太强,
没有充分利用工具本身的优势,因此作一总结,以为新手提供帮助。为了更好的理解恢复
方案,在文中增加了小知识点,如果对理论不感兴趣,可略过这些小知识点,直接参考恢
复步骤即可。在此也一并感谢在网上分享资料的各位大侠。
一、查看MBR(Master Boot Record)
利用WINHEX打开硬盘的MBR,如下图所示:
从图中可见,
1、第1扇区的55AA前的64个字节全为0,表明分区表信息丢失。
2、在最上边的栏中的可以看到分区信息,包括分区名称、类型、大小、该分区的首扇区等
信息,这些将帮助我们迅速地恢复硬盘分区。
小知识1:MBR(Master Boot Recorder)、DPT(Disk Partition Table)
MBR位于磁盘的第一个扇区,CHS地址是0柱面,0磁头,1扇区,共占用63个扇区,实
际上只使用1扇区;其布局如下:
扇区内偏移 描 述
0x0000-0x01BD 446 字节引导代码
0x01BE-0x01FD 4个16字节主分区表项,共描述4个分区
表项,每个分区表项可以描述一个主分区或
一个扩展分区
0x01FE-0x01FF 2字节MBR签名(0xAA55)(两个字节分别
为55、AA)
DPT中定义的分区包括主分区和扩展分区,主分区+扩展分区总共不能超过4个。所谓主分
区是指DPT中包含能够被系统的磁盘分区,一个硬盘主分区至少有1个,最多4个,它是
可以设置为活动的,即可以引导操作系统。一个硬盘只能有一个活动分区。扩展分区并不
能被系统直接使用,它的作用是突破DPT中只能定义四个分区限制的,可以没有,最多1
个。对于windows系统,一般分为一个主分区,一个扩展分区。(本文介绍的方法也是针
对这种情况,对硬盘分区表进行恢复)。
其做法:定义完主分区之后,将多余的容量定义为扩展分区,指定该分区的起始位置,根
据起始位置指向硬盘的某一扇区,称作扩展MBR(EBR),在其中定义下一个分区表。如果
只有一个分区,就定义该分区,然后结束;如果不只一个分区,就定义一个基本分区和一
个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中定义分区,直至结束。在
扩展分区中定义的分区就是逻辑分区。
扩展分区的容量=各个逻辑分区的容量之和+隐藏扇区(即EBR所占用扇区)
另外EBR的结构跟MBR的结构是一样的,也是占用63个扇区。
对于一个分为4个区的硬盘数据结构如下:
图中的C盘为主分区,D盘、E盘、F盘都为逻辑分区。
二、分区表恢复方案
由于目前普遍采用LBA寻址方式,每个分区表项的16字节信息中最重要的是1、5、9、
10、11、12、13、14、15、16四组信息。至于2、3、4字节,对于C盘,一般为
010100,其它盘为00、、C1、FF(即0磁头、1扇区、1111111111柱面(由于柱面数一般
会大于1024,因此表示柱面数的10位全为1));6、7、8字节一般填写FE、FF、FF即
可。
第1字节代表引导标志,引导盘为80,其它则为00;
第5字节代表分区类型,可自图中所示分区类型获得,本硬盘中,四个分区类型分别为:
FAT32、FTA32、NTFS、FAT32。
第9、10、11、12字节代表本分区之前已用了的扇区数,需要通过计算获得
第13、14、15、16字节代表本分区的总扇区数,需要通过计算获得。
通过查找EBR中的分区信息,及WinHex系统提供的信息,计算MBR中的分区信息,完成
分区表的恢复。
三、手工恢复硬盘分区表过程
1、收集各EBR中的分区信息
由于EBR的结构与MBR结构一样,即以55AA作为结束标志,因此可以搜索55AA。为加
快搜索速度,设置offset mod 512=510,即对512的整数倍的510、511字节进行搜索。
如果是直接从MBR处开始搜索,要注意判断是否是EBR,该扇区前面、后面的几个扇区的
字节一般全为00.
小技巧:由于WinHex工具本身提供的信息较全,可直接点击Partition2后,进行反向搜
索。很快搜索到第一个EBR。如下图所示:
第1扩展分区分区示意图
在第一个扩展分区,其分区信息表如下:
00 01C1FF 0B FEFFFF 3F000000 AD2CE204
00 00C1FF 05 FEFFFF EC2CE204 EC2CE204
再点击Partition3进行反向搜索,得到第2个EBR,如下图所示:
第2扩展分区分区示意图
第二个扩展分区的分区信息如下:
00 010100 0B FEFFFF 3F000000 AD2CE204
00 00C1FF 05 FEFFFF D859C409 731A6C06
再点击,Partition4,进行反向搜索,得到第3个EBR,如下图所示:
第3扩展分区分区示意图
第三个扩展分区的分区信息如下:
00 01C1FF 0B FEFFFF 3F000000 341A6C06
2、计算C盘及扩展分区的信息
对于C盘,其之前已用的扇区数,就是MBR所占用的扇区,共63个扇区,转换成16进制
为3F。接下来重点计算本分区的总扇区数。实际上,C盘后紧跟第1个EBR,其是自63扇
区开始,结束于第1个EBR之前的第1个扇区。通过第1扩展分区分区示意图的左下角可
看到EBR位于4096570扇区,则C盘结束的扇区是40965749.因此C盘所占用扇区为
40965749-63+1=40965687。转换成16进制为:2711637,则13、14、15、16字节分别
为:37、16、71、02.
对于第1扩展分区,其分区之前所用的扇区数,即是C盘总的扇区数及MBR之和,即
40965687+63=40965750,转换成16进制,则为:2711676,则9、10、11、12字节分别
为:76、16、71、02.现在需要计算第一扩展分区的总扇区。
第一扩展分区的总扇区可采用两种方法计算。一种是各个逻辑分区的容量之和+隐藏扇区
(即EBR所占用扇区);另外一种是(硬盘总扇区-未分区的扇区)-MBR所点扇区-C
盘所占扇区。
下面分别采用这两种方法进行计算:
方法一:各个逻辑分区的容量之和+隐藏扇区(即EBR所占用扇区)
自各EBR得到信息,第一个逻辑分区为04E22CAD扇区,第二个逻辑分区为04E22CAD ,
第三个逻辑分区为066C1A34,另外,每个EBR占用3F扇区,共3个,则其和为:
1030744B,则13、14、15、16字节分别为:4B、74、30、10.
方法二:(硬盘总扇区-未分区的扇区)-MBR所点扇区-C盘所占扇区 (硬盘总扇区-
未分区的扇区)代表了参与分区的总的扇区,本硬盘中,存在未分区的空间2.5MB,自
312576705个扇区开始,也就意味着有312576705个扇区进行了分区(自0开始计算扇
区),MBR所占扇区为63个,C盘所占扇区为40965687,则第一扩展分区的总扇区为:
312576705-63-40965687=271610955,转换成16进制为:1030744B,与方法一结果相
同。
至些,完成分区表各重要参数的计算。 C盘及第一个扩展分区的分区信息如下:
80 010100 0B FEFFFF 3F000000 37167102
00 00C1FF 0F FEFFFF 76167102 4B743010
3、编辑分区表内容
根据刚计算的C盘及扩展分区的信息,编辑分区表。如下图所示:
编辑完成之后存盘退出。
4、恢复结果
重新启动计算机,即可以看到原先的硬盘信息。如下图所示:
查看磁盘1的各盘的信息正常,至此完成硬盘分区表的恢复。
四、进一步探究
方案是针对分区表丢失的情况,如果分区表被修改成只有一个分区会是何种情况?决定将
其只分成一个区进行测试。在磁盘管理器中如下图所示:
利用WinHex打开分区表,其显示如下:
再搜索看原先的EBR是否存在。如果存在,直接利用刚介绍的方法恢复即可。直接到原先
存放EBR的40965750扇区查看,依然存在相关的分区信息。此处意味着,仅是MBR中的
分区信息变化了,因此仍然可以利用原先的EBR信息恢复MBR中的分区信息。
在搜索EBR时,已经不能利用“三、手工恢复硬盘分区表过程”中介绍的小技巧进行搜索,
需要进行全文搜索,因此一定要仔细确定是否是真正的EBR。其它过程如分区表信息丢失
类似。
从前后图中也可见,在不存在分区表的情况下,WINHEX会去搜索EBR的信息,并把相关
情况显示在上边的分区信息;如果存在分区信息,会以MBR中的分区信息显示相关分区情
况。
五、总结与展望
本方案充分利用了WinHex工具中的一些方法,恢复过程中,不需要磁头、柱面、扇区等
方面的转换,比较方便。但本方案仅适用于一个主分区,多个逻辑分区的情况;虽然
WINDOWS系统大部分都是这样的分区结构,但也会存在两个或以上主分区情况,这种情
况就需要利用DBR的信息进行恢复,关于DBR信息及相应的恢复信息将在新的文章中加以
阐述。
发布评论