winhex查看分区表怎样修复4k对齐硬盘分区表

热门版块:&
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
【经验交流】&对MFT偏移的修正 ---记硬盘数据修复
管理提醒:
本帖被 ac-3 从 口- 硬件使用交流 移动到本区()
本部分内容设定了隐藏,需要回复后才能看到[ 此帖被jizhaozeng在 11:49重新编辑 ]
本帖最近评分记录:霏币:+10(ac-3) 优秀贴,值得学习和借鉴推广。感谢支持硬件版!
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
管理提醒:
你好 :/read.php?tid=1863341 这张贴内的图片不能显示,建议你是否可以将图片传到论坛?!
<div class="f14" id="read_:NTFS分区 FE FF FF:本分区结束磁头号、扇区号、柱面号。其实可以发现,实际不需要理会这一项,所有分区表项都用这三个字节来表示本分区结束磁头、扇区和柱面的。 3F 00 00 00:如前面分析MBR,倒过来是00 00 00 3F ,即63个扇区。 8D 0D 23 03:倒过来是03 23 0D 8D,转为10进制是,即本分区有扇区,25.09G。 为计算第二个EBR在哪里只需将前面的“MBR扇区数+第一个分区扇区数”+“EBR扇区数+第二个分区扇区数” ……… 略去对后面几个分区的计算。 刚刚是对MBR,EBR(EBR实际与MBR类似,只是少了启动代码)的分析,现在对具体分区分析(以修复好的C盘为例)。 通过翻阅资料得知,NTFS文件系统的结构是 2 附图: 04 =750) window.open('//Mon_551_f7fc5baafcbaf9f.png');" onload="if(this.width>'750')this.width='750';" >如何进入具体分区呢?选择winhex里的“工具—打开磁盘”,选中相应物理磁盘即可打开。我的硬盘(修复好后)显示如下: 1 附图: 05 =750) window.open('//Mon_551_ac09ca.png');" onload="if(this.width>'750')this.width='750';" >双击想要看的分区即可,如partition 1,进入… 2 附图: 06 =750) window.open('//Mon_551_df92e456b917d9d.png');" onload="if(this.width>'750')this.width='750';" >会看到很多此分区的文件,甚至包括一些即使你在文件夹选项里勾选“显示隐藏文件”都无法看到的文件。比如以$开头的文件。每个NTFS分区中都有这种文件,如下: 3 附图: 07
'750')this.width='750';" title="Click Here To EnLarge"> 注意:MFT里的11到15号记录是为以后的元数据文件保留的。 以上是的截图来自网上,补充下$Boot 、$MFT 、$MFTMirr的一些资料,因为此次修复与这几个有关。 $Boot:NTFS的卷启动扇区,也叫分区启动扇区,卷启动记录等。虽叫扇区,其实包含了16个磁盘扇区(8KB),即你看到的$Boot文件大小是8KB。在winhex里双击相应的分区后,进去看到的该分区的第一个扇区就是$Boot所占的第一个分区。包含了BIOS参数块(BIOS Parameter Bloce,即BPB)和卷启动代码。BPB里包含此分区基本信息,如分区格式,大小等。至于卷启动代码,是表示如何装载WIN NT,2000等系统的NTLDR,把控制权交给它,得以继续装载系统其他部分。 && 对于$Boot里的BPB用以下的截图说明下,彩色部分就是BPB,对于$MFT文件,就是从BPB里定位的!!!这句话很重要。 附图: 08
=750) window.open('//Mon_551_b7455ffa35ad374.png');" onload="if(this.width>'750')this.width='750';" > 而我自己C盘的情况是 2 附图: 09
'750')this.width='750';" title="Click Here To EnLarge"> 对比这里的说明: 附图: 10
'750')this.width='750';" title="Click Here To EnLarge"> 图中第一条蓝色粗线是表示$MFT第一簇簇号,00 00 0C 00 00 00 00 00 ,倒过来是C0000,即16进制C0000转为10进制是786432,表示MFT在第786432簇(注意这里表示的是相对于本分区的簇数,而不是整个硬盘)。接下来,转去786432簇,看看是不是 附图: 11
=750) window.open('//Mon_551_5cbaaa83517bf87.png');" onload="if(this.width>'750')this.width='750';" > 通过Go To Sector到786432,与单击$MFT去到的扇区都是一样的。说明定位没错。 接下来看下$MFT吧… $MFT:(Master File Table)文件。主文件列表。此文件是NTFS分区中最重要的文件,记录了分区中所有文件(包括$MFT自身)的基本信息。通过$MFT就可以访问分区中的所有文件和系统数据。$MFT由多个MFT记录单元组成,每一个文件的描述占用一到多个(一个不够的情况下)$MFT记录单元。其中前十二个记录单元中记录着这里的十二个系统文件的信息。每个记录单元记录着文件的建立时间、在分区中的位置、长度、属性、文件名等信息。 MFT中的第一个记录就是$MFT自身,编号为0。每个文件记录占用1KB,即两个扇区。 识别一项MFT的起始很简单,看开头的4个字节是否46 49 4C 45 ,其相应的ASCII码是FILE。现在就看MFT怎样记录其本身$MFT吧。[ 此帖被jizhaozeng在 15:24重新编辑 ]
本帖最近评分记录:霏币:+10(ac-3) 优秀贴,值得学习和借鉴推广。感谢支持硬件版!
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
go on!附图: 12
'750')this.width='750';" title="Click Here To EnLarge"> 同理,MFT的镜像$MFTMirr用同样的方法也可以计算得出和定位,$MFTMirr是对MFT里的重要文件备份,只有4K,即备份了4个文件记录单元而已。 其实说了上面这些,还没涉及到故障的解决,有人会说,明明可以在winhex里选中$MFT就定位了,为何这般复杂,实际上,我此次故障,就是遇到MFT偏移了! 说了前面这么多,只是为NTFS文件系统结构做个很大概的描述,实际上真的很复杂。 在故障处理前,我双击C盘出现了这种情况: 附图: 13
=750) window.open('//Mon_551_5ceb8c1cbdd702f.png');" onload="if(this.width>'750')this.width='750';" > 看来问题跟这个MFT是有些关系了的…进去后,傻眼了,没有其他的文件,只有以下这几个,郁闷。 附图: 14
=750) window.open('//Mon_551_3a0d40c6dc90126.png');" onload="if(this.width>'750')this.width='750';" > 方法一:用前面的方法,从分区引导扇区计算出MFT位置。所以,证明前面说的不算是废话。 方法二:留意提示,看到了offset C0000000 和 offset
字样,那就过去看看吧。 附图: 15
=750) window.open('//Mon_551_f30c890.png');" onload="if(this.width>'750')this.width='750';" > 发现C0000000里,不是一项文件记录的起始,文件记录的其实,一定是“46 49 4C 45”开头的,仔细找下,很明显偏移两行了!!!这就是故障所在。MFT里的第一项文件记录正是MFT本身,而现在本身位置都记录错了,如何定位其余文件呢?所以,此分区下的所有文件不可见!接下来尝试修复了。至于另外一个,其实可以猜测到是$MFTMirr的… -- 其实我曾经想过找相关MFT的修复软件试下,但始终觉得会否因软件“误判”,反而搞乱了。毕竟对于数据修复,一般是“只需一次成功,不许多次失败的”。还是手动吧… && 其实到这里我已经找到了故障所在,和处理方法了,只是即使想手动也有点下不了手…期间在学校某个地方做过一次实验,也是一件坏事…呃,把它的某个分区,用winhex写0了…写0了是什么概念应该猜到吧。不过也自私庆幸幸好不是在自己的硬盘这样操作!这款软件是有一定危险性的。 && 拿修复$MFTMirr举例吧…$MFT的我忘了截图。找到的那个扇区里(可以看到偏移了三行)…选中46 49 4C 45开头的一段数据,多大好呢,我是一直选到非0的末尾,后面全0的就不选了。原因:记录一个文件其实有时候不需要用到1KB的。 附图: 16
=750) window.open('//Mon_551_bc45c.png');" onload="if(this.width>'750')this.width='750';" > 粘贴到正确位置… 附图: 17
=750) window.open('//Mon_551_13f61fe.png');" onload="if(this.width>'750')this.width='750';" > 就这样,手工的找,手工的修复,看到就修复,反正间隔1KB就一个记录…所幸不是很多,10来个而已。 保存退出,重启…以为应该好了,默默的等待一种喜悦。结果启动不了。没办法,只好到另一个硬盘的linux里进去看,久违的那个分区是出现了,可是挂载不了,如图提示: 附图: 18
=750) window.open('//Mon_551_c9555.png');" onload="if(this.width>'750')this.width='750';" > 有点郁闷,现在只好把硬盘挂到室友的XP下去chkdsk下了,懒了,不想再研究了。 结果,在室友那里chkdsk修复后,把硬盘挂回自己电脑,启动,见到了久违的XP和久违的桌面!!!我成功了!!!也许对于牛人来说,这不算什么,但是毕竟对于我,因为是通过自己努力去尝试的,所以,有点成就感吧。 写到这里基本完了...不过仍然有我不明白的地方,文中可能有些表述不当,还请指正下的,比较仅仅一个文件系统,还只是NTFS,都够研究很长时间了。我现在存在的疑问是: 1.为什么有两个分区F和G,是NTFS的,在linux下可以是识别并正常读取里面的文件,但是在windows XP里不行。这是我至今还未解决的疑问。 2.在我用winhex修复并重启后,虽然在XP和linux下读取不了,但是在winhex里是可以看到完整的文件的,并且没有found.000这个文件夹,如果我此时导出文件,相信文件位置不会出现错乱。但是用chkdsk扫描修复后,为什么多出这么多零碎的文件放进found.000里了... &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 希望可以得到论坛里懂的人的帮助!解答一下 -- 此次事件的总结: 1.一开始尝试修复时,重建MBR,重建分区表,都是很傻的做法。当时病急乱投医...当硬盘出现误操作而又想尽力恢复数据时,切忌再往里头写数据,最好是先把硬盘拆下来,再到网上,或相关书本查询。 2.硬盘数据修复,一般是只许一次成功,不许多次失败。所以,在方案的取舍,切忌一个个的试,最好有其他硬件模拟试验。我以前曾经误操作而用一个XP镜像覆盖全盘,后来用移动硬盘试过可以用PTDD重建分区表,做过实验了,也就有大的把握确定成功率。 3.任何事情,只要投入时间,愿意琢磨下,即使不成功,也多少有点回报的。像我在某个网站看到的那句话,说“你要是不会手动16进制写mft,不知道他的规则,计算方式。就别费劲了,你从现在学,学3个月有可能能学会” 看到后确实有点打击,不过其实现在我还没懂多少,至少能取回数据了。大家应该可以看到图片了吧?[ 此帖被jizhaozeng在 15:27重新编辑 ]
本帖最近评分记录:霏币:+30(ac-3) 值得借鉴和学习,感谢支持硬件版!
级别: 资深会员
发帖: 2112
威望: 3034
活跃度: 2117
在线时间: 156(小时)
注册时间: 最后登录:
用QQ空间的图片看不到 还是用论坛附件吧
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
【经验交流】&回 3楼(lucifer591) 的帖子
关键问题是我不能传附件啊!!郁闷,为什么我自己可以看到呢?
级别: 资深会员
发帖: 2161
威望: 3356
霏币: 4500
活跃度: 3723
在线时间: 285(小时)
注册时间: 最后登录:
文章应该是很不错的,只是图片转自qq空间,无法显示
严格要求自己。
软件下载区
级别: 休假专用组
发帖: 8780
威望: 9325
霏币: 80898.7
活跃度: 9230
非凡币: 1397
在线时间: 2721(小时)
注册时间: 最后登录:
【经验交流】&Re:回 3楼(lucifer591) 的帖子
引用引用第4楼jizhaozeng于 08:58发表的 回 3楼(lucifer591) 的帖子 : 关键问题是我不能传附件啊!!郁闷,为什么我自己可以看到呢?
自己的空间自己可以看到 & 呵呵 & 建议更换一下图片存放地 & 这样的好帖子看不到图片多少有些遗憾 &请尽快补齐可以正常显示的图片。&
=700) window.open('//Mon_081_f3089f.jpg');" onload="if(this.width>'700')this.width='700';if(this.height>'256')this.height='256';" >
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
【经验交流】&回 6楼(ac-3) 的帖子
嗯嗯,只好麻烦你来帮我一下了,呵呵
级别: 初级会员
霏币: -1378
活跃度: 106
在线时间: 10(小时)
注册时间: 最后登录:
哈哈,多谢ac-3 帮忙上传图片啊,要不真不知道怎弄呢
严格要求自己。
软件下载区
级别: 休假专用组
发帖: 8780
威望: 9325
霏币: 80898.7
活跃度: 9230
非凡币: 1397
在线时间: 2721(小时)
注册时间: 最后登录:
引用引用第9楼jizhaozeng于 15:28发表的 : 哈哈,多谢ac-3 帮忙上传图片啊,要不真不知道怎弄呢
18张图片显示正常再次感谢支持硬件版
级别: 高级会员
威望: 2590
霏币: 1168
活跃度: 1150
在线时间: 1364(小时)
注册时间: 最后登录:
设定了设定了隐藏,需要回复后才能看到这么老的帖子,但是为了学一下mft修复方法,还是回复一下,看看内容Winhex&手动修复分区表以提取数据续
winhex手动修复分区表(2)
分区表修复进阶——多分区的计算
本帖隐藏的内容需要回复才可以浏览1.& &
一主分区,三逻辑分区情况下的计算
&前面提到过硬盘上的分区结构是链式的,又由于MBR之后的各分区表往往保存完好,就可以利用后面的各分区MBR来逆向推导MBR的参数~请看下面的分区链式图:
<img TITLE="" NAME="image_operate_60085" src="/blog7style/images/common/sg_trans.gif" real_src ="/bmiddle/001mdJJ2gy6PdGeWHlh63&690" SMALL="0"
ALT="Winhex&手动修复分区表以提取数据续" />
&&&&&&在双分区的实例中,填写的参数可表示为:C盘占用扇区+D盘之前的扇区+D盘占用扇区。由于多个逻辑分区的总和算一个扩展分区(不知道什么是扩展分区和逻辑分区的可以看看我前面的那篇文章),于是多分区的参数无非是:C盘占用扇区+扩展分区前的扇区+(逻辑分区D+逻辑分区E+……),总体来讲还是3大块。
&由于分区软件的不同,分区前的保留扇区可能有所不同~比如下图的这块硬盘,采用了diskpart进行分区,分区前的保留扇区达到了2048个而不是常见的63个。
记录C盘占用的扇区数为。由于这是在NTFS模板中查看的信息,所以在做跳转时需要+1,即跳转到9+1=扇区。
由于这是一个“虚拟MBR”,它仍然拥有部分MBR特征,所以我们可以调用“主分区引导模板”来查看这个分区的信息。可以看到这里的分区信息有两项,相对于上一个实例多了一个“05”分区表示标识,不过这个05标识我们先不用管它。直接看第一项的两个参数为160。
接下来跳转至8+7648256扇区(由于这是在“主引导记录”模板里查看的,所以不需要+1),并调用“主引导扇区”模板查看E盘的信息。
记录两个数值为160,注意这个分区仍然有“05”标识。向下跳转到48+5422464扇区。
到这里,分区信息当中只有一项而没有“05”标识,于是可判定这就是整个扩展分区中的最后一个分区。记录其信息200。
如果觉得混乱,不妨列出下面这样一个表:
&&&&&&由上面的数据不难算出扩展分区的总扇区数为:(60)+(60)+(00)=。C盘主分区的参数为:保留分区2048,C盘本身占用,于是扩展分区之前的总分区数为0=。最后需要填写的参数:
&&&&&&注意这个硬盘装有系统,于是第一分区表项填为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个字节的分区参数含义(64字节表示4个分区,故每个分区占用16个字节)
&&&在修复过程中建议利用表格使分区链表变得清晰。
&&&主引导记录模板中的分区不需要加减,从NTFS模板移动至主引导记录
中需要+1。
&&&05标识用于扩展分区内部的逻辑分区的定位。
&&&起始磁盘头等信息现在基本停用。占用扇区数最多为FF
FF,每个扇区占用512个字节,计算下来每个分区最大容量为2047G。如果某日硬盘的分区容量大于这个值,那么分区表的计算方式将改写,比如可能把保留分区的4字节让一个给扇区数,那么单分区的最大容量将变为523776G,我想暂时是够用了……<img src="/blog7style/images/common/sg_trans.gif" real_src ="/uc/myshow/blog/misc/gif/E___6724EN00SIGG.gif" TYPE="face"
ALT="Winhex&手动修复分区表以提取数据续"
TITLE="Winhex&手动修复分区表以提取数据续" />
& & 总结及写在后面
&总体来讲整个恢复过程就是三大步:446字节引导文件、64字节硬盘分区参数、55AA结束标识,其中以64字节的硬盘分区参数最为关键。可以说全文最为精华的部分在于第二章和第三章中那两张扇区和参数的对应关系图,望大家在这两张图上多一些耐心。幸而这些参数通过一点加法运算和现成的模板是非常容易获得的,整个恢复步骤不会超过10分钟,而精确性和安全系数都是非常高的。
&希望本文能帮助新手对分区表有进一步的了解,同时也希望本文能帮助到有一定动手能力的朋友。同时还是要提醒大家,如果可能的话还是保存一份硬盘的MBR,这样但凡遇到主分区表问题的时候也能快速复原。此外,Winhex除了恢复硬盘的分区表之外,也可用于恢复U盘的分区表,只要U盘的分区格式是Fat32的,其恢复过程完全和上面一样。Winhex也可用于格式化之后的数据恢复以及误删文件的恢复,此外还有诸多更加强大的功能,限于篇幅,这里就不一一赘述了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何使用WinHex脚本自动修复NTFS文件系统DBR | 数据恢复实验室 Data Recovery Laboratory
2016年十二月 &(1)
2016年十一月 &(1)
2016年十月 &(1)
2016年九月 &(1)
2016年八月 &(1)
2016年六月 &(1)
2016年五月 &(1)
2016年四月 &(1)
2016年三月 &(8)
2016年一月 &(2)
2015年十二月 &(3)
2015年十一月 &(2)
2015年十月 &(1)
2015年九月 &(1)
2015年八月 &(3)
2015年七月 &(1)
2015年六月 &(2)
2015年五月 &(1)
2015年四月 &(4)
2015年三月 &(5)
2015年二月 &(1)
2015年一月 &(9)
2014年十二月 &(4)
2014年十一月 &(3)
2014年十月 &(3)
2014年九月 &(4)
2014年八月 &(6)
2014年七月 &(6)
2014年六月 &(1)
2014年五月 &(2)
2014年四月 &(3)
2014年三月 &(1)
2014年一月 &(7)
2013年十二月 &(8)
2013年十一月 &(1)
2013年十月 &(9)
2013年九月 &(6)
2013年八月 &(5)
2013年七月 &(8)
2013年六月 &(10)
2013年五月 &(12)
2013年四月 &(1)
2013年三月 &(4)
2013年二月 &(7)
2013年一月 &(6)
2012年十二月 &(3)
2012年十月 &(2)
2012年八月 &(6)
2012年七月 &(8)
2012年六月 &(6)
2012年五月 &(14)
2012年四月 &(17)
2012年三月 &(14)硬盘维修-用Winhex手动修复分区表以提取数据
来源:未知&&&&发表时间:&&&&浏览次数:
一、初步应用&&双分区恢复实例及分析
(一)、现场重现:
  提示,切勿随意使用自己的硬盘进行试验,切记试验前保存重要数据。对于移动硬盘,损坏往往发生于硬盘传输数据中断电。现在我将一个有问题的移动硬盘接到电脑上,在&计算机管理&--&&磁盘工具&中我们可以看到这个未被初始化的磁盘显示为黑色(打开磁盘工具时它会提示你要初始化,不理它,点&取消&) ,在&计算机&中也找不到这个磁盘。
