WINHEX 使用教程


Winhex有完善的分區管理功能和文件管理功能,能自動分析分區鏈和文件簇鏈,能對硬盤進行不同方式不同程度的備份,甚至克隆整個硬盤;它能夠編 輯任何一種文件類型的二進制內容(用十六進制顯示)其磁盤編輯器可以編輯物理磁盤或邏輯磁盤的任意扇區,是手工恢復數據的首選工具軟件。

首先要安裝Winhex,安裝完了就可以啟動winhex了,啟動后,首先出現的是啟動中心對話框。
這里我們要對磁盤進行操作,就選擇“打開磁盤”,出現“編輯磁盤”對話框:
在這個對話框里,我們可以選擇對單個分區打開,也可以對整個硬盤打開,HD0是我現在正用的西部數據40G系統盤,HD1是我們要分析的硬盤,邁拓2G。這里我們就選擇打開HD1整個硬盤,再點確定.然后我們就看到了Winhex的整個工作界面。
最上面的是菜單欄和工具欄,下面最大的窗口是工作區,現在看到的是硬盤的第一個扇區的內容,以十六進制進行顯示,並在右邊顯示相應的ASCII碼,右邊是 詳細資源面板,分為五個部分:狀態、容量、當前位置、窗口情況和剪貼板情況。這些情況對把握整個硬盤的情況非常有幫助。另外,在其上單擊鼠標右鍵,可以將 詳細資源面板與窗口對換位置,或關閉資源面板。(如果關閉了資源面板可以通過“察看”菜單——“顯示”命令——“詳細資源面板”來打開)。
最下面一欄是非常有用的輔助信息,如當前扇區/總扇區數目……等
向下拉拉滾動條,可以看到一個灰色的橫杠,每到一個橫杠為一個扇區,一個扇區共512字節,每兩個數字為一個字節,比如00。
下面我們來分析一下MBR,因為前面我們說過,前446個字節為引導代碼,對我們來說沒有意義,這里我們只分析分區表中的64個字節。
分區表64個字節,一共可以描述4個分區表項,每一個分區表項可以描述一個主分區或一個擴展分區(比如上面的分區表,第一個分區表項描述主分區C盤,第二個分區表項描述擴展分區,第三第四個分區表項填零未用)
每一個分區表項各占16個字節,各字節含義如下:(H表示16進制)
字節位置 內容及含義
第1字節 引導標志。若值為80H表示活動分區;若值為00H表示非活動分區。
第2、3、4字節 本分區的起始磁頭號、扇區號、柱面號
第5字節 分區類型符:
00H——表示該分區未用
06H——FAT16基本分區
0BH——FAT32基本分區
05H——擴展分區
07H——NTFS分區
0FH——(LBA模式)擴展分區
83H—— Linux分區
第6、7、8字節 本分區的結束磁頭號、扇區號、柱面號
第9、10、11、12字節 本分區之前已用了的扇區數
第13、14、15、16字節 本分區的總扇區數
此硬盤的第一分區表(即MBR)分析如下:
第一個分區表項(C盤)
第1字節80:表示此分區為活動分區;
第5字節0B:表示分區類型為Fat32;
第9、10、11、12字節 系統隱含扇區3F 00 00 00:所謂系統隱含扇區就是本分區(C盤)之前已用了的扇區數,這是一個十六進制數,但要注意:真正的隱含扇區數應該反過來填寫(比如:隱含扇區數為3E 4D 5A 6F,則反過來就是6F 5A 4D 3E ,這才是實際的隱含扇區數)。那么,3F 00 00 00反過來寫就是00 00 003F,也就是3F,將他轉成十進制數我們才能知道實際的隱含扇區數是多大。這可以使用計算器來算,單擊工具欄上的“計算器”按鈕,如下圖:
這樣就啟動了計算器
計算器有兩種型號,我們要進行進制轉換,就要選擇“科學型”
比如我們要將十六進制3F轉換為十進制,就要先選中“十六進制”,然后輸入3F
再選中“十進制”,十六進制3F轉為十進制等於63。想一想我們前面所講的,MBR占用63個扇區,也就是C盤之前已用了的扇區數為63,第64個扇區就是C盤的第一個扇區,但要注意的是,整個硬盤的LBA地址是從零開始的,0~62的扇區為MBR。
第13、14、15、16字節本分區總扇區數(當然,這也就是C盤的大小):C1 E6 15 00,同樣,實際的十六進制數也要反過來才對,也就是00 15 E6 C1,將它轉換成十六進制數是1435329。給你出個題,你知道D盤的EBR在哪個扇區嗎?我們一起來算一下,還記得前面數據結構那個表嗎?C盤后面不 就是D盤的EBR嗎?D盤EBR的第一個扇區=MBR+C盤的大小,也就是 63+1435329=1435392。
我們來看看對不對,單擊工具欄上的“轉到扇區”按鈕,出現一個“轉到扇區”對話框
然后輸入1435392,再點“確定”,就到了1435392扇區了(你可以使用它再轉回到0扇區)
這個就是D盤的EBR,也就是D盤的分區表了,怎么知道的呢?因為MBR和EBR的結構是完全一樣的,都是占用了63個扇區,但只用了第一個扇區,其余 62個扇區填零不用。第一個扇區前446個字節都為引導代碼,后64個字節為分區表,最后2個字節為55AA結束標志。因為EBR不是活動分區,不需要引 導代碼,所以前446個字節為零。
還有另一種方法直接找到D盤的EBR,單擊“訪問”下拉按鈕——“分區二”——“分區表”,直接就到1435392扇區.
這樣,分區表中的第一個分區表項共十六個字節分析完畢,下面我們再來看看第二個分區表項(擴展分區)。
第1字節00:表示非活動分區
第5字節05:表示擴展分區
第9、10、11、12字節00 E7 15 00:本分區之前的扇區數(擴展分區前面也就是MBR和C盤,好像我們前面算過這個數?)同樣,先將它反過來,就是00 15 E7 00 ,再轉為十進制是1435392,看來我們前面真的算過這個數。
第13、14、15、16字節40 09 29 00:本分區的總扇區數。也就是擴展分區的總扇區數。轉為十進制應該是2689344。想一想,用這個數加上前面的1435392,不正好是整個硬盤的總扇區數4124736嗎?
這樣,如果分區表被破壞,我們只要把這些數值都計算出來並填上,分區表不就恢復了?那么,這里我們為什么不分析第2、3、4字節(本分區的起始磁頭號、扇 區號、柱面號)和第6、7、8字節(本分區的結束磁頭號、扇區號、柱面號)呢?這是因為C/H/S(柱面/磁頭/扇區)是老式硬盤的尋址方式,這種尋址方 式來管理硬盤效率很低;而現在幾乎所有的硬盤都支持LBA(全稱是Logic Block Address,即扇區的邏輯塊地址)尋址方式,這種管理方式簡單高效。在LBA方式下,系統把所有的物理扇區都統一編號,按照從零到某個最大值排列,這 樣只用一個序數就確定了一個唯一的物理扇區。
小知識:具體一個硬盤有多少個LBA(扇區)不需要我們去記憶,因為用各種工具軟件(如MHDD WINHEX等)都可以檢測到。我們只要知道個大概就行了:如10G的硬盤大概有2000萬個扇區;20G的硬盤大概有4000萬個扇區;40G的硬盤大 概有8000萬個扇區……那么,2G的硬盤大概有400萬個扇區。
那么,你可能要問了:如果要恢復分區表,這個起始磁頭號、扇區號、柱面號還有結束磁頭號、扇區號、柱面號應該怎么填呢?簡單得很,在后面恢復分區表的時候我會告訴你,直接填,都不用計算。
還有興趣來分析一下D盤的EBR嗎?
其實D盤的EBR和E盤的EBR我們不分析也罷,因為無非也是分區表,跟MBR的結構是一樣的,但卻很容易把我們繞暈,又因為EBR一般不容易被破壞,所以我不建議分析EBR。
但如果你一定要分析,那就分析吧。
單擊“訪問”下拉按鈕——“分區二”——“分區表”,直接就到1435392扇區,即D盤的分區表EBR。
第一個分區表項(D盤):
第1個字節00:表示非活動分區
第5個字節06:表示FAT16分區
第9、10、11、12字節3F 00 00 00:本分區之前已用了的扇區數,也就是EBR的數目,63個。
第13、14、15、16字節C1 E6 15 00:本分區的總扇區數,也就是D盤的扇區數,先反過來排列就是00 15 E6 C1,轉為十進制就是1435329。
第二個分區表項(D盤后面的):
第1個字節00:表示非活動分區
第5個字節05:表示擴展分區
第9、10、11、12字節00 E7 15 00:本分區之前已用了的扇區數,也就是D盤的EBR加D盤總共的大小, 63+1435329=1435392
第13、14、15、16字節40 22 13 00:本分區的總扇區數,1253952,也就是E盤的大小再加上一個EBR的數目。
單擊“訪問”下拉按鈕——“分區三”——“分區表”,直接就到2870784扇區,即E
盤的分區表EBR。因為E盤后面沒有分區了,所以沒有第二個分區表項。這里我們就不再研究了,有興趣的話可以自己多備一塊硬盤作從盤,然后自己分分區研究研究。
通過以上的研究我們總結一下,MBR在定義分區的時候,將多余的容量定義為擴展分區,指定該擴展分區的起止位置,根據起始位置指向硬盤的某一個扇區,作為 下一個分區表項,接着在該扇區繼續定義分區,如果只有一個分區,就定義該分區,然后結束;如果不止一個分區,就定義一個基本分區和一個擴展分區,擴展分區 再指向下一個分區描述扇區,在該分區上按照上述原則繼續定義分區,直至分區定義結束。這些用來描述分區的扇區形成一個“分區鏈”,通過這個分區鏈,就可以 描述所有的分區。系統在啟動時按照分區鏈的連接順序查找分區,直至找出所有分區。這個鏈顯然是個開鏈結構,如果形成一個環,系統本身並不會去判斷它,它只 是按照這個鏈忠實的查找分區,而不進行任何額外的檢測與處理。所謂硬盤邏輯鎖,就是讓分區鏈形成一個環,這樣系統在啟動時就在分區表內循環,表現為系統無 法引導,就是從軟盤啟動,也不能進入硬盤。明白了其結構原理,解決這個問題就簡單了,目前有很多種方法解決這個問題,后面我們還會講到。系統就是利用這種 方法使一個硬盤分區后看起來象多個硬盤。系統能夠找到C盤以外的其他邏輯盤的唯一辦法就是,沿着EBR所描述的分區鏈查找分區。
其實,通常情況下EBR是不會被破壞的,或者破壞的幾率極低極低,通常情況下,都是只有MBR被破壞,那么這種情況下,我們只要把MBR的分區表64個字 節復原,其他的分區順着分區表所提供的鏈自然而然就出來了。那么,如何才能將分區表復原呢?這就要通過計算結合Winhex強大的功能來實現了。
下面我們就來模仿分區表被病毒破壞的情況,將MBR全部填零。我們首先將MBR所在的扇區選中。鼠標指向第一個字節,單擊右鍵,選擇“選塊開始”
然后鼠標指向MBR的最后一個字節,單擊右鍵,選擇“選塊結尾”
然后我們在選區內部單擊鼠標右鍵,選擇“編輯”
這樣就有出來一個菜單
然后我們選“填充選塊”,這樣就出來一個填充選塊對話框
在“用十六進制填充”的輸入框中輸入“00”,再點“確定”
這樣MBR所在扇區全部被我們填充為“00”
如果想取消選區,那就用鼠標拖動隨便選中一塊區域,那么原來的選區就會取消。注意,如果扇區數據被修改了而沒有存盤就會變為別的顏色。
修改了扇區,這時候還沒有存盤生效,如果你想存盤生效的話,就選擇“文件”菜單“保存扇區”命令。
這時候就會出現一個提示,如果你不想存盤了就點取消,如果想存盤,就點確定,再點是。
好,這樣就存盤了,扇區被修改的數據又變為黑色。
這樣我們就把分區表給刪除了,這時候必須重新啟動才能生效,如果你打開我的電腦,會發現三個分區(F 、G、 H)還在那里,並且里面的數據還能正常使用。
現在,我們關閉所有程序將電腦重新啟動……
經過不長時間的等待,電腦啟動起來了,我們打開我的電腦看看,發現F 、G 、H三個分區不見了。
再打開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)全部都回來了,至此,手工恢復分區表順利完成。
手工恢復數據恢復成功率比較高,而且比較有趣味和挑戰性,能找回許多傻瓜似的軟件所找不回來的文件,但是要求工程師一定要有耐性,而且一定要保持清醒,清 楚自己正在操作什么,操作完了會有什么后果,能不能退回到上一步狀態。特別是對一些破壞性操作,一定要考慮周到,只要條件允許,就一定要在操作之前進行備 份,否則會造成“血”的教訓,切記!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM