您好,欢迎来到刀刀网。
搜索
您的当前位置:首页数据无价硬盘数据恢复一步一步用Winhex手动修复分区表以提取数据

数据无价硬盘数据恢复一步一步用Winhex手动修复分区表以提取数据

来源:刀刀网
数据⽆价硬盘数据恢复⼀步⼀步⽤Winhex⼿动修复分区表以提取数据

⼀、初步应⽤——双分区恢复实例及分析(⼀)、现场重现:

提⽰,切勿随意使⽤⾃⼰的硬盘进⾏试验,切记试验前保存重要数据。对于移动硬盘,损坏往往发⽣于硬盘传输数据中断电。现在我将⼀个有问题的移动硬盘接到电脑上,在“计算机管理”-->“磁盘⼯具”中我们可以看到这个未被初始化的磁盘显⽰为⿊⾊(打开磁盘⼯具时它会提⽰你要初始化,不理它,点“取消”),在“计算机”中也找不到这个磁盘。

对于新⼿,往往是这样⼏个表情吧其实俺也是这么过来滴~争取这篇⽂章之后让⼤家

的表情都变成这样(⼆)、⼿动修复:

(阅读有困难的朋友可以先读完第三节再回过头来看这⼀节,本节的另⼀个作⽤是让新⼿对Winhex界⾯有⼀个初步了解)1、打开Winhex-->菜单栏-->选择“⼯具”-->打开磁盘(F9)-->选择要修复的硬盘,这⾥是HD2。

2、打开之后图中显⽰从0000H-->01ffH(16进制)之间的数据全部为0。

现在我从⼀个运转良好的硬盘分区表中将0000H-->01bdH之间的数据复制并粘贴到损坏硬盘的相应位置。操作步骤为:在良好硬盘中拉选0000-->01bd之间的区块,被选中区块呈亮蓝⾊;复制选块;

接下来在损坏硬盘中拉选相应区域,将光标定位⾄0000;右键-->编辑-->粘贴板数据-->写⼊。将01fe,01ff填写为55AA,到这⾥⼀定保存。

点击黄⾊区域的图标并转移⾄63号扇区菜单“视图”-->模板管理(Alt+F12)-->NTFS引导扇区。

打开如下图,并记录黄⾊⽅框内的两个数值(63和63777986)

63+63777986+1=63778050,跳转⾄63778050扇区。

稍微向下滚动⼀点,看到那个粉⾊框标识出的55AA了嘛?往前找到黄⾊框内的部分,显⽰为3F 00 00 00,将其进⾏反向排列,变为00 00 00 3F于是3F(⼗六进制)=63(⼗进制)——我们称这个数为相对偏移量。

接下来跳转⾄63778050+63=63778113扇区,我们⼜发现了⼀个EB开头的扇区

再次选择菜单“视图”-->模板管理(Alt+F12)-->主引导记录NTFS引导扇区。打开如下图,同样记录⼀下黄⾊⽅框中的数值(63和92518271)

跳转⾄0扇区。菜单“视图”-->模板管理(Alt+F12)-->主引导记录,

打开如下图。填上如图所⽰的⼏个数据:

⾄于为什么是这些数据,下节会提到。填写完之后千万别忘了保存哦~

好了,在设备管理器⾥禁⽤损坏硬盘再启⽤。再从磁盘管理⾥看看结果,嗯,⼀切复原

看,数据都在。

过程看上去有些复杂,其实熟练的话可以控制在5分钟之内,所以它并不难~下⾯就看看我做了些什么,以及那些数据是怎么来的,做什么⽤的。(三)、我做了什么?其实只有3步

上⾯所做的其实就是修复了硬盘的MBR(主引导分区记录),为什么MBR对于硬盘如此重要呢?看过我前⾯⽂章的朋友应该知道分区表就是硬盘的名单:作为⼀个名单当然不是姓名的简单堆砌,名单也是有分类的,⽐如哪些⼈是管理员,哪些⼈是学⽣等等~请先看⼀下刚才修复好的硬盘的MBR全图(注意其中⽤亮蓝⾊、黄⾊、绿⾊将512字节的分区表分为了三个部分)

硬盘的MBR在启动时⼤约是起到下⾯的⼀个作⽤:

可见作为⼀个MBR,必须要有以下的三个部分:446字节的启动描述;字节的分区描述(包括分区格式、分区⼤⼩等参数);以及最后的55AA结束表⽰。于是,只要我们能按照⼀定格式和规律填写这些项⽬,我们就能⾃⼰制作分区表了。对于恢复分区表,我们要做的就是下⾯的流程:

不难发现,这其中前⾯的446字节的引导⽂件和最后添加的“55AA”标识都是ctrl+c然后ctrl+v 的事情,因此修复分区表的关键在于那个字节的参数是如何寻找及填写的——好在我们利⽤Winhex⾃⾝提供的模板,再加上⼀点简