&&&&&& 对于新手,往往是这样几个表情吧其实俺也是这么过来滴~争取这篇文章之后让大家的表情都变成这样
(二)、手动修复:
(阅读有困难的朋友可以先读完第三节再回过头来看这一节,本节的另一个作用是让新手对Winhex界面有一个初步了解)
1、打开Winhex--&菜单栏--&选择&工具&--&打开磁盘(F9)--&选择要修复的硬盘,这里是HD2。
2、打开之后图中显示从0000H--&01ffH(16进制)之间的数据全部为0。
&&&&&&&现在我从一个运转良好的硬盘分区表中将0000H--&01bdH之间的数据复制并粘贴到损坏硬盘的相应位置。
&&&&&&&操作步骤为:在良好硬盘中拉选0000--&01bd之间的区块,被选中区块呈亮蓝色; 复制选块;
  接下来在损坏硬盘中拉选相应区域,将光标定位至0000;右键--&编辑--&粘贴板数据--&写入。将01fe,01ff填写为55AA,到这里一定保存。
&&&&& 点击黄色区域的图标并转移至63号扇区 菜单&视图&--&模板管理(Alt+F12)--&NTFS引导扇区&&。
&&&&& 打开如下图 ,并记录黄色方框内的两个数值(63和)
&&&&& 63+=,跳转至扇区 。
  稍微向下滚动一点,看到那个粉色框标识出的55AA了嘛?往前找到黄色框内的部分,显示为3F 00 00 00,将其进行反向排列,变为 00 00 00 3F于是3F(十六进制)=63(十进制)&&我们称这个数为相对偏移量。
  接下来跳转至=扇区,我们又发现了一个EB开头的扇区
  再次选择菜单&视图&--&模板管理(Alt+F12)--&主引导记录NTFS引导扇区。打开如下图 ,同样记录一下黄色方框中的数值(63和)。
