情景再现:可能在某一天,打开电脑时发现只剩C盘,剩下的盘找不到了,那么要如何恢复呢?

创建虚拟硬盘方便我们做实验

右键计算机 -> 管理 -> 磁盘管理右键 -> 创建VHD虚拟硬盘



创建VHD虚拟硬盘会弹出下面的窗口

首先点击预览选择创建虚拟硬盘位置,然后创建虚拟硬盘的大小,这里我是15G,选择虚拟硬盘格式为VHD,最后虚拟硬盘的类型为动态扩展

固定大小:创建时间可能会比较慢,因为真的会占用磁盘的15个G的大小

动态扩展:创建时很快,并不会占用15个G的大小,随着我们用了多少占用多少,最大只能占用15个G



输入正确后确定创建虚拟硬盘



并没有初始化虚拟硬盘,右键 -> 初始化磁盘,弹出初始化磁盘窗口,选择MBR(主启动记录)

创建分区

右键未分配区域 -> 新建简单卷 -> 下一步



到这里是会让我们输入创建分区所占用的大小,这里我创建的是一个3000MB大小的磁盘



后面下一步,为选择我们的分区的驱动号,就是C盘,D盘什么的,这里创建的分区为H盘



下一步,格式化分区,选择文件系统为NTFS



最后完成即可



完成后会出现我们新建的H分区



这个H分区是可以正常使用打开的,我们可以打开我的电脑查看是否出现了一个新的分区



确实出现了一个新的H盘。

简单认识WinHex

我们先打开WinHex

找到这里的打开磁盘



选择我们创建的虚拟硬盘



打开我们虚拟硬盘为下图,可能不同版本显示的不一样,这里仅供参考



找到0扇区的最后,发现结尾是以55AA结束

0扇区是MBR引导扇区,记录着各个分区的位置;准确来说,记录着主分区和扩展分区的位置



那么主分区是什么?我们刚刚创建的分区就是主分区

蓝色的位主分区,黑色的未分配

恢复一个分区

在删除前,我们先到winhex观察0扇区MBR,倒数四行的数据



现在我们手动把我们创建的H盘删除





返回Winhex再次打开虚拟磁盘观察0扇区数据





我们在删除H盘的时候,Winhex倒数四行总第一行的数据也没有了,那么就是这一行就的数据就控制着我们的H盘

简单原理:计算机并不知道到该怎么找到我们的分区,通过MBR的固定格式来读取,把分区一个一个读取出来

这里我们MBR没有数据了,当然找不到我们的分区了

那么我们删除了,其实并没有删除,只是吧MBR的引导删除了,可以在找回来

MBR重要字节

刚刚我们说道计算机通过固定格式来读取硬盘,那么固定格式到底是什么呢?

在MBR中,由于55AA占用了两个字节,除了55AA往上数4行,这4行控制着我们所有分区的位置



那么这4行这么控制的呢

1C3-1C5控制分区一磁盘的类型

磁盘类型就是我们创建的NTFS

NTFS的16进制数据应该是07 00 00 00



1C6-1C9控制分区一的开始位置

1CA-1CD控制分区一的大小

那么我们并不知道到分区一的开始位置时哪里,还有分区一的大小为多少

通过刚刚我们的MBR扇区得知,引导扇区的结束是55AA

那么往下搜索磁盘结束为55AA的就能找到我们磁盘一的引导扇区

找到16进制查找器



搜索55AA,向下搜索,条件偏移为512=510扇区最后两个字节,忘记说明,我们一个扇区是512个字节

注意:在搜索的时候我们要在1扇区往下搜索,因为0扇区的最后为55AA,会搜索到0扇区的55AA



查找后跳转到了2048扇区,可能我们不太确定可以看到上方的目录结果,2048确实就是我们第一个分区的引导扇区

NTFS引导扇区重要字节

打开数据解释器



1C-1F NTFS引导扇区的开始

1C-1F为4个字节,一个字节8bit,所以4个字节就是32bit,我们查看32bit值为2048,这就是NTFS引导扇区,也可以说第一个分区的开始位置



使用一个记事本把它记录下来



28-2B NTFS扇区的大小

28-2B为4个字节,所以看32bit,值为6,143,999,使用记事本记录下来





现在我们得到了分区一的开始和大小,现在只需要在MBR 0扇区的重要字节填上就我们的H盘就恢复了

回到0扇区填数

ctrl + g,打开跳转扇区,输入0跳转到0扇区



在1C2-1C5,点击1C2,在16进制输入07即可,07代表我们是NTFS盘

在1C6-1C9,点击1C6,在数据解释器32bit填入我们找到的分区一的开始2048,回车即可



在1CA-1CD,点击1CA,子数据解释器32bit填入我们找到的分区一的大小6,143,999,回车即可



输入后ctrl + s,保存



在磁盘管理里右键 -> 重新扫描磁盘我们的分区就恢复了出来



