2024年4月2日发(作者:)

winhex

教程

winhex

数据恢复分类:硬恢复和软恢复..所谓硬恢复就是硬盘出现物理性损伤;比如有

盘体坏道、电路板芯片烧毁、盘体异响;等故障;由此所导致的普通用户不容易取

出里面数据;那么我们将它修好;同时又保留里面的数据或后来恢复里面的数据;

这些都叫数据恢复;只不过这些故障有容易的和困难的之分;所谓软恢复;就是硬

盘本身没有物理损伤;而是由于人为或者病毒破坏所造成的数据丢失比如误格

式化;误分区;那么这样的数据恢复就叫软恢复..

这里呢;我们主要介绍软恢复;因为硬恢复还需要购买一些工具设备比如pc3000;

电烙铁;各种芯片、电路板;而且还需要懂一点点电路基础;我们这里所讲到的所

有的知识;涉及面广;层次深;既有数据结构原理;为我们手工准确恢复数据提供依

据;又有各种数据恢复软件的使用方法及技巧;为我们快速恢复数据提供便利;而

且所有软件均为网上下载;不需要我们投资一分钱..

数据恢复的前提:数据不能被二次破坏、覆盖

数码与码制:

二进制、十六进制、八进制它们之间的转换我不想多说;因为他对我们数据恢复

来说帮助不大;而且很容易把我们绕晕..如果你感兴趣想多了解一些;可以到百度

里面去搜一下;这方面资料已经很多了;就不需要我再多说了..

数据恢复我们主要用十六进制编辑器:Winhex 数据恢复首选软件

我们先了解一下数据结构:

下面是一个分了三个区的整个硬盘的数据结构

MBR C盘 EBR D盘 EBR E盘

MBR;即主引导纪录;位于整个硬盘的0柱面0磁道1扇区;共占用了63个扇区;但

实际只使用了1个扇区512字节..在总共512字节的主引导记录中;MBR又可分为

三部分:第一部分:引导代码;占用了446个字节;第二部分:分区表;占用了

64字节;第三部分:55AA;结束标志;占用了两个字节..后面我们要说的用winhex

软件来恢复误分区;主要就是恢复第二部分:分区表..

引导代码的作用:就是让硬盘具备可以引导的功能..如果引导代码丢失;分区表

还在;那么这个硬盘作为从盘所有分区数据都还在;只是这个硬盘自己不能够用

来启动进系统了..如果要恢复引导代码;可以用DOS下的命令:FDISK /MBR;这

个命令只是用来恢复引导代码;不会引起分区改变;丢失数据..另外;也可以用工

具软件;比如DISKGEN、WINHEX等..

但分区表如果丢失;后果就是整个硬盘一个分区没有;就好象刚买来一个新硬盘

没有分过区一样..是很多病毒喜欢破坏的区域..

EBR;也叫做扩展MBRExtended MBR..因为主引导记录MBR最多只能描述4个分区

项;如果想要在一个硬盘上分多于4个区;就要采用扩展MBR的办法..

MBR、EBR是分区产生的..

比如MBR和EBR各都占用63个扇区;C盘占用1435329个扇区……那么数据结构

如下表:

63

MBR

而每一个分区又由DBR、FAT1、FAT2、DIR、DATA5部分组成:比如C 盘的数

据结构:

C 盘

DBR

Winhex

Winhex是使用最多的一款工具软件;是在Windows下运行的十六进制编辑软件;

此软件功能非常强大;有完善的分区管理功能和文件管理功能;能自动分析分区

链和文件簇链;能对硬盘进行不同方式不同程度的备份;甚至克隆整个硬盘;它能

够编辑任何一种文件类型的二进制内容用十六进制显示其磁盘编辑器可以编辑

物理磁盘或逻辑磁盘的任意扇区;是手工恢复数据的首选工具软件..

首先要安装Winhex;安装完了就可以启动winhex了;启动画面如下:首先出现的

是启动中心对话框..

FAT1 FAT2 DIR DATA

1435329

C盘

63

EBR

1435329 63

D盘 EBR

扩展分区

1253889

E盘

这里我们要对磁盘进行操作;就选择“打开磁盘”;出现“编辑磁盘”对话框:

在这个对话框里;我们可以选择对单个分区打开;也可以对整个硬盘打开;HD0是

我现在正用的西部数据40G系统盘;HD1是我们要分析的硬盘;迈拓2G..这里我

们就选择打开HD1整个硬盘;再点确定.然后我们就看到了Winhex的整个工作界

面..