&&&&&& 跳转至0扇区。菜单&视图&--&模板管理(Alt+F12)--&主引导记录,打开如下图。
&&&&& 填上如图所示的几个数据
&&&&& 至于为什么是这些数据,下节会提到。填写完之后千万别忘了保存哦~好了,在设备管理器里禁用损坏硬盘再启用。再从磁盘管理里看看结果 ,嗯,一切复原看,数据都在。
  过程看上去有些复杂,其实熟练的话可以控制在5分钟之内,所以它并不难~下面就看看我做了些什么,以及那些数据是怎么来的,做什么用的。
(三)、我做了什么?其实只有3步
  上面所做的其实就是修复了硬盘的MBR(主引导分区记录),为什么MBR对于硬盘如此重要呢?看过我前面文章的朋友应该知道分区表就是硬盘的名单:作为一个名单当然不是姓名的简单堆砌,名单也是有分类的,比如哪些人是管理员,哪些人是学生等等~请先看一下刚才修复好的硬盘的MBR全图 (注意其中用亮蓝色、黄色、绿色将512字节的分区表分为了三个部分)
硬盘的MBR在启动时大约是起到下面的一个作用:
  可见作为一个MBR,必须要有以下的三个部分:446字节的启动描述;64字节的分区描述(包括分区格式、分区大小等参数);以及最后的55AA结束表示。于是,只要我们能按照一定格式和规律填写这些项目,我们就能自己制作分区表了。对于恢复分区表,我们要做的就是下面的流程:
  不难发现,这其中前面的446字节的引导文件和最后添加的&55AA&标识都是ctrl+c然后ctrl+v 的事情,因此修复分区表的关键在于那64个字节的参数是如何寻找及填写的&&好在我们利用Winhex自身提供的模板,再加上一点简单的加法运算,就能非常轻松地获得这些参数。如下图,其实需要填写的参数不过8个,而且都非常有规律性:(该图很重要,它显示了那些参数是如何得来的)
  上文的(3)(4
)两步正是我在计算参数所在的位置,而一旦我定位准确,就调用对应的模板去查看参数,随后在(5)里填写参数(别忘了NTFS+1的问题)
  至于第一行活动分区:80表示可以从这个分区启动,00表示不从这个分区启动(这个参数决定电脑能否从该分区引导,和446字节不同,如果没有那个446字节,硬盘都无法识别了)。一般装有系统的主分区需要填写80,其他的00即可。而硬盘参数这一栏:Fat32的代码是0B,NTFS是07,扩展分区是0F~~这些边边角角都很简单,这里就不多说了~至此,分区表修复工作大功告成~~
