WinHex恢复分区
情景再现:可能在某一天,打开电脑时发现只剩C盘,剩下的盘找不到了,那么要如何恢复呢?
创建虚拟硬盘方便我们做实验
右键计算机
-> 管理
-> 磁盘管理右键
-> 创建VHD虚拟硬盘
创建VHD虚拟硬盘会弹出下面的窗口
首先点击预览选择创建虚拟硬盘位置
,然后创建虚拟硬盘的大小
,这里我是15G
,选择虚拟硬盘格式为VHD
,最后虚拟硬盘的类型为动态扩展
固定大小:创建时间可能会比较慢,因为真的会占用磁盘的15个G的大小
动态扩展:创建时很快,并不会占用15个G的大小,随着我们用了多少占用多少,最大只能占用15个G
输入正确后确定创建虚拟硬盘
并没有初始化虚拟硬盘,右键
-> 初始化磁盘
,弹出初始化磁盘窗口,选择MBR(主启动记录)
创建分区
右键未分配区域
-> 新建简单卷
-> 下一步
到这里是会让我们输入创建分区所占用的大小,这里我创建的是一个3000MB
大小的磁盘
后面下一步,为选择我们的分区的驱动号,就是C盘,D盘什么的,这里创建的分区为H盘
下一步,格式化分区,选择文件系统为NTFS
最后完成即可
完成后会出现我们新建的H分区
这个H分区是可以正常使用打开的,我们可以打开我的电脑
查看是否出现了一个新的分区
确实出现了一个新的H盘。
简单认识WinHex
我们先打开WinHex
找到这里的打开磁盘
选择我们创建的虚拟硬盘
打开我们虚拟硬盘为下图,可能不同版本显示的不一样,这里仅供参考
找到0扇区的最后,发现结尾是以55AA
结束
0扇区是MBR引导扇区,记录着各个分区的位置;准确来说,记录着主分区和扩展分区的位置
那么主分区是什么?我们刚刚创建的分区就是主分区
蓝色的位主分区,黑色的未分配
恢复一个分区
在删除前,我们先到winhex观察0扇区MBR
,倒数四行的数据
现在我们手动把我们创建的H盘删除
返回Winhex
再次打开虚拟磁盘观察0扇区数据
我们在删除H盘的时候,Winhex倒数四行总第一行的数据也没有了,那么就是这一行就的数据就控制着我们的H盘
简单原理:计算机并不知道到该怎么找到我们的分区,通过MBR的固定格式来读取,把分区一个一个读取出来
这里我们MBR没有数据了,当然找不到我们的分区了
那么我们删除了,其实并没有删除,只是吧MBR的引导删除了,可以在找回来
MBR重要字节
刚刚我们说道计算机通过固定格式来读取硬盘,那么固定格式到底是什么呢?
在MBR中,由于55AA占用了两个字节,除了55AA往上数4行,这4行控制着我们所有分区的位置
那么这4行这么控制的呢
1C3-1C5控制分区一磁盘的类型
磁盘类型就是我们创建的NTFS
NTFS的16进制数据应该是07 00 00 00
1C6-1C9控制分区一的开始位置
1CA-1CD控制分区一的大小
那么我们并不知道到分区一的开始位置时哪里,还有分区一的大小为多少
通过刚刚我们的MBR扇区得知,引导扇区的结束是55AA
那么往下搜索磁盘结束为55AA的就能找到我们磁盘一的引导扇区
找到16进制查找器
搜索55AA
,向下搜索,条件偏移为512=510
扇区最后两个字节,忘记说明,我们一个扇区是512个字节
注意:在搜索的时候我们要在1扇区往下搜索,因为0扇区的最后为55AA,会搜索到0扇区的55AA
查找后跳转到了2048扇区
,可能我们不太确定可以看到上方的目录结果,2048确实就是我们第一个分区的引导扇区
NTFS引导扇区重要字节
打开数据解释器
1C-1F NTFS引导扇区的开始
1C-1F为4个字节,一个字节8bit,所以4个字节就是32bit,我们查看32bit值为2048
,这就是NTFS引导扇区,也可以说第一个分区的开始位置
使用一个记事本把它记录下来
28-2B NTFS扇区的大小
28-2B为4个字节,所以看32bit,值为6,143,999
,使用记事本记录下来
现在我们得到了分区一的开始和大小,现在只需要在MBR 0扇区
的重要字节填上就我们的H盘就恢复了
回到0扇区填数
ctrl + g
,打开跳转扇区,输入0跳转到0扇区
在1C2-1C5,点击1C2,在16进制输入07即可,07代表我们是NTFS盘
在1C6-1C9,点击1C6,在数据解释器32bit填入我们找到的分区一的开始2048
,回车即可
在1CA-1CD,点击1CA,子数据解释器32bit填入我们找到的分区一的大小6,143,999
,回车即可
输入后ctrl + s
,保存
在磁盘管理里右键 -> 重新扫描磁盘我们的分区就恢复了出来