最上面的是菜单栏和工具栏;下面最大的窗口是工作区;现在看到的是硬盘的第

一个扇区的内容;以十六进制进行显示;并在右边显示相应的ASCII码;右边是

详细资源面板;分为五个部分:状态、容量、当前位置、窗口情况和剪贴板情况..

这些情况对把握整个硬盘的情况非常有帮助..另外;在其上单击鼠标右键;可以

将详细资源面板与窗口对换位置;或关闭资源面板..如果关闭了资源面板可以

通过“察看”菜单——“显示”命令——“详细资源面板”来打开..

最下面一栏是非常有用的辅助信息;如当前扇区/总扇区数目……等

向下拉拉滚动条;可以看到一个灰色的横杠;每到一个横杠为一个扇区;一个扇

区共512字节;每两个数字为一个字节;比如00..

下面我们来分析一下MBR;因为前面我们说过;前446个字节为引导代码;对我们

来说没有意义;这里我们只分析分区表中的64个字节..

分区表64个字节;一共可以描述4个分区表项;每一个分区表项可以描述一个主

分区或一个扩展分区比如上面的分区表;第一个分区表项描述主分区C盘;第二

个分区表项描述扩展分区;第三第四个分区表项填零未用

每一个分区表项各占16个字节;各字节含义如下:H表示16进制

字节位置

第1字节

第2、3、4

字节

第5字节

内容及含义

引导标志..若值为80H表示活动分区;若值为00H表示非活动分区..

本分区的起始磁头号、扇区号、柱面号

分区类型符:

00H——表示该分区未用

06H——FAT16基本分区

0BH——FAT32基本分区

05H——扩展分区

07H——NTFS分区

0FH——LBA模式扩展分区

83H—— Linux分区

第6、7、8本分区的结束磁头号、扇区号、柱面号

字节

第9、10、本分区之前已用了的扇区数

11、12字节

第13、14、本分区的总扇区数

15、16字节

此硬盘的第一分区表即MBR分析如下:

第一个分区表项C盘

第1字节80:表示此分区为活动分区;

第5字节0B:表示分区类型为Fat32;

第9、10、11、12字节 系统隐含扇区3F 00 00 00:所谓系统隐含扇区就是本

分区C盘之前已用了的扇区数;这是一个十六进制数;但要注意:真正的隐含扇区

数应该反过来填写比如:隐含扇区数为3E 4D 5A 6F;则反过来就是6F 5A 4D 3E ;

这才是实际的隐含扇区数..那么;3F 00 00 00反过来写就是00 00 003F;也就是

3F;将他转成十进制数我们才能知道实际的隐含扇区数是多大..这可以使用计算

器来算;单击工具栏上的“计算器”按钮;如下图:

这样就启动了计算器

计算器有两种型号;我们要进行进制转换;就要选择“科学型”

比如我们要将十六进制3F转换为十进制;就要先选中“十六进制”;然后输入

3F

再选中“十进制”;十六进制3F转为十进制等于63..想一想我们前面所讲

的;MBR占用63个扇区;也就是C盘之前已用了的扇区数为63;第64个扇区就是

C盘的第一个扇区;但要注意的是;整个硬盘的LBA地址是从零开始的;0~62的扇

区为MBR..

第13、14、15、16字节本分区总扇区数当然;这也就是C盘的大小:C1 E6 15 00;

同样;实际的十六进制数也要反过来才对;也就是00 15 E6 C1;将它转换成十六

进制数是1435329..给你出个题;你知道D盘的EBR在哪个扇区吗 我们一起来

算一下;还记得前面数据结构那个表吗 C盘后面不就是D盘的EBR吗 D盘EBR

的第一个扇区=MBR+C盘的大小;也就是 63+1435329=1435392..

我们来看看对不对;单击工具栏上的“转到扇区”按钮;出现一个“转到扇区”

对话框

然后输入1435392;再点“确定”;就到了1435392扇区了你可以使用它再转回

到0扇区

这个就是D盘的EBR;也就是D盘的分区表了;怎么知道的呢 因为MBR和EBR的

结构是完全一样的;都是占用了63个扇区;但只用了第一个扇区;其余62个扇区

填零不用..第一个扇区前446个字节都为引导代码;后64个字节为分区表;最后

2个字节为55AA结束标志..因为EBR不是活动分区;不需要引导代码;所以前

446个字节为零..

还有另一种方法直接找到D盘的EBR;单击“访问”下拉按钮——“分区

二”——“分区表”;直接就到1435392扇区.

这样;分区表中的第一个分区表项共十六个字节分析完毕;下面我们再来看看第