(四)、小结
  恢复原理:硬盘上的文件是链式的,可以顺藤摸瓜。此外,硬盘损坏的往往是MBR,后面各分区的虚拟MBR都完好无损,可以通过计算后面各分区的参数,逆向推出MBR的参数,从而实现硬盘的修复。
  大致步骤:填写446字节引导文件--&填写64字节分区参数--&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盘占用的扇区数为。由于这是在NTFS模板中查看的信息,所以在做跳转时需要+1,即跳转到9+1=扇区。
  由于这是一个&虚拟MBR&,它仍然拥有部分MBR特征,所以我们可以调用&主分区引导模板&来查看这个分区的信息。可以看到这里的分区信息有两项,相对于上一个实例多了一个&05&分区表示标识,不过这个05标识我们先不用管它。直接看第一项的两个参数为160。
  接下来跳转至8+7648256扇区(由于这是在&主引导记录&模板里查看的,所以不需要+1),并调用&主引导扇区&模板查看E盘的信息。
  记录两个数值为160,注意这个分区仍然有&05&标识。向下跳转到48+5422464扇区。
  到这里,分区信息当中只有一项而没有&05&标识,于是可判定这就是整个扩展分区中的最后一个分区。记录其信息200。
  如果觉得混乱,不妨列出下面这样一个表:
  由上面的数据不难算出扩展分区的总扇区数为:(60)+(60)+(00)=。C盘主分区的参数为:保留分区2048,C盘本身占用,于是扩展分区之前的总分区数为0=。最后需要填写的参数:
  注意这个硬盘装有系统,于是第一分区表项填为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个字节的分区参数含义(64字节表示4个分区,故每个分区占用16个字节)