WinHex恢复分区的更多相关文章

  1. 如何清除Windows10中的恢复分区

    在Windows搜索框中键入Cmd.出现结果列表. 右键单击命令提示符并选择以管理员身份运行. 在命令提示符下键入diskpart,然后按Enter键. 输入list disk并按Enter键. 出现 ...

  2. Windows恢复分区管控命令reagentc

    reagentc命令可以实现Windows恢复分区的开关,创建.删除,状态查看. 可以只管确定当前系统恢复分区所在位置,便于删除多余的恢复分区.

  3. 回收Windows 10恢复分区之后的磁盘空间

    我电脑上安装了Windows 10和Linux双系统,现在将Linux删除之后,准备将其磁盘空间并入到Windows 10的C盘中,但是发现C盘跟Linux空间之间还隔了一个Windows的恢复分区, ...

  4. 如何让阿三 Windows 10、11 的恢复分区(Recovery Partition)恢复到 “盖茨” 模式

    如何将 Windows Server 2022 的恢复分区(Recovery Partition)移动到 C 盘之前,恢复 C 盘容量调整功能. 请访问原文链接:https://sysin.org/b ...

  5. windows10磁盘分区后,如何恢复分区,回到未分区之前

    windows10磁盘分区后,恢复到分区以前的状态 1.我的电脑右键======>管理 2.找到磁盘管理 3.因为我的H盘原来是和F盘是同一个分区,只是拆分出来了,所有,找到H盘(确保数据都做过 ...

  6. 再生龙恢复分区后修复引导或debian linux修复引导 三部曲

    先参考 sudo -imkdir /mntmount /dev/sda1 /mntgrub-install --force --no-floppy --root-directory=/mnt /dev ...

  7. 用Partimage创建或恢复分区备份

    1 Preliminary Note Partimage is part of the system rescue CD found on http://www.sysresccd.org which ...

  8. 分区恢复和NTFS文件恢复试验

    一.实验室名称:主楼实验室A2-412                  二.实验项目名称:分区恢复和NTFS文件恢复试验 三.实验学时:6学时 四.实验原理: 借助fdisk.diskgen软件对磁 ...

  9. Nubia Z5S(高通公司MSM8974) QHSUSB_BULK砖的方法节省模式(随着win7在恢复recovery分区案例)

    Nubia Z5S在某些异常情况或按组合键进入QHSUSB_BULK状态, 这种模式的现象, 猜想windows(实例win7)即使在数据线, 它会出现在计算机n载,甚至会提示要格式化某些分区(这里要 ...

  10. 原创 齐天大圣老司机亲传rescue恢复磁盘分区

    老葵花哥哥课堂开课了本文档秉承爱看不看的原则 一不要钱 二服务大众的高尚情操咱们今天讲一讲rescue恢复磁盘分区 首先咱们搭建环境搞起来 (parted) mkpart #创建分区 Partitio ...

随机推荐

  1. C++ 手动实现双向链表(作业版)

    双向链表,并实现增删查改等功能 首先定义节点类,类成员包含当前节点的值, 指向下一个节点的指针和指向上一个节点的指针 //节点定义 template <typename T> class ...

  2. Elasticsearch Windows版安装配置

    Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎,大概含义就是你通过Rest请求告诉它关键字,他给你返回对应的内容,就这么简单. Elasticsearch封装了L ...

  3. Drone自动部署配置文件

    .drone.yml 点击查看代码 kind: pipeline # 定义对象类型,还有secret和signature两种类型 type: docker # 定义流水线类型,还有kubernetes ...

  4. 转—记录一下获取NC程序名称的方法

    案例源代码如下: #include <uf_obj.h> #include <uf_setup.h> #include <uf_ncgroup.h> static ...

  5. 1.1 安装gin框架&使用gin编写简单服务端

    01.安装gin框架 1)go环境配制 a)配制环境变量 GOPATH修改为go的工作文件夹路径 D:\Golang\goproject GOROOT修改为go的安装路径 D:\Golang\go1. ...

  6. FastReport和RDLC报表

    最近在做报表的时候第一次接触到RDLC报表,对比于之前使用的FastReport报表来说,在使用体验上个人目前感觉RDLC灵活性相对较差,尤其是表格的格式多样的时候,不易修改.RDLC应用于格式简单的 ...

  7. go结构体打印格式化成json

    需要用到json.MarshalIndent 方法 官方的注释是: MarshalIndent类似于Marshal,但应用Indent来格式化输出. 输出中的每个JSON元素都将以一个新行开始,该新行 ...

  8. mysql重新设置列的自增初始值

    alter table xxx auto_increment = 100; 因为设置了列的自增之后,若删除过一些行,下次再新增时还会从已删除的id算起自增,为了让数据看起来连续,可以重新设置自增起始值 ...

  9. C#找出可用TCP端口,仅两行代码就搞定

    var start = 2222; var ps = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners().Select ...

  10. 英国延长 UKCA 标记截止日期

    政府于 2022 年 11 月 14 日宣布,企业将有 2 年的时间来应用新的 UKCA 产品标记.在 2024 年 12 月 31 日之前,企业可以选择使用 UKCA 或 CE 标志,之后企业只能使 ...