二个分区表项扩展分区..

第1字节00:表示非活动分区

第5字节05:表示扩展分区

第9、10、11、12字节00 E7 15 00:本分区之前的扇区数扩展分区前面也就

是MBR和C盘;好像我们前面算过这个数 同样;先将它反过来;就是00 15 E7 00 ;

再转为十进制是1435392;看来我们前面真的算过这个数..

第13、14、15、16字节40 09 29 00:本分区的总扇区数..也就是扩展分区的

总扇区数..转为十进制应该是2689344..想一想;用这个数加上前面的1435392;

不正好是整个硬盘的总扇区数4124736吗

这样;如果分区表被破坏;我们只要把这些数值都计算出来并填上;分区表不就

恢复了 那么;这里我们为什么不分析第2、3、4字节本分区的起始磁头号、扇

区号、柱面号和第6、7、8字节本分区的结束磁头号、扇区号、柱面号呢 这是

因为C/H/S柱面/磁头/扇区是老式硬盘的寻址方式;这种寻址方式来管理硬盘

效率很低;而现在几乎所有的硬盘都支持LBA全称是Logic Block Address;即

扇区的逻辑块地址寻址方式;这种管理方式简单高效..在LBA方式下;系统把所

有的物理扇区都统一编号;按照从零到某个最大值排列;这样只用一个序数就确

定了一个唯一的物理扇区..

小知识:具体一个硬盘有多少个LBA扇区不需要我们去记忆;因为用各种工具软

件如MHDD WINHEX等都可以检测到..我们只要知道个大概就行了:如10G的硬

盘大概有2000万个扇区;20G的硬盘大概有4000万个扇区;40G的硬盘大概有

8000万个扇区……那么;2G的硬盘大概有400万个扇区..

那么;你可能要问了:如果要恢复分区表;这个起始磁头号、扇区号、柱面号还

有结束磁头号、扇区号、柱面号应该怎么填呢 简单得很;在后面恢复分区表的

时候我会告诉你;直接填;都不用计算..

还有兴趣来分析一下D盘的EBR吗

其实D盘的EBR和E盘的EBR我们不分析也罢;因为无非也是分区表;跟MBR的

结构是一样的;但却很容易把我们绕晕;又因为EBR一般不容易被破坏;所以我

不建议分析EBR..

但如果你一定要分析;那就分析吧..

单击“访问”下拉按钮——“分区二”——“分区表”;直接就到1435392扇

区;即D盘的分区表EBR..

第一个分区表项D盘:

第1个字节00:表示非活动分区

第5个字节06:表示FAT16分区

第9、10、11、12字节3F 00 00 00:本分区之前已用了的扇区数;也就是EBR

的数目;63个..

第13、14、15、16字节C1 E6 15 00:本分区的总扇区数;也就是D盘的扇区

数;先反过来排列就是00 15 E6 C1;转为十进制就是1435329..

第二个分区表项D盘后面的:

第1个字节00:表示非活动分区

第5个字节05:表示扩展分区

第9、10、11、12字节00 E7 15 00:本分区之前已用了的扇区数;也就是D盘

的EBR加D盘总共的大小; 63+1435329=1435392

第13、14、15、16字节40 22 13 00:本分区的总扇区数;1253952;也就是E

盘的大小再加上一个EBR的数目..

单击“访问”下拉按钮——“分区三”——“分区表”;直接就到2870784扇

区;即E

盘的分区表EBR..因为E盘后面没有分区了;所以没有第二个分区表项..这里我

们就不再研究了;有兴趣的话可以自己多备一块硬盘作从盘;然后自己分分区研

究研究..

通过以上的研究我们总结一下;MBR在定义分区的时候;将多余的容量定义为扩

展分区;指定该扩展分区的起止位置;根据起始位置指向硬盘的某一个扇区;作

为下一个分区表项;接着在该扇区继续定义分区;如果只有一个分区;就定义该

分区;然后结束;如果不止一个分区;就定义一个基本分区和一个扩展分区;扩展

分区再指向下一个分区描述扇区;在该分区上按照上述原则继续定义分区;直至

分区定义结束..这些用来描述分区的扇区形成一个“分区链”;通过这个分区

链;就可以描述所有的分区..系统在启动时按照分区链的连接顺序查找分区;直

至找出所有分区..这个链显然是个开链结构;如果形成一个环;系统本身并不会

去判断它;它只是按照这个链忠实的查找分区;而不进行任何额外的检测与处