(三)、小结
  在修复过程中建议利用表格使分区链表变得清晰。
  主引导记录 模板中的分区不需要加减,从NTFS模板移动至 主引导记录 中需要+1。
  05标识用于扩展分区内部的逻辑分区的定位。
  &起始磁盘头等信息现在基本停用。占用扇区数最多为FF FF FF FF,每个扇区占用512个字节,计算下来每个分区最大容量为2047G。如果某日硬盘的分区容量大于这个值,那么分区表的计算方式将改写,比如可能把保留分区的4字节让一个给扇区数,那么单分区的最大容量将变为523776G,我想暂时是够用了&&三.& & & & 总结及写在后面
  总体来讲整个恢复过程就是三大步:446字节引导文件、64字节硬盘分区参数、55AA结束标识,其中以64字节的硬盘分区参数最为关键。可以说全文最为精华的部分在于第二章和第三章中那两张扇区和参数的对应关系图,望大家在这两张图上多一些耐心。幸而这些参数通过一点加法运算和现成的模板是非常容易获得的,整个恢复步骤不会超过10分钟,而精确性和安全系数都是非常高的。
  希望本文能帮助新手对分区表有进一步的了解,同时也希望本文能帮助到有一定动手能力的朋友。同时还是要提醒大家,如果可能的话还是保存一份硬盘的MBR,这样但凡遇到主分区表问题的时候也能快速复原。此外,Winhex除了恢复硬盘的分区表之外,也可用于恢复U盘的分区表,只要U盘的分区格式是Fat32的,其恢复过程完全和上面一样。Winhex也可用于格式化之后的数据恢复以及误删文件的恢复,此外还有诸多更加强大的功能,限于篇幅,这里就不一一赘述了。
迅维电脑维修培训官方微信
AM 09:00~PM 06:00
地址:广东省深圳市宝安区福永街道办新塘工业园10号(福永汽车站正对面)
粤ICP备号-3
Copyright (C)
迅维电脑维修培训

我要回帖

更多关于 winhex查看分区表 的文章

 

随机推荐