来源: 加入时间:2012-3-9 15:10:02
对于数据丢失的用户来说,分区表丢失,是比较幸运的,因为这种故障,相对来说难度比较小。下面我们来通过一个案例来和大家分享一下分区表损坏的心得。
用户描述故障如下:
我把一个200G(ata)的硬盘连接到一部新装的电脑时,发现此硬盘无“未指派”,丢失了分区表。用了《FinalData Enterprise 2.0》、《易我分区表医生V3.0》、DOS下的一些软件都找不到。用《Find and Mount》只找到第一个分区(97.7G的)另外一个分区找不到(88.7G的)。
通过远程控制,连接到用户的计算机,用户的计算机网络速度还比较流畅,打开WINHEX,直接跳转到63号扇区,看到的不是DBR,当时第一个想法就是DBR可能被已经覆盖,用户提供了一个DBR的抓图,我想可能是第二个分区的DBR。不论是哪个,都无所谓,我想,还是自己搜索比较可靠。
由于用户两个分区都是NTFS,所以我采取了从磁盘最后一个扇区开始搜索,这是我常用的方法。点搜索按钮,搜索16进制数据“EB 52 90”,偏移调制设置为512=510,按回车。不到一秒钟,就搜索到了一个DBR,这个DBR就是用户第二个分区的DBR备份,当前扇区号为:390719504,DBR中28-2FH偏移中描述的扇区大小为:“FF E7 14 0BH”转换为10进制为185919487。那么第二个分区的开始位置就应该是DBR的备份位置减去第二个分区的大小,也就是390719504-185919487=204800017。跳转到204800017扇区,果然又是一个DBR,这个DBR和第一个搜索到的DBR是一摸一样的。
再向上翻一个扇区,又看到了一个DBR,这个DBR应该就是第一个分区的DBR备份。当前扇区号为:204800016,从这里也可以看出,用户的分区为两个基本分区。DBR中描述的分区大小为“FF FF 34 0CH”,转换为10进制为:204799999,当前扇区号减去DBR中分区的扇区总数,就是第一个分区的开始位置。即204799999-204800016=17,也就是说,第一个分区是开始于17号扇区,而不是63号扇区。
我们现在就来计算一下分区表中的参数:
分区编号 |
开始位置 |
扇区总数(分区大小) | ||
1 |
10进制 |
16进制 |
10进制 |
16进制 |
17 |
11H |
204799999 |
C34FFFFH | |
2 |
204800017 |
C350011H |
185919487 |
B14E7FFH |
我们如何来把上面的参数写入到MBR呢?分区表在MBR中1BEH偏移开始,共64个字节,每16个字节描述一个分区表,也就是说,我们只需要写32个字节就可以了。在上面的表格里的16进制数据,在X86系统中,采用高位在后低位在前的方式来存储,所以写的时候要注意。我们还是用表格来模拟写入。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00 |
01 |
02 |
05 |
07 |
02 |
03 |
01 |
11 |
00 |
00 |
00 |
00 |
00 |
35 |
0C |
00 |
02 |
05 |
06 |
07 |
01 |
00 |
05 |
11 |
00 |
35 |
0C |
00 |
E8 |
14 |
0B |
|
|
|
|
|
|
|
|
|
|
|
|
00
35
0C
00
E8
14
0B