理..所谓硬盘逻辑锁;就是让分区链形成一个环;这样系统在启动时就在分区表

内循环;表现为系统无法引导;就是从软盘启动;也不能进入硬盘..明白了其结

构原理;解决这个问题就简单了;目前有很多种方法解决这个问题;后面我们还

会讲到..系统就是利用这种方法使一个硬盘分区后看起来象多个硬盘..系统能

够找到C盘以外的其他逻辑盘的唯一办法就是;沿着EBR所描述的分区链查找分

区..

其实;通常情况下EBR是不会被破坏的;或者破坏的几率极低极低;通常情况下;

都是只有MBR被破坏;那么这种情况下;我们只要把MBR的分区表64个字节复原;

其他的分区顺着分区表所提供的链自然而然就出来了..那么;如何才能将分区

表复原呢 这就要通过计算结合Winhex强大的功能来实现了..

下面我们就来模仿分区表被病毒破坏的情况;将MBR全部填零..我们首先将MBR

所在的扇区选中..鼠标指向第一个字节;单击右键;选择“选块开始”

然后鼠标指向MBR的最后一个字节;单击右键;选择“选块结尾”

然后我们在选区内部单击鼠标右键;选择“编辑”

这样就有出来一个菜单

然后我们选“填充选块”;这样就出来一个填充选块对话框

在“用十六进制填充”的输入框中输入“00”;再点“确定”

这样MBR所在扇区全部被我们填充为“00”

如果想取消选区;那就用鼠标拖动随便选中一块区域;那么原来的选区就会取

消..注意;如果扇区数据被修改了而没有存盘就会变为别的颜色..

修改了扇区;这时候还没有存盘生效;如果你想存盘生效的话;就选择“文件”

菜单“保存扇区”命令..

这时候就会出现一个提示;如果你不想存盘了就点取消;如果想存盘;就点确定;

再点是..

好;这样就存盘了;扇区被修改的数据又变为黑色..

这样我们就把分区表给删除了;这时候必须重新启动才能生效;如果你打开我的

电脑;会发现三个分区F 、G、 H还在那里;并且里面的数据还能正常使用..

现在;我们关闭所有程序将电脑重新启动……

经过不长时间的等待;电脑启动起来了;我们打开我的电脑看看;发现F 、G 、H

三个分区不见了..

再打开Winhex发现MBR全部为零了;下面我们就着手开始手工恢复分区表

首先恢复引导代码;这最简单了;只要用Winhex到别的系统盘把引导代码复制

过来就行了..我现在的机器上不是挂着两个硬盘吗 一个迈拓2G;一个西数40G;

西数40G是我的系统盘;那就从这个盘上复制就行了..

单击“磁盘编辑器”按钮

出现“编辑磁盘”对话框

选择“HD0 WDC WD400EB---00CPF0”;点“确定”

这样我们就把系统盘的分区表给打开了;注意;现在我们是打开了两个窗口;当

前的窗口是“硬盘0”;在标题栏上有显示..另外;打开窗口菜单也能看出来;当

前窗口被打上一个勾;如果想切换回原来的窗口;就点击“硬盘1”..

首先选中系统盘的引导代码

然后在选区中单击鼠标右键;选“编辑”

又出来一个菜单;然后我们选“复制选块”——“正常”

然后我们切换回硬盘1窗口;在零扇区的第一个字节处单击鼠标右键;选“编

辑”

然后选“剪贴板数据”——“写入……”

出现一个窗口提示;点“确定”

这样;我们就把一个正常系统盘上的引导代码复制过来了..

下面;我们就开始恢复分区表共64个字节;分为4个分区表项;每个分区表项占

用16个字节;一般只使用前两个分区表项;我们首先来恢复第一个分区标项也

就是用来描述C盘的..

首先;在第1个字节处0扇区倒数第五行;倒数第二个字节填上分区引导标志;

因为C盘是活动分区;所以填上80..

接着是第2、3、4字节本分区起始磁头号、扇区号、柱面号;填上:01 01 00..

第5字节是分区类型符;因为原先C盘是Fat32格式;所以填上:0B..那么;如果

你不知道C盘是什么格式怎么办呢 你会说问问客户呀;那么如果他也不知道呢

别着急;后面在说恢复DBR的时候我会教你怎么分辨分区的格式..

第6、7、8字节是本分区的结束磁头号、扇区号、柱面号;这怎么知道呢 别着

急;现在的磁盘都是按照LBA方式寻址;并不按照C/H/S及柱面、磁头、扇区方

式寻址;所以这个地方你填些什么一般关系不大;但是我要告诉你有一个通用的

