zoukankan      html  css  js  c++  java
  • WinHex手动恢复分区表及误删除文件

    WinHex是一个专门用来对付各种日常紧急情况的小工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的 16 进制编辑器。得到 ZDNetSoftwareLibrary 五星级最高评价,拥有强大的系统效用。

    首先说说恢复文件,打开程序菜单——“工具”——“打开磁盘”,可选择要恢复文件的磁盘,点击打开,在上半部分可以浏览到所有磁盘文件,找到要恢复的文件,右击选择“恢复”,设定好恢复位置即可。(注:用于删除文件后没有写入新数据情况)。
    其次,我们说下恢复分区信息,本例中是挂接了两块硬盘。
    打开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)全部都回来了,至此,手工恢复分区表顺利完成。
    手工恢复数据恢复成功率比较高,而且比较有趣味和挑战性,能找回许多傻瓜似的软件所找不回来的文件,但是要求工程师一定要有耐性,而且一定要保持清醒,清楚自己正在操作什么,操作完了会有什么后果,能不能退回到上一步状态。特别是对一些破坏性操作,一定要考虑周到,只要条件允许,就一定要在操作之前进行备份,否则会造成“血”的教训,切记!
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Python位运算符
  • 原文地址:https://www.cnblogs.com/CosyAndStone/p/3254232.html
Copyright © 2011-2022 走看看