护航时代数据恢复技术共享—
十六进制下硬盘分区表恢复
Runtime's DiskExplorer是一款功能非常强大的磁盘编辑软件,并带有
数据恢复的功能。Runtime's DiskExplorer对硬盘分区表的编辑非常容易,它把分区表信息抽象成可读的参数,即分区类型、分区起始扇区、分区大小等。以往人们对硬盘分区表的编辑大都在十六进制模式下进行的,非常典型的例子就是用winhex磁盘编辑软件在十六进制模式下对分区表进行更改,这种情况需要对硬盘主引导记录非常了解才能做到,你必须知道哪些字节是存放分区表信息,哪些字节代表分区类型,哪些字节代表分区起始点,哪些字节代表分区大小等等。在十六进制模式下,对分区表的理解和编辑是非常复杂的。Runtime's DiskExplorer对分区表的编辑真正实现了分区表的可视化编辑,分区表展示在用户面前真正变成了一张表格,根据表格字段的含义填入相应的参数即可。
注意
:本文讲解的分区表知识是指微软操作系统环境下的硬盘分区,包括
Dos
、
Windows
两种操作系统平台,分区类型为
FAT
、
NTFS
。所讲的知识不适合
Unix
、
Linx
、
MAC
、
Novell
等非
Microsoft
平台操作系统
—
虽然其它操作系统或者部分内容和以下所讲的有些是一样的或者类似的。
Runtime's DiskExplorer对硬盘的读写是基于
LBA
(
逻辑块地址
)
方式,我们不需要去理解以前的
CHS
寻址方式,有关
LBA
(
逻辑块地址
)
更详细的信息请在互联网上搜索。这里简单的理解一下
LBA
、扇区(
sector
)、字节
(Byte)
、
KB
、
MB
、
GB
、
TB
的关系:
当你用
Runtime's DiskExplorer去查看、编辑硬盘的时候,你看到的是硬盘的实实在在的物理扇区,你可以看到一个硬盘有多少个扇区,你可以随意编辑任何一个扇区,简单的理解为:1 sector = 1 LBA ,1 sector = 512 byte ,1 KB = 2 sector,1
MB = 1024 KB
,
1 GB = 1024 MB
,
1 TB = 1024 GB
。Runtime's DiskExplorer以前版本对大于1TB的硬盘(当然现在还没有大于1TB的单个硬盘,大于1TB的硬盘大都是配置好的磁盘阵列),
V3.03
版本已经解决了这一问题。
Runtime's DiskExplorer
界面介绍:
你可以从
[url]http://www.runtime.org/[/url] 站点下载DiskExplorer for FAT V3.03
和
DiskExplorer for NTFS V3.03
安装程序,安装到计算机上后运行该程序。界面如下:(这时候Runtime's DiskExplorer打开了计算机上的第一块硬盘,一般情况下就是该计算机装有正在运行当前操作系统的硬盘。通常情况下我们不要去更改系统盘相关信息,我们需要编辑的是挂接在计算机上的第二块盘或者第二块以上的硬盘信息。
)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath001.gif)
硬盘在Runtime's DiskExplorer上的编号是HD128、HD129、HD130依次类推,HD128是指计算机上的第一块硬盘,HD129是计算机上的第二块硬盘依次类推。下图是打开选择某个硬盘的界面。Physical drives下列出所有计算机上能正常识别到的物理硬盘,并列出每个硬盘的分区信息。Runtime's DiskExplorer早期的版本只能列出前8块硬盘,如果计算机上挂接多于8块硬盘,那后面的硬盘就没法看到。新版本V3.03已经没有硬盘数量的限制了。
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath002.gif)
按照上图,我们选择2nd hard drive ,双击鼠标进去以后,显示如下图:(如果该硬盘主引导扇区正常,即0扇区没有被破坏,Runtime's DiskExplorer自动显示
Partition Table浏览界面。如果0扇区不符合主引导记录-MBR格式,则显示HEX即十六进制浏览界面。)Partition Tanle界面图
:
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath003.gif)
Runtime's DiskExplorer有多种浏览显示界面,这我们先看一下Hex(按F3)、Partition Tanle(按F9)、Boot Record(按F10)三种界面,可以通过快捷键切换,也可以通过对程序界面中间单击右键—View来选择进入哪种显示模式(如下图)。
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath004.gif)
Hex显示界面即十六进制界面图
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath005.gif)
Boot Record即Boot扇区显示界面图
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath006.gif)
Runtime's DiskExplorer
十六进制模式下的分区表信息
简单的理解硬盘分区信息:假设我们计算机上的硬盘分了4个分区C、D、E、F,分区表的作用就是给这4个分区作定义。具体如下:
C盘分区定义:分区类型为NTFS,起始扇区(
Boot扇区)是63 sec(扇区),大小为10000000 sec(扇区);
D盘分区定义:分区类型为FAT32,起始扇区是10000001 sec(扇区),大小为10000000 sec(扇区);
E盘分区定义:分区类型为NTFS,起始扇区是20000001 sec(扇区),大小为10000000 sec(扇区);
F盘分区定义:分区类型为NTFS,起始扇区是30000001 sec(扇区),大小为10000000 sec(扇区);
假如F盘分区表坏了,分区类型、起始扇区、分区大小都没有了,如果这个分区中的数据没有被破坏,那么我可以重新建立F盘的分区表,前提是我必须先找到它的分区类型、起始扇区、分区大小三个参数,用
Runtime's DiskExplorer可以把这3个参数填写出正确的分区表,F盘就正常了。
对硬盘分区表的理解一直是初学者的一个较难的问题,以往的网上搜索得到的关于硬盘分区表的文章写得比较难懂,需要理解的专业词汇太多。
下面主要用Runtime's DiskExplorer来解释分区表结构,Runtime's DiskExplorer对分区表的可视化操作使得手工填写分区表变得非常容易。
(以下截图均来自Runtime's DiskExplorer for NTFS软件,视图模式为十六进制,内容硬盘的第0扇区。)
如果十六进制模式去学习分区表,你需要理解以下相关内容:
硬盘主引导记录(MBR
):MBR是英文Master Boot Record的缩写,中文意为主引导记录。硬盘的0磁道的第一个扇区称为MBR,它的大小是512字节。
主引导记录可以分为三个部分。
第一部分:
pre-boot
区(预启动区),占446字节;
第二部分:
Partition table
区(分区表),占64个字节。
第三部分:
结束标志占2字节(
55 AA)
如果分区表信息的活动分区表损坏,用这个硬盘来引导系统的时候会报错:
Invalid partition table. Error loading operating system. Missing operating system
如果预启动区是空的没有任何数据或者不是正确的MBR格式的数据,用这个硬盘来引导,会提示找不到可以用来启动的设备:
Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key
下面试图用十六进制编辑模式去理解分区表信息,以便和Runtime's DiskExplorer可视化编辑分区表做对比。
下图标记选择部分是MBR的pre-boot区,即硬盘0扇区前
446
字节。
注意:不需要去理解每个字节的含义,因为这部分数据一旦被破坏,我们可以从正常的硬盘中
copy
相应数据覆盖就可以正常使用,或者通过重新初始化该硬盘也可以使其正常。需要指出的是,在非
Microsoft
平台下使用的硬盘,这部分数据有的不符合
主引导记录(MBR
)
格式,我们不需要去更改它,否则正常的数据会被破坏掉!
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath007.gif)
下图标记选择部分是MBR的Partition table区(分区表,共占64个字节,每个分区表占用16字节)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath008.gif)
下图标记选择部分是MBR的结束标志(共占2个字节) 结束标志55 AA两个字节是主引导记录(MBR)和每个Boot扇区的特有标记,如果没有55 AA字符作为结束标志,主引导记录(MBR)和每个Boot扇区都是不正常的。
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath009.gif)
下图标记选择部分是硬盘第1个分区表信息(共16个字节)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath010.gif)
解读第一个分区表:
00 00 00 00 00 2C 44 63 A9 23 D6 1D 00 00
80
01
01 00 07 EF FF FF 3F 00 00 00 61 E7 85 01 00 69
每个分区表都有3个非常重要的参数:分区类型、分区起始扇区、分区大小,其中还有一个参数标记这个分区是否为活动分区,活动分区一般一个硬盘中只允许有一个。
80 ----
活动分区标志
07 ----
分区类型,07
表示该分区为NTFS
格式
3F
00 00 00 ----
该分区的起始扇区,为十六进制:0000003F
(十进制是63
)
61 E7 85 01 ----
该分区的大小,单位是扇区,为十六进制:0185E761
(十进制是25552737
)
注意:起始扇区和分区大小分别占用4
个字节,61 E7 85 01
是反过来两位两位取值,即0185E761
是真正的数字,十六进制和十进制之间的换算可以用计算器科学计数模式换算。要更改某个字节数据,鼠标单击该字节,就可以就可以输入新的数据。需要在Runtime's DiskExplorer
做一下设置Tools
àOption
默认情况下自动选择Read only
,没法编辑。我们选择Virtual
选项,一般不建议选择Direct read/write
选项。如下图:
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath011.gif)
下图标记选择部分是硬盘第2个分区表信息(共16个字节)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath012.gif)
01 00 07 EF FF FF 3F 00 00 00 61 E7 85 01
00
69
C1 FF 07 E0 FF FF 77 01 86 01 78 B1 D4 01 00 00
00 ----
正常分区,不是活动分区,如果该字节不是00
也不是80
,那该分区是不正常的
07 ----
分区类型,07
表示该分区为NTFS
格式
77 01 86 01 ----
该分区的起始扇区,为十六进制:01860177
(十进制是25559415
)
78 B1 D4 01 ----
该分区的大小,单位是扇区,为十六进制:01D4B178
(十进制是30716280
)
下图标记选择部分是硬盘第3个分区表信息(共16个字节)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath013.gif)
C1 FF 07 E0 FF FF 77 01 86 01 78 B1 D4 01
00
00
C1 FF 07 EF FF FF A0 B6 5A 03 70 7D 9E 0A 00 00
00 ----
正常分区,不是活动分区,如果该字节不是00
也不是80
,那该分区是不正常的
07 ----
分区类型,07
表示该分区为NTFS
格式
A0 B6 5A 03 ----
该分区的起始扇区,为十六进制:035AB6A0
(十进制是56276640
)
70 7D 9E 0A ----
该分区的大小,单位是扇区,为十六进制:0A9E7D70
(十进制是178158960
)
下图标记选择部分是硬盘第4个分区表信息(共16个字节)
![](http://www.bnuol.com/jiaocheng/0sector.files/p_w_picpath014.gif)
第四个分区表信息是空的,没什么信息可以使用。
小结:这一章主要先了解一下
Runtime's DiskExplorer
软件的简单使用以及十六进制下分区表的定义所在的位置,还没讲到
Runtime's DiskExplorer
更简单的分区表编辑操作。分区表知识是学习数据恢复技术的最基础的东西,了解十六进制下的一些编辑知识是必要的。
转载于:https://blog.51cto.com/199818/31862