填法;那就是:FE FF FF..

第9、10、11、12字节;本分区之前已用了的扇区数;也就是MBR所占用的扇区

数;那不是63吗 对;但是要将63转为十六进制数;再反过来倒着填写上..还记

得怎么用计算器吗 将63转为十六进制数是3F;不够四个字节前面加零;也就是

00 00 00 3F;再将此数从右向左依次序反过来就是3F 00 00 00..

第13、14、15、16字节是本分区的总扇区数;也就是C盘的大小;这就要通过稍

微一点点计算来得到了..因为C盘是从第63个扇区开始;而C盘后面紧接着的

是EBR;所以用EBR所在的第一个扇区数减去63就是C盘的大小..那么如何才

能找到EBR所在的第一个扇区呢 我们前面说过;EBR的结构和MBR是一样的;所

以;EBR的结束标志也一定是55AA;那么;只要我们找到这个结束标志;再看看这

个扇区是不是EBR不就行了

单击“搜索”——“查找十六进制数值……”;然后出来一个对话框

在文本框中输入“55AA”;搜索框中选“全部”;然后选中“条件”;把偏移量

设置为“512=510”..

再单击“确定”..画面如下:

首先找到第一个“55AA”;我们看到;个扇区在第63个扇区上;并不是我们要找

的EBR;再按F3继续查找

又找到好几个扇区;都不是;那么下面这个扇区是不是

前面我们说过;EBR的结构和MBR的结构是一样的;所以在倒数第五行倒数第二

个字节应该是00 01;并且前446个字节应该是0;显然这也不是EBR;继续按F3

查找……终于找到了真正的EBR;在1435392扇区..

小技巧:现在的硬盘都比较大;要逐个扇区的查找55AA确实太慢了;那么有没有

办法快点呢 有;那就是先问问客户C盘大概有多大;大多数客户还是知道的;比

如他说C盘大概有10个G;那么你就不要从头开始找了;因为那实在太慢了..10

个G大概是2000万个扇区;那么你可以用转到扇区命令直接到1900万扇区;从

那个地方再开始找不就省事多了..

用1435392减去63;得到1435329;再转为16进制;就是15E6C1;将他倒转过来

就是C1E61500;这就是C盘的大小..这样;第一个分区表项填写完毕;我们保存

一下;再接着填写第二个分区表项..

第二个分区表第1个字节:因为是非活动分区;所以写00

第2、3、4字节;填写01 01 00通用的

第5字节:因为是扩展分区;所以填写0F

第6、7、8字节:填写FE FF FF通用

第9、10、11、12字节是本分区之前已用了的扇区数;应该就是C盘大小加63;

也就是1435392;前面刚计算出来的;转为十六进制数再反过来就是00 E7 15 00

第13、14、15、16字节是本分区的总扇区数;也就是扩展分区的总扇区数;也就

是用整个硬盘的大小减去C盘的大小再减去63;即

4124736-1435329-63=2689344;转为十六进制就是290940;反过来就是

40092900..

这样;第二个分区表项就填写完了..

不要忘了把最后的结束标志55AA填上;这样;MBR就全恢复完了;最后;保存;再

重新启动……

启动完毕;迫不及待的打开我的电脑;发现三个分区全部又回来了;并且里面的

数据完好无损..

再右击“我的电脑”;选“管理”

出现一个对话框;选“磁盘管理”;在右边可以看到磁盘一的三个分区Fat32、

Fat16、Ntfs全部都回来了;至此;手工恢复分区表顺利完成..

手工恢复数据恢复成功率比较高;而且比较有趣味和挑战性;能找回许多傻瓜似

的软件所找不回来的文件;但是要求工程师一定要有耐性;而且一定要保持清醒;

清楚自己正在操作什么;操作完了会有什么后果;能不能退回到上一步状态..特

别是对一些破坏性操作;一定要考虑周到;只要条件允许;就一定要在操作之前

进行备份;否则会造成“血”的教训;切记

下面我们会说到手工恢复DBR、FAT此教程被收录在付费教程中;这些比手工恢

复分区表还要复杂;更需要大量的计算..再说完了使用Winhex手工恢复数据之

后;我们会说到一些数据恢复软件;结合数据恢复软件会使数据恢复成功率大大

提高;但有一些软件在扫描过程中会对原盘破坏数据;在使用中一定要谨慎而且

同一个软件;一个新手用和一个老手用数据恢复成功率绝对是不一样的;这些软

件我们会免费赠送;绝对不会让你学习了资料却找不到软件的..