情景再现:可能在某一天,打开电脑时发现只剩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. Vue3.0 里为什么要用 Proxy API 替代 defineProperty API?

    响应式优化. a. defineProperty API 的局限性最大原因是它只能针对单例属性做监听. Vue2.x 中的响应式实现正是基于 defineProperty 中的 descriptor, ...

  2. t:datagrid 行编辑 类型备份

    如编辑文本类型: <t:dgCol extendParams="editor:'text'" /> 如编辑数值类型: <t:dgCol extendParams= ...

  3. CSS中z-index的属性与使用

    z-index 属性指定一个元素的堆叠顺序. 拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. Z-index 仅能在定位元素上奏效,z-index 进行定位元素(position:abso ...

  4. git 代码托管常用代码

    一.git全局账号登录 (1)全局登录账号和密码 git config --global user.name "xxx" git config --global user.emai ...

  5. 学习笔记||Vue踩过的坑3.0

    11.VUE之const,var,let VUE-var 用var命令声明的变量,是在全局范围内有效的 VUE-let let声明的变量,只是在当前循环的代码块中有效. let不允许在相同的作用域内重 ...

  6. 24 Django模块的导入--常用总结

    常用模块导入 1 forms # forms组件的使用 from django import forms 2 ValidationError # modelform报错时使用 from django. ...

  7. python 判断一个字符串中是否存在另一个字串中的元素

    如 判断str是否包含str_list中的元素 str = "this is string example....wow!!!" str_list = ['aa','bb','st ...

  8. css 伪类实现渐变线条

    如下图所示: 需要实现渐变的小竖线或者小横线 可以用伪类, 代码如下: div { position: relative; z-index: 2; &::after{ content: ''; ...

  9. Oracle存储过程 Call使用

    在 Oracle 中,可以将存储过程(PROCEDURE)定义在一个包(PACKAGE)中. 要调用包中的存储过程,需要使用包名和存储过程名来引用它们.以下是一个示例: 假设我们有一个名为 my_pa ...

  10. quartus报错 Error (10054): Verilog HDL File I/O error at sdram_ctrl_tb.v(6): can't open Verilog Design File "Sdram_params.h"

    解决方法:包含完整路径. 比如我一开始是:`include "Sdram_params.h" 错误(改为:`include "F:\FPGA\exce\uart2sdra ...