修复硬盘日常-硬盘分区表
引导语
众所周知,数据无论是对于服务器还是个体上而言都是非常重要的存在。服务器通过处理数据达到我们需要的效果,而我们个体而言,常用的就是电脑,今天我写这篇文章的原因,也是因为我邻居最近整虚拟硬盘实操数据恢复,结果把自己的硬盘整没了。(悲
步骤
预备步骤:WinHex与了解MBR结构
Winhex
我们需要用到的工具是WinHex,如果没有的可以找我之前一个硬盘分区的文章,那里面有这个软件的打包。主要是查看和修改硬盘的底层数据的。
MBR结构
主引导记录的英文简称MBR
MBR扇区位于整个硬盘的第一个扇区,即0号扇区,是一个特殊且重要的扇区,由四部分构成:
(1)引导程序
引导程序占用其中的前440字节,其地址在偏移0-1B7H处。
(2)Windows磁盘签名
占用4个字节,地址在偏移1B8H-偏移1BBH处,是Windows系统对硬盘初始化时写入的一个磁盘标签
(3)分区表
偏移1BEH-偏移1FDH的64字节为硬盘分区表(DPT),这是MBR中非常重要的一个结构,你也可以认为是0扇区倒数第66字节开始64个字节。(本次修复的目标)
(4)结束标志
扇区最后的两个字节“55 AA”(偏移1FEH-偏移1FFH)是MBR的结束标志。
结构如图:
第一步:分析硬盘情况
因为这次比较简单,只是分区表出了问题,所以只要修复分区表即可
首先我们先分析这个分区表的结构,如图:
第二步:修复分区表
首先在分区表开始四个字节填上“80 20 21 00”(固定字节,如果修复的分区没有系统分区可以80改成00),往后开始填写分区属性,有以下几个分区属性:
07|NTFS、exFAT
08|FAT32
0C|FAT32
83|Ext3、Ext4
EE|GPT
向下查找“非零”(Ctrl+Alt+X填写”!00”),如图:
这时候我们来到了第一个分区的DBR,你会发现右边写着NTFS,代表着这个是NTFS分区。这里有分区簇数、分区位置和分区大小(第一个分区位置通常是第2048个扇区),如图:
如果只是像以上这种情况的话,你只需要把这些数据复制下来再回到MBR填写回去就可以了,但是一般都会把容量抹掉的,所以我们还要学会怎么查找容量以及每个分区的位置。
第三步:寻找分区容量
在分区的DBR向下偏移16个扇区(偏移快捷键:Alt+G)跳到这个分区的次MFT元文件,找到第0列或者第8列的“80”字节,如图:
向下4行字节可以看到主MFT元文件的位置,如图并把相应位置转换成10进制:
接着就可以计算主MFT的位置了
计算公式:在次MFT转换的10进制数值×分区簇数=主MFT元文件位置(通常是6291456个扇区)
向下偏移6291456个扇区来到了主MFT,你会发现这里的内容和次MFT一毛一样,所以你如果次MFT没了的话你可以尝试直接在DBR偏移6291456把主MFT的内容复制过来。(也可以用公式反推分区簇数)
在主MFT向下偏移12个扇区,就来到了Bitmap元文件分区,如图:
找到“FF FF FF FF”正上方的4个字节,转换成10进制,进行以下公式的计算:
分区容量计算公式:“FF FF FF FF”正上方4个字节转换的10进制数值×8(固定值)×分区簇数=此分区容量
计算出来了后,我们可以用WinHex自带的数据解释器回到DBR和MBR进行修改填写,也可以进行上面的数值转换。
PS:DBR填写时需要将计算出来的结果减1
第四步:寻找全部硬盘分区
如果所有都是主磁盘分区的话,那么一个硬盘最多只有四个分区(扩展分区除外)。所以我们只要按照上面的方法一个一个修复即可,寻找下一个的位置计算公式如下:
此分区位置转换10进制数值+此分区位置转换10进制数值=下一个分区的位置
如果按着这个方法向下偏移后看到的全是00或者出现了“不包含偏移量”的提示的话,就代表没有其他分区了。
最后只要在MBR(0扇区)最后填上“55 AA”即可
结束语
没什么好说的,这个在数据恢复中是比较基础的一门课程,主要是帮助理解DBR和MBR的,希望看到这篇文章的人都能学会!