单的加法运算,就能⾮常轻松地获得这些参数。如下图,其实需要填写的参数不过8个,⽽且都⾮常有规律性:(该图很重要,它显⽰了那些参数是如何得来的)

上⽂的(3)(4)两步正是我在计算参数所在的位置,⽽⼀旦我定位准确,就调⽤对应的模板去查看参数,随后在(5)⾥填写参数(别忘了NTFS+1的问题)⾄于第⼀⾏活动分区:80表⽰可以从这个分区启动,00表⽰不从这个分区启动(这个参数决定电脑能否从该分区

引导,和446字节不同,如果没有那个446字节,硬盘都⽆法识别了)。⼀般装有系统的主分区需要填写80,其他的00即可。⽽硬盘参数这⼀栏:Fat32的代码是0B,NTFS是07,扩展分区是0F~~这些边边⾓⾓都很简单,这⾥就不多说了~⾄此,分区表修复⼯作⼤功告成~~(四)、⼩结

恢复原理:硬盘上的⽂件是链式的,可以顺藤摸⽠。此外,硬盘损坏的往往是MBR,后⾯各分区的虚拟MBR都完好⽆损,可以通过计算后⾯各分区的参数,逆向推出MBR的参数,从⽽实现硬盘的修复。

⼤致步骤:填写446字节引导⽂件-->填写字节分区参数-->55AA结束标志-->别忘保存

所需参数:活动分区与否(80);分区类型参数(0B, 07, 0F等);各扇区⼤⼩——共计8个参数,其他参数不知道如何填写就留空。所需时间:⾮常熟练的话,5分钟。

风险:因为只是对MBR这512个字节进⾏操作,所以即使失败,⼤不了重来,对硬盘上其他数据没有任何损害。建议将这512字节另存为⼀个⽂件,以后遇到MBR损坏的事件只要把备份COPY回去就是了~

⼆、分区表修复进阶——多分区的计算(⼀)、⼀主分区,三逻辑分区情况下的计算

前⾯提到过硬盘上的分区结构是链式的,⼜由于MBR之后的各分区表往往保存完好,就可以利⽤后⾯的各分区MBR来逆向推导MBR的参数~请看下⾯的分区链式图:

在双分区的实例中,填写的参数可表⽰为:C盘占⽤扇区+D盘之前的扇区+D盘占⽤扇区。由于多个逻辑分区的总和算⼀个扩展分区(不知道什么是扩展分区和逻辑分区的可以看看我前⾯的那篇⽂章),于是多分区的参数⽆⾮是:

C盘占⽤扇区+扩展分区前的扇区+(逻辑分区D+逻辑分区E+……),总体来讲还是3⼤块。

由于分区软件的不同,分区前的保留扇区可能有所不同~⽐如下图的这块硬盘,采⽤了diskpart进⾏分区,分区前的保留扇区达到了2048个⽽不是常见的63个。

记录C盘占⽤的扇区数为79871999。由于这是在NTFS模板中查看的信息,所以在做跳转时需要+1,即跳转到2048+79871999+1=79874048扇区。

由于这是⼀个“虚拟MBR”,它仍然拥有部分MBR特征,所以我们可以调⽤“主分区引导模板”来查看这个分区的信息。可以看到这⾥的分区信息有两项,相对于上⼀个实例多了⼀个“05”分区表⽰标识,不过这个05标识我们先不⽤管它。直接看第⼀项的两个参数为2048、167772160。

接下来跳转⾄79874048+2048+167772160=2478256扇区(由于这是在“主引导记录”模板⾥查看的,所以不需要+1),并调⽤“主引导扇区”模板查看E盘的信息。

2478256+2048+167772160=4154224扇区。

到这⾥,分区信息当中只有⼀项⽽没有“05”标识,于是可判定这就是整个扩展分区中的最后⼀个分区。记录其信息2048、209715200。如果觉得混乱,不妨列出下⾯这样⼀个表:

由上⾯的数据不难算出扩展分区的总扇区数为:(2048+167772160)+(2048+167772160)+(2048+209715200)=5452656。C盘主分区的参数为:保留分区2048,C盘本⾝占⽤79872000,于是扩展分区之前的总分区数为2048+79872000=79874048。最后需要填写的参数:

注意这个硬盘装有系统,于是第⼀分区表项填为80,分区格式代码为07(NTFS);第⼆分区不作为引导区,为00,由于是扩展分区,分区格式代码为0F(扩展分区)。其他参数上⾯皆已算出,直接填⼊即可。此外由于现在硬盘容量很⼤,原来的“开始头、扇区、柱⾯”这⼏个参数已经不⾜以表达如此⼤的数字,所以如果不知道这⼏个数字如何填写就放在那不去管它,默认为00。

