情景再現:可能在某一天,打開電腦時發現只剩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
,保存
在磁盤管理里右鍵 -> 重新掃描磁盤我們的分區就恢復了出來