另⼀⽅⾯,本例不同于前例。前例由于制图需要,是挨个通过MBR或虚拟MBR寻找NTFS引导扇区的位置并调⽤NTFS模板查看分区信息;⽽本例中除了在第⼀分区调⽤了NTFS模板以寻找扩展分区起始位置以外,其他的分区只在虚拟MBR中调⽤了“主引导记录”模板。熟练之后可以多采⽤后⾯⼀种⽅式以节省时间。(⼆)、“05”标识是怎么回事?

由于虚拟MBR⼀般不会被破坏,所以多分区计算中,我们不去管那个“05”标识也可以完成参数的计算。不过考虑到喜欢刨根问底的⼀部分朋友的需要,这⾥补充⼀个⼩节⽤于讲解MBR或虚拟MBR中分区参数的精细结构。

⾸先要更正⼀下虚拟MBR的说法:为了能在硬盘上分出多于4个分区,我们引⼊了扩展分区的概念,N个扩展分区的分区表的信息组合起来成为MBR中的扩展分区项。这种特殊的分区表结构在本节中将不再被称为“虚拟MBR”,⽽采⽤EBR(Extended Boot Record也称作扩展MBR)进⾏代替。

以上⾯320G硬盘的分区表为例,该硬盘中存在⼀个主分区和⼀个扩展分区,⽽这个扩展分区下⾯包含三个逻辑分区。⽽仅从MBR来看,其中仅包含了C盘的信息和整个扩展分区的信息,那么,电脑如何判断扩展分区⾥的每个逻辑分区有多⼤?每个逻辑分区各处于扩展分区的什么位置?很显然,仅凭整体的扩展分区信息不能回答上述问题,所以EBR担负着两个任务:⼀是描述该分区本⾝的⼤⼩、格式、保留空间等信息(这⼀点和MBR很类似);⼆是,在扩展分区内部“划清界限”,即描述⾃⾝和其他逻辑分区的位置关系。前者的代码采⽤对应的分区格式代码(如0B, 07等,但是没有0F,0F是“整体扩展分区”的参数,不是逻辑盘的参数);后者采⽤“05”这个特殊标识⽤以“表明⾝份”。如果⽤图⽰来表⽰“05”标识的作⽤,基本上就是下⾯这个样⼦:

可以推断,如果还有G盘的话,那么F盘的05标识项就是:前者表⽰D+E+F盘⼤⼩,后者表⽰G盘⼤⼩,⽽G 盘就没有05标识了。⾄此,逻辑分区在扩展分区内的定位问题得到完美解决。最后补充⼀张图⽤以说明16个字节的分区参数含义(字节表⽰4个分区,故每个分区占⽤16个字节)

(三)、⼩结

在修复过程中建议利⽤表格使分区链表变得清晰。

主引导记录模板中的分区不需要加减,从NTFS模板移动⾄主引导记录中需要+1。05标识⽤于扩展分区内部的逻辑分区的定位。

起始磁盘头等信息现在基本停⽤。占⽤扇区数最多为FF FF FF FF,每个扇区占⽤512个字节,计算下来每个分区最⼤容量为2047G。如果某⽇硬盘的分区容量⼤于这个值,那么分区表的计算⽅式将改写,⽐如可能把保留分区的4字节让⼀个给扇区数,那么单分区的最⼤容量将变为523776G,我想暂时是够⽤了……三.总结及写在后⾯总体来讲整个恢复过程就是三⼤步:446字节引导⽂件、字节硬盘分区参数、55AA结束标识,其中以字节的硬盘分区参数最为关键。可以说全⽂最为精华的部分在于第⼆章和第三章中那两张扇区和参数的对应关系图,望⼤家在这两张图上多⼀些耐⼼。幸⽽这些参数通过⼀点加法运算和现成的模板是⾮常容易获得的,整个恢复步骤不会超过10分钟,⽽精确性和安全系数都是⾮常⾼的。

希望本⽂能帮助新⼿对分区表有进⼀步的了解,同时也希望本⽂能帮助到有⼀定动⼿能⼒的朋友。同时还是要提醒⼤家,如果可能的话还是保存⼀份硬盘的MBR,这样但凡遇到主分区表问题的时候也能快速复原。此外,Winhex 除了恢复硬盘的分区表之外,也可⽤于恢复U盘的分区表,只要U盘的分区格式是Fat32的,其恢复过程完全和上⾯⼀样。Winhex也可⽤于格式化之后的数据恢复以及误删⽂件的恢复,此外还有诸多更加强⼤的功能,限于篇幅,这⾥就不⼀⼀赘述了。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务