日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

接上一章winhex数据恢复新手入门教程

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 接上一章winhex数据恢复新手入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第5章《起始簇號的計算方法》

就算起始簇號有兩種方法,1是公式計算,2是組合數值。

第一個公式:起始簇號等于低16位的數值+(高16位的數值*65536)

注意:當高16位為0的時候,那么只需要看低16位的數值

位置:高16位在左,低16位在右。

  • 讓數據區先轉到根目錄
  • 在高低位中找到的是起始起始簇號而不是扇區,扇區要利用算出的簇號轉化,在跳至扇區中轉成扇區。
  • 在數據存儲中數值是相反的-----例如:00 00 05 09?00 ??00 00 05 0E?00 提取出來就是09 05 0E 05
  • 第二個組合數值

  • 把提取出來的數輸入到計算機十六進制里面轉換成十進制,然后再把轉換好的數值復制到跳至扇區中簇的框中在扇區框中的數值就是文件的數據扇區。
  • 手工提取數據字符串,點擊要復制數值的第一位按住ALT+1鍵選中,然后再單擊數值末尾字符按ALT+2選中再單擊右鍵編輯-復制選塊-至新文件,然后文件名和擴展名一定要與提取前的數據一樣。
  • 注意:手工提取的數據沒有擴展名。

    注:提取的數據是在扇區中提取的不是在根目錄中提取的。

    第6章《利用FAT表找出目錄的下個簇》

    • 當第一個目錄里的文件比較多時,一個簇存不下所有文件,就會增加一個簇來存放文件。但這兩個簇往往不是連續的,就需要FAT表來定位目錄的下個簇是第幾號簇。
    • 打開字符轉換器,然后把漢字輸入到里面,把它的ANSI碼復制到查找十六進制里面去找
    • 一切開始都是從2號簇開始找,把光標放到2號簇的第一位記錄它的32bit數值,然后在跳至扇區中把數值輸入到簇的框中搜索,搜索到的就是根目錄的下一個簇。找到下一個簇后就跳至扇區看能否搜索到要找的數據,如果能那么就提取出來如果不能就繼續找下個簇。

    例如:找到的是3號簇,那么就看32bit,如果32bit是3614,那么就跳至扇區去查找十六進制。看能否一至兩秒能否找到,如不能就繼續找下一個簇。

    注意:如果還要找下一個簇一定要回到FAT1里面來找也就是一定要回到原始位置,光標也一定要放到第一位的數值上。這里是開始第二個簇的查找,第一個不用這樣,第一個是光標放在2號簇的第一個數值上,不要混淆了。

    注意:每找到一個簇就要跳至扇區去開一下能否搜索到。

    • 如果要找下一個簇那么把(原來的32bit的數值*4),然后再把計算出的結果放到(轉到偏移量)中的新位置框中,相對于哪里選擇當前位置也就是光標所放的位置。

    位置:選項下面第一個

    注意:通常我們用的都是十進制,如果一開始用的是十六進制那么一直都要用十六進制查找、搜索等,要不然找出來的是錯的。

    這樣以此類推直到找到為止

    以上轉到偏移量都是十進制

    第七章《長文件名目錄項》

    • 當文件名超過8個字節時,就需要用長文件名目錄項來存儲文件名。
    • 長文件名目錄項的0B位置標志一定是0F。
    • 長文件名目錄項使用Unicode編碼存儲文件名的
    • 長文件名目錄項數據結構:

    偏移字節(16進制)

    描述

    00-00

    狀態碼(E5:刪除;01表示目錄項序號;42前面的4是表示最后一個目錄項,后面的2是表示序號為2的目錄項)。

    01-0A

    長文件名的第1-5個字符

    0B-0B

    長文件名目錄項的標志為0F

    0C-0C

    保留

    0D-0D

    校驗和

    0E-19

    文件名的第6-11個字符

    1A-1B

    保留

    1C-1F

    文件名的第12-13個字符

    注意:找到長文件名的目錄項后,找到的那個里面沒有有用的數據,只不過是記錄文件名的,有用的在長文件名的下一項數值才有用,也就是說只有它的短文件名目錄項才有高16位和低16位

    • Unicode編碼中每個字符都會用兩個字節來表示。
    • 長文件名是用Unicode編碼,短文件名用的是ANSI編碼。

    第八章《根據兩個子目錄算出簇大小》

    • 子目錄:

    每個文件夾的最前面兩個目錄項,一定是“.”和“..”目錄項,分別表示子目錄本身和父目錄。

    • 簇大小計算公式:

    兩個扇區相減,兩個簇相減;然后它們的和相除,然后結果就是簇的大小。

    例如:扇區:40992,,238208;簇:131080,4。 ????就是:2138208-40992=2097216,131080-4=131076再然后就是 2097216除以4=16;那么就表明每個簇有16個扇區。

    ???????????以上都是在十進制里面進行的

    第九章《搜索完整的長文件名》

    1、WinHex搜索限制:

    Winhex搜索十六進制數值最多只能搜索50個字節,如果超過50個字節winhex將自動把多余的字節忽略掉

    2、50個字節只能容納20個字符的長文件名目錄項

    3、一個文件名目錄項的長度是32個字節,所以50個字節的話那后面的就還剩下18個字節也就是說第二個文件名目錄項也可以查找它前面18個字節的十六進制,那么前面的18個字節的話是到偏移11的位置。

    4、在Unicode編碼中兩個字節對應的是文件名一個符

    5、如果要復制搜索的話一定要從下向上復制慢50個字節也是可以搜索,不過太過于復雜,通常一般都是復制的是前面的32個字節來查找十六進制。

    注:(1)、先把字符轉換成Unicode編碼

  • 、轉換完好后復制并記錄Unicode編碼
  • 在winhex中找一個全為0的扇區,然后選一小部分來填充成“3F”--3F名為通配符。
  • 再按長文件名目錄項數據結構圖標來把轉換好的十六進制填在“3F”中。
  • 填充完成后復制第一項的十六進制數值來查找長文件名目錄項。
  • 6、長文件名目錄項數據結構:

    偏移字節(16進制)

    描述

    00-00

    狀態碼(E5:刪除;01表示目錄項序號;42前面的4是表示最后一個目錄項,后面的2是表示序號為2的目錄項)。

    01-0A

    長文件名的第1-5個字符

    0B-0B

    長文件名目錄項的標志為0F

    0C-0C

    保留

    0D-0D

    校驗和

    0E-19

    文件名的第6-11個字符

    1A-1B

    保留

    1C-1F

    文件名的第12-13個字符

    注:填充Ctrl + B然后選擇ASCII Hex選項!還有在搜索的時候記得勾上“用作通配符”。

    注:因為一個字符對應的是兩個字節,所以看圖表的時候遇到字符時都要乘以2.例如:0E-19;6-11個字符,那么就是6*2=12那么就是要數12個字節填充才可以。

    第十章《找出指定目錄的所有子目錄》

    • (1)每個文件夾的最前面兩個目錄項,一定是“.”和“..”目錄項,分別表示子目錄項本身和父目錄
  • 在根目錄下的文件夾父目錄的簇號是0不是2。
  • 在別的文件夾里的文件夾,它的父目錄就是父目錄文件夾的本身簇號。
    • 如果根目錄損壞,那么我們可以直接通過搜索子目錄,也就是直接搜索根目錄下的所有子目錄。具體方法:所有目錄項的前面一定是“.”目錄項,“.”目錄項的文件頭是2E 20 20 20 20 20 20 20 20 20 20,所以我們搜索十六進制數值時只需要搜索這個就可以了。

    注:但是如果這樣去搜索的話是搜索里面所有的文件夾,不僅僅是子目錄還有目錄里面的目錄,這樣一層一層的全部都會被搜索出來。

    • 記住在查找十六進制時在有通配符“3F”的時候才勾上,如果沒有就別勾,還有條件偏移計算填上512=32然后再勾上

    解釋:因為每個扇區有512個字節而字符所占用的最少都是兩行也就是32個字節,所以512=32。

    • 在根目錄沒有損壞的情況下是可以顯示文件夾路徑的。
    • 在故意損壞根目錄時填充的數一般都是00不是“3F”因為“3F”是通配符。
    • 再要搜索時我們應該到根目錄里面去向下搜索要么就是在查找十六進制數值里選擇搜索選項點擊全部也是可以的。
    • 在父目錄里面如果高16位和第16位都為0的話那么說明這個文件夾就位于根目錄下;如果高16位為0,低16位為03 00那么這個文件夾就位于子目錄下而不是根目錄下。

    注:根目錄下的子目錄它的父目錄的簇號都為00,因為根目錄比較特殊。

    • 搜索快捷徑:
  • 、選擇任何一個扇區全為0的部分,然后填上2E 2E 20 20 20 20 20 20 20 20 20然后其它全部填充為“3F”通配符。注意不能保存。
  • 、注意高16位和低16位一定要填00 00------因為根目錄下的子目錄它的父目錄的簇號都為0,根目錄比較特殊。
  • 、填充完成后單擊右鍵復制選塊- -十六進制數值。
  • 、然后在查找十六進制數值里面去搜索。
  • 重要注意:在搜索的時候一定要全部搜索完才行,不能半途終止不然恢復后的數據不完整。

    以上是在根目錄損壞的情況下進行的。

    • 《創建一個文件對系統做了哪些操作》
    • 找一個為FAT32的空盤,注:一定要是空盤不然不好比較。
    • 把空盤里面的數值復制出來也就是把數值提取出來。
    • 提取出來后點擊專業工具---將鏡像文件轉換為磁盤這樣就生出了一個和原盤一模一樣的磁盤,包括扇區、數據、數值、字符等都是一樣的,相當于克隆。
    • 做比較的工具:查看---同步窗口、同步和比較
    • 做實驗:
  • 在實驗盤中存放一個aaa.txt的文檔。注:一定要在桌面上創建后復制到盤里,不然比較的時候較復雜。
  • 做數據比較:工具---文件工具----比較。注:另存報告的框中建的文本文檔不能是漢字。
  • 記住比較完成后點擊取消如果點擊確定那么比較的數值就會被刪除。
  • 用比較完成后數據的第一個偏移地址進行轉移到偏移量。注:相對于選項選開始。例如:數據偏移為800020: 41 00 ?那么就轉到偏移量800020。
  • 比較開始轉到偏移量完成后點擊查看---同步窗口、同步窗口和比較勾上,這樣就可以很清楚的看到哪里不同了,黑色為不同,無顏色為相同。
    • 在文檔里增加內容,內容為123再進行比較。
  • 在文檔aaa.txt里增加123然后保存
  • 跟上一次一樣一定要保存空文檔的狀態也就是說空盤里所建立的txt文檔是在空盤里增加的一個文檔,現在要做另一個比較,所以要在從新提取一遍。這樣好做比較。
  • 比較完成后跳轉第一個偏移量。
  • 改變:第一個改變的是文件系統的空閑簇號,因為我們給aaa.txt文檔里增加了一個內容所以會占用一個簇的大小,作比較后發現沒存內容前與存內容后,存后的數值要比存之前的數值要小。也就是減少了。然后下一個可用簇號發生了改變;第二個改變從00 00 00 00變成了FF FF FF 0F也就是FAT表的結束標志,也就是說文檔里的內容到FF FF FF 0F就結束了。因為我們只增加了123這幾個內容所以占用一個簇的大小足夠了;第三個改變FAT2的數值,因為FAT2是FAT1的備份所以FAT1改變FAT2也會跟著改變;第四個改變是內容的數據從00 00 00 到有數值,這個數值就是我們增加123內容的數值。注:有些數值是在偏移量的同一行不是同一個位置,這些同一行的數值就不用去跳轉了。
    • 直接在空盤里創建文本文檔再重命名的結果比較。
  • 在根目錄下的新建重命名的文檔多了兩個是刪除的目錄項“E5”
  • 八、總結:

  • 新建一個名aaa.txt的空文檔,只是多了一條目錄項。
  • 給aaa.txt增加內容時,一號扇區文件系統的空閑簇號減少,下個可用簇發生改變;FAT1、FAT2多了個FAT表項數據區的數據發生改變。
  • 以上是在十六進制下進行的

    第十二章《用winhex手工創建一個文件》

    • 直接在winhex中創建一個文檔實驗
  • 在根目錄或文件夾下創建一個文檔
  • 00-07是文檔的名稱如果文檔的數值沒有占用完8個字節那么就用20來填充。
  • 08-0A是擴展名。
  • 0B是表示是什么類型文件,這里我們填20表示普通文件。
  • 0E-01前兩個字節表示時分秒,后兩個字節表示日期(注:在數據解釋器中DOS Date表示時間和日期;第一個是日期,第一個是時間。)。
  • 02-03也表示日期
  • 06-09也表示時間和日期只不過一個表示創建的時間和日期一個表示修改的時間和日期。
  • 寫入完成后保存(注:保存是在文件下的第二個)保存后再更新磁盤快照才行。
    • 在建立文檔中用winhex增加內容。

    ????????1、0A是填簇號的

    ????????2、0C是表示內容的字節數

    3、填寫完成后保存,然后保存完成后再跳轉簇的位置。

    ????????4、跳轉到后用字符轉換器將漢字、英文或數字轉換成十六進制來填寫到簇里面。

    ????????5、最后一個千萬不能忘記,也就是FAT表,在內容填寫完后點擊到FAT表里面去把簇激活也就是結束標志FF FF FF 0F。例如:我們填寫的是5號簇那么就到5號簇里面去填寫內容然后再到FAT表里找到5號簇的位置填寫結束標志FF FF FF 0F,這樣才可以。

    三、指定小寫擴展名或英文小寫名稱

    ???1、0C的意義就是可以改變這一項大小寫的顯示。

    ???2、0C要填什么數才是小寫呢?

    ???答:我們把想到的數值輸入到十六進制里然后把十六進制轉換成二進制,如果轉換出來的結果為1那么就是小寫(原理:第一個1為擴展名小寫,第二個1為名稱小寫;也就是說1為是,0為否)。

    四 、總結:(1)、新建一個目錄項。

    ??????????????(2) 給數據區的內容賦值。

    ??????????????(3)、給FAT1表相應的FAT標記簇已用。

    ????五、目錄項0C位置第5位二進制如果為1,那么擴展名小寫;第4位二進制位如果是1那么文件名小寫。(注:這是從后往前數的)

    以上一般都會用到字符轉換器

    第十三章《刪除一個文件對文件系統做了哪些操作》

    • 刪除文件到回收站做了哪些操作實驗。
  • 、在FAT32的盤里創建一個文檔。
  • 、將還沒有刪除文檔之前的數據區給鏡像出來;這樣好對刪除后進行比較。
  • 、打開winhex更新磁盤快照(補:在更目錄下顯示的帶有問號或紅叉的表示已經被刪除的文件或文檔,如果想讓被刪除的文檔不顯示在更目錄下那么點擊更新磁盤快照右面的第一個里面的(列出曾經存在過的項目)的勾給去掉。
  • 、鏡像出來后再把建立的文檔給刪除掉。
  • 、刪除完成后進行比較。
  • 、從第一個偏移開始跳轉比較,后面有些是在同一行的所以在同一行的偏移就不用去一個一個的去跳轉了。
  • 、刪除后發現第一個不同:刪除文件后發現FAT表的空閑簇號變小了,已用簇號多了一個簇,已用空間也變大了。(注:每刪除一個簇就會用下一個簇來存儲刪除到回收站的文件。)
  • 第二個不同:發現FAT1又多了一項已被激活的簇(注:FAT2表也會跟著變。)
  • 、第三個不同:目錄區的數據被標記成“E5”也就是表示已被刪除
  • 、第四個不同:刪除文檔后發現原本空閑的目錄增加了一些內容,這些內容也就是被刪除文檔的內容,這個文檔被刪除到了一個隱藏的回收站里也就是說winhex中有一個專門裝被刪除的文檔的分區,也就是隱藏分區。
    • 總結:

    (1)、1號扇區的空閑簇號-1

    (2)、下個可用簇向下移了一個簇。

    (3)、FAT1和FAT2多了一個FAT表項。

    (4)、文件目錄項第一個字節變成了“E5”也就是表示已被刪除。

    (5)、回收站的目錄里多了兩個目錄項。

    ????(6)、數據區多了一個配置內容文件。

    第十四章《清空回收站做了什么操作》

    • 建立一些文檔在文檔里加一些內容然后再把文檔刪除在去把回收站清空實驗。(注意:在還沒有刪除之前一定要把數據給鏡像出來)
  • 、刪除后更新磁盤快照然后滾動一下數據區讓數據刷新一遍。
  • 、把鏡像出來的文件轉換為磁盤。
  • 、刷新后開始進行比較刪除前與刪除后有哪些變化。
  • 、復制比較完的偏移的第一位,發現第一個不同:清空回收站后空閑簇數比原來少了兩個簇。(其中一個簇是文件真正存放地址的簇,還有一個簇是配置文件的簇)。然后下個可用簇減少。
  • 、 第二個不同:就是FAT表原本被激活的FAT表項變成了00 00 00 00因為把文件刪除到回收站會產生一個配置文件所以也就會再占用一個簇,如果我們把回收站清空了的話原本的文檔和配置所占用的簇也會被刪除所以在FAT1表中就會出現兩個結束標志被刪除。
  • 、第三個不同:是原本存在的數值開頭變成了“E5”也就是表示被刪除(注意:加上配置文件共兩個,所以有兩項顯示“E5”)。
    • 總結:
  • 、一號扇區空閑簇數減少。
  • 、下個可用簇號改變。
  • 、FAT1和FAT2相應的表項改變。
  • 、回收站的子目錄里的相應的兩個目錄項第一個字節變成了“E5”。
  • 第十五章《按ShIFT鍵徹底刪除對文件系統做了哪些操作》

    • 在盤中創建一個文件重命名然后在里面添加一些內容。
  • 、創建完成后打開winhex把還未刪除的狀態給鏡像出來。
  • 、鏡像出來后再將鏡像轉換為磁盤。
  • 、然后再將盤里的文件按住Shift鍵給刪除掉(注意這樣直接刪除是不經過回收站的)。
  • 、刪除后打開winhex更新快照滾動一下數據區讓它刷新一下。
  • 、刷新完成后開始比較(注意保存路徑)。
  • 、第一個不同:刪除之后空閑簇數變大了也就是說刪除之后這個文件本身所占用的簇號被釋放。
  • 、FAT1和FAT2被占用的簇刪除之后也被釋放。
  • 、刪除之后winhex中文件開頭的字節變成了“E5”也就是表明已被刪除。
    • 總結:
  • 、一號扇區的空閑簇數變大(注:變大多少由文件所占用多少個簇來決定
  • 、下個可用簇也會發生改變。
  • 、FAT1和FAT2會釋放相應的FAT表項。
  • 、目錄項的第一個字節變成了0XE5。
  • 第十六章《恢復刪除的文件》

    • 按住Shift鍵刪除恢復實驗
  • 、用字符轉換器將漢字或英文轉換成十六進制,然后再到查找十六進制數值里去搜索。(注:不管以前的文件是大寫還是小寫在轉換的時候一定要填大寫)。
  • 、轉換好后復制到查找十六進制數值里去搜索(注意:因為文件是已被刪除的所以在搜索的時候一定要把前面第一個字節給去掉再搜索,因為刪除后文件名的第一個字節會變成“E5”所以在搜索是一定要把第一個字節給去掉)。
  • 計算出簇大小后跳轉到簇的位置(注:這一節講的是在高位簇為0的時候)。
  • 、然后將光標放在第一個字節處,將偏移變成十進制。
  • 、然后點擊轉到偏移量,相對于選擇當前位置。
  • 、轉到后按住ALT+2選擇尾部。
  • 、然后右擊編輯--復制選塊--至新文件也就是將選擇后的數據提取出來(注:文件大小數是0C)。
  • 以上是在高16位為0的時候操作的

    第十七章《有高位簇的文件刪除后對文件系統做了哪些操作》

    • 在要做實驗的盤里存入一個文檔(注:在文檔里存入的內容一定要使它的高位簇有數值)實驗。
  • 、將還沒有刪除之前的狀態給鏡像出來,然后再將鏡像轉換成磁盤。
  • 、轉換完成后再將文件永久性刪除(注:如果在高位簇有數值的情況下直接在根目錄下恢復是沒有用的,通過這樣恢復的數據是一串亂碼)。
  • 、開始進行比較,第一個不同:空閑簇數變大,刪除之后原本所使用的簇號被空閑出來,下個可用簇也改變了。
  • 、第二個不同:FAt1原本被占用的FAT表項刪除之后被釋放(注:因為高位簇是有數值的也就表明這個文件里的內容所占用的字節比較多,所以FAT1表所占用的FAT表項也就越多)。
  • 、第三個不同:目錄項的第一個字節變成了“E5”。也就是表明已被刪除。
  • 、這一個不同是這一節的重要;第四個不同:高16位由原本得有數值變成了0(所以這就是為什么我們直接通過恢復根目錄下的數據沒用的原因了,因為高位簇變成了0所以它用它計算出來的簇也就是錯的)。
    • 總結:
  • 、一號扇區和下個可用簇發生改變。
  • 、文件對應的FAT1和FAT2的FAT表項清空。
  • 、文件目錄項的第一個字節變成了0xE5。
  • 、目錄項的高位簇被清0。
  • 第十八章《恢復刪除文件---手工計算被清空的高位簇》

    • 當高位簇有數值為0時的情況下恢復實驗。
  • 、在需要恢復實驗的盤里增加一些文件或者壓縮包,這樣才可以使要做實驗的文件的高位簇有數值。(注:因為winHex中只有低位簇不夠存放時高位簇才會開始存放數據)
  • 、到winhex里面去看一下文件是否是用高位簇進行存放,如果是那么就按住ShiFt鍵把文件刪除。
    • 恢復實驗開始:
  • 、刪除文件后到winhex中更新磁盤快照、滾動數據區讓數據進行刷新。(注:當我們把文件刪除后根目錄下顯示的是紅叉,也就是表明高位簇被清0,所以直接在根目錄下恢復的文件是損壞的)。
    • 高位簇計算:
  • 、點擊被刪除文件然后將文件所在的扇區號進行復制,再將復制的扇區號復制到跳至扇區扇區的位置,然后下面簇的框中顯示的就是低位簇的結果。
  • 、用假設法假設高位簇為1,那么就是1乘以65563等于65536(注:每加一個簇那么就要在原有的基礎上再加一個1乘以65536,以此類推)。
  • 、算高位簇公式:用低位簇的數值加上假設的數(注:再假設高位簇的時候只能在原有的1x65536上疊加一個1x65536)。例如:低位簇為:18344 ??????高位簇假設為1那么高位簇就是1x65536;18344+65536=83880; ?如果假設高位簇為2,那么就是83880+1x65536=149416就這樣以此類推直到找到為止。
  • 、將算出的結果復制到跳至扇區簇的框中進行跳轉看是否在這個簇里面,如果沒有在里面,那么再找下一個簇。(注:我們在這里算出的結果是簇的結果而不是扇區的)。
  • 、找到后將數據提取出來就可以了(注:如果要它的字節數,那么就用字符轉換器將漢字會英文轉換成十六進制,然后查找到后,到1C位置查看字節數)。
  • 第十九章《剪切文件對文件系統做了哪些操作》

    • 剪切分為兩種情況:第一種:剪切到其他數據盤;第二種:剪切到其他文件夾。
    • 將文件剪切到其他數據盤實驗
  • 、在實驗盤里存入一個文件。
  • 、再將winhex中的數據給鏡像出來,然后再將鏡像轉換為磁盤。
  • 、把數據鏡像出來后,在到實驗盤里把文件剪切到其它盤中,剪切完成后再到winhex中更新快照、滾動一下數據區讓數據刷新一遍。
  • 開始進行比較:第一個不同:剪切后空閑簇數變多了,就是文件系統已占用的簇數變少了,也就是說這個文件原本所占用的空間被釋放了,下個可用簇也發生了改變。
  • 、第二個不同:剪切之后這個文件所占用的FAT表項被清空了。
  • 、第三個不同:文件名目錄項開頭的第一個字節變成了0xE5。
  • 、第四個不同:剪切之后高位簇被清零了(注:所以我們直接在根目錄下恢復的話是沒用的;還有高位簇被清零,數據區也會發生改變)。
    • 總結:
  • 、一號扇區空閑簇數和下個可用簇號發生改變。
  • 、文件所對應的FAT1和FAT2的FAT表項被清空。
  • 、目錄項開頭的第一個字節變成了0xE5。
  • 、目錄項的高位簇被清零。
    • 將文件夾里的文件剪切到其它文件夾做了哪些操作。
  • 、在實驗盤里存入一個文件。
  • 、再將winhex中的數據給鏡像出來,然后再將鏡像轉換成磁盤。
  • 、然后將文件剪切到其它文件夾中。
  • 、開始進行比較;第一個不同:文件名目錄項的第一個字節變成了0xE5。
  • 、第二個不同:把A文件夾里的文件剪切到B文件夾里面的時候B文件夾里的子目錄里多了一行目錄項。(注:這個實驗是在兩個文件夾都在一個盤里的情況下)。
    • 總結:
  • 、將原先的目錄項第一個字節變成了0xE5。
  • 、在剪切后的子目錄里生成了一個目錄項。
  • 第二十章《格式化對文件系統做了什么操作》

    • 格式化實驗:
  • 、在要準備實驗的盤里放入一些文件。
  • 、然后到winhex中將數據給鏡像出來,再然后將鏡像轉換為磁盤。
  • 、開始比較;第一個不同:格式化后DBR里面的數據會發生改變。
  • 、第二個不同:空閑簇數和下個可用簇號的數據發生改變。
  • 、第三個不同:FAT1和FAT2的FAT表項也全部被清零。
  • 、第四個不同:格式化后根目錄下的目錄項被清空,然后格式化后會給盤默認起一個名字。
    • 總結:
  • DBR里面的參數改變。
  • 一號扇區里面的參數改變
  • 、FAT1和FAT2的FAT表項被清零。
  • 根目錄也被清空,如果有卷標,那么會有一條目錄項。
  • 第二十一章《格式化恢復-虛擬子目錄》

    • 恢復實驗:
  • 、在盤中存儲一些文件,然后再將實驗盤給格式化。
  • 、搜索根目錄下的所有子目錄(因為格式化的話只會破壞根目錄和根目錄之前的那些區域,也就是說用戶真正的數據區并沒有被破壞)。
  • 、開始搜索;1、找一個為0的扇區偏移:00-01填2E 2E;偏移:02-0A填充20;偏移:0B-19填充3F通配符(注:高位簇和低位簇填0)。
  • 、填充完成后開始搜索(注:一定要復制到低位簇)。
  • 、復制到查找十六進制數值里面去查找(注:要勾上通配符、偏移條件512=32、然后還要選擇全部搜索、再勾上列出搜索結果)。
  • 、然后再跳轉到2號簇(因為DBR里面的關鍵參數并沒有改變,所以它們的根目錄、FAT表那些位置都是完全重疊的)。
  • 、跳轉到后將虛擬子目錄放入到WinHex中然后再將里面的數值復制到2號簇(注:復制多少目錄項要看搜索到的子目錄有多少來決定的)。
  • 、如果搜索到的是3個子目錄那么就到虛擬子目錄里去復制3個目錄項到2號簇。
  • 、在2號簇的空閑區域寫進去(注意:寫進去的位置一定要是32=0)。
  • 、保存,保存完成后又回到搜索到子目錄里。
  • 、回到后將它們的高位簇和低位簇寫入到虛擬子目錄里也就是我們復制到2號簇的目錄項里的高位簇和低位簇的位置。
  • 、填寫完成后保存,更新磁盤快照。
  • 、更新完成后發現根目錄下多了幾個文件,這幾個文件就是我們虛擬的子目錄,然后將它們恢復就可以了。
    • 總結:
  • 、在根目錄下虛擬子目錄。
  • 第二十二章《格式化恢復-手工提取根目錄下文件》

    • 直接手工提取根目錄下文件:
  • 、在盤中存放一些文件(注:不是文件夾)。
  • 、將實驗盤中的數據給格式化,(注:格式化要在磁盤管理中去格式化)。
  • 、查找文件的文件頭的開頭的四個字節,找到它復制到查找十六進制數值里面去搜索。(注:如果在不知道它是什么類型文件的情況下,那么就到外面去創建一個一模一樣的文件,讓后再將創建好的文件拉倒winhex中看它開頭的四個字節,將那四個字節復制到查找十六進制數值里面去搜索)。(注意:一定要全部搜索)。
  • 、搜索到后再將數據提取出來就可以了。
    • TXT類型搜索實驗:
  • 因為文檔比較特殊,它沒有文件頭,所以在恢復的時候只能通過文檔里面的任何漢字、代碼、英文、數字等一些內容用字符轉換器來將它們轉換成十六進制然后到查找十六進制數值里面去搜索進行定位。(注:在搜索的時候什么都不用勾)。
  • 、找到后將數據提取出來就可以了。
  • 第二十三章《格式化恢復-手工計算DBR參數》

    • 修改DBR參數恢復實驗:
  • 、先搜索出子目錄下所有父目錄。
  • 、搜索完成后再將它的簇大小算出然后再將結果放到跳轉至扇區簇的框中看一下顯示的扇區號與數據區的扇區號是否能對上,如果能那么就直接在根目錄下虛擬子目錄然后恢復,如果不能那么就要修改DBR參數。
    • DBR修改實驗:
  • 、將找出的子目錄的簇大小與數據區的扇區數進行記錄(注:記錄的是左下角的哪一個)。
  • 計算公式:扇區與扇區對減;簇大小與簇大小對減,再然后扇區的結果除以簇的結果(例如:扇區是40976和41008;簇大小是3和5那么就是40976-41008=32;5-3=2;32/2=16)。
  • 、計算根目錄所在扇區號:用3號簇的扇區減去我們算出的簇大小的結果等于根目錄所在扇區(因為數據存儲是有順序的,所以2號簇過了就是3號簇)。
  • 、完成后跳轉到0號扇區。
  • 、修改0號扇區簇大小偏移:0D,點擊0D位置將我們算出的的簇大小填入到數據解釋器中。
  • FAT表大小計算公式:我們算出根目錄所在的扇區號減去FAT表的起始扇區扇區號除以2。(注:FAT表的起始扇區號在已經格式化后的偏移:0E-0F位置,也就是說將已經格式化的磁盤的DBR中的偏移:0E-0F數據解釋器中的數值來減去我們算出的根目錄結果就等于FAT表大小)。
  • 算出結果后將結果填到FAT表大小的位置,偏移:24-25,將結果填到數據解釋器中
  • 、然后更新,如果更新不出來那么就關掉再打開。
  • 、在計算:FAT起始扇區號加FAT大小乘以2(例:FAT起始扇區為6158;FAT表的大小為:17401;6158+17401*2=40960)。
  • 、驗證完成后到2號簇虛擬一個子目錄然后將簇號填上,然后恢復就可以了。
  • 第二十四章《格式化恢復-巧取DBR參數》

    • 巧取實驗:
  • 、搜索子目錄下所有父目錄。
  • 、搜索到后,在其中選擇一個來驗證一下看這個子目錄的扇區能否與數據區的扇區號對上,如果不能那么表示DBR里面的參數被改變。
    • 恢復實驗:
  • 、在磁盤管理中或分區工具中再創建一個與實驗盤一樣大小的盤(注:一定要是FAT32格式的)。
  • 、創建完成后到WinHex中將我們創建的盤中的DBR復制到實驗盤中DBR的位置(注:定要從第0個字節開始寫入)。
  • 如寫入完成后到搜索到的子目錄里面再將子目錄的簇大小放入到跳至扇區里面簇的框中,如果扇區的框中顯示的結果與數據的扇區號不能對上的話,那么就說明我們創建的盤中的DBR的參數是錯的。
  • 、然后再到0號扇區去看一下它的簇大小,然后再到磁盤管理中再將它給格式化(注:要格式化的是我們創建的哪個盤,在格式化分配單元框中選擇一個與上一個不同的簇大小;8192是16;4092是10;因為上一個的簇大小是16,它的DBR參數是不對的,所以我們要選擇一個與上一個不同的簇大小,再格式化)。
  • 、如果是對的那么子目錄的扇區與數據區的扇區號是可以對上的,根目錄下也會自動恢復被格式化的文件,如果對不上那么就再去格式化再換一個簇大小,直到對的上為止。
  • ??????????三、注意:在復制的時候一定要注意,不能把分區1的DBR復制到引導扇區里去。

    第二十五章《磁盤未被格式化-利用備份的DBR恢復》

    • 如果在打開磁盤或U盤的時候提示“格式化”那么就表明盤中0號扇區的DBR參數被破壞了。
    • 打開winhex到六號扇區直接將六號扇區的十六進制復制到0號扇區就可以了(因為每個分區的DBR都有一個它的備份分區,所以直接將六號扇區的數據復制到0號扇區就可以了,注:前提是磁盤未被格式化,打開winhex到根目錄下去看一下,如果還能看見文件那么表明磁盤未被格式化。之所以能看見是因為備份DBR起的作用,所以在winhex中能看見但在計算機中不能打開就是這個原因了。

    第二十六章《磁盤未被格式化恢復-用系統格式化默認恢復》

    • 恢復前準備:
  • 、打開磁盤的時候提示說“格式化”那么表明磁盤中的零號扇區的DBR被損壞。
  • 我們打開0號扇區和六號扇區去看一下,發現0號和六號的DBR參數都被損壞掉了
  • 、看“分區”欄中擴展名的位置下顯示的是什么,如果顯示FAT32那么就表明備份的DBR沒有被損壞;如果顯示的是問號那么表明備份的DBR也被損壞了。(注:所以在winhex中數據也提取不出來)。
  • 、然后再去搜索FAT表,搜索“F8FFFF0F”因為它是FAT表開頭的4個字節。偏移條件選擇512=0。
  • 、搜索到后看一下它是FAT1的還是FAT2的(注:FAT表有兩個FAT1和FAT2,FAT1在前面FAT2在后面,所以我們如果搜索到后看一下它的前面和后面一個扇區,如果前面為0后面也為0的話那么就表明我們搜索到的是FAT2,因為數據損壞是有順序的都是從前面一個先開始)。
    • 開始恢復
  • 在磁盤管理或分區工具中創建一個與實驗盤大小一模一樣的,然后再到winhex中打開我們創建的盤中,將盤中的DBR參數復制到實驗盤中DBR的位置,然后發現實驗盤的“分區”框中擴展名顯示的是FAT32,那么表明實驗盤的DBR被恢復了,但是磁盤還是不能讀寫,只能將在根目錄下直接提取出來。
  • 第二十七章《磁盤未被格式化恢復-手工計算DBR參數》

    • 恢復實驗:
  • 、先在實驗盤里存入一些文件,然后再將磁盤里的DBR參數給損壞掉。
  • 、損壞完成后打開winhex的物理驅動器的實驗盤(注:因為備份的DBR也被損壞,所以直接在邏輯驅動器里無法打開)。
  • 、打開分區1,打開后在里面搜索我們需要的數據;比如備份DBR,FAT表等。(注:不能直接在物理驅動器下搜索,一定要打開分區1里面去搜;因為如果直接在磁盤下搜索的話那么我們搜索的時候都會以第2048個扇區為起點開始搜索,這樣的話我們計算起來會很麻煩的,所以我們為了簡單一點都打開分區1到里面去搜索)。
  • 、找:0號扇區與六號扇區DBR參數;然后找FAT表,搜索“F8FFFF0F”,如果搜索不到,那么就搜“FFFFFF0F”偏移條件:4=0、全部搜索
  • 、搜索到后將光標放在第一個字節看數據解釋器中的數值,如果是129那么就是第二個FAT表的扇區(因為一個FAT表的一個扇區所容納的FAT表項數是128個,所以129的話是第二個FAT表扇區)。
  • 然后記錄搜索到的扇區的上一個扇區號。
  • 、然后復制我們搜索到扇區的上一個扇區的開頭的8個字節進行搜索。
  • 、搜索到后記錄它的扇區號
  • 將兩個扇區號相減那么就是FAT表大小(7186-19977=12791)
  • 、FAT表大小加上FAT表2的起始位置等于根目錄所在扇區號(12791+19977=32768)。
  • 、然后隨便搜索兩個子目錄。
  • 、搜索到后隨意點擊一個,記錄它的扇區號和簇大小;(3;32800).
  • 、然后隨意點擊一個,記錄它的扇區號和簇大小。(131;36896)。
  • 再然后扇區與扇區對減;簇大小與簇大小對減;扇區結果除以簇大小結果(32800-36896=4096;131-3=128;4096/128=32)
  • 、然后再到磁盤管理或分區工具中去創建一個盤,多大都可以。
  • 、創建完成后再將創建好的盤的DBR參數復制到實驗盤DBR的位置。
  • 然后修改復制完成的DBR參數,偏移:0D填簇大小;偏移:0E-0F填FAT表的起始扇區號也就是我們搜FAT表最前面的FAT表扇區;偏移:24-25填FAT表大小;偏移:20-23填文件系統總扇區數。
  • 、然后填寫完成后更新快照就可以了。
  • 第二十八章《文件和目錄損壞的原因和恢復方法》

    • 一般出現提示“格式化”時都是根目錄FAT表項損壞了。
    • 如果是NTFS提示格式化表明MFT損壞。
    • 打不開磁盤是因為根目錄的FAT表項被清零,如果是其他FAT表項的話也就是個別文件打不開而已。
    • 恢復方法:
  • 將根目錄所占用的FAT表項改變“FF FF FF 0F”表示2號簇已被占用
  • 、將修復好的FAT表項更新磁盤快照,再到計算機中將實驗盤彈出然后在讀取一遍就可以了。
  • 第二十九章《文件名變亂碼的原因及恢復方法》

    • 文件名變亂碼的原因是因為文件夾所在的數據區損壞了。
    • 利用21張所學虛擬子目錄,恢復方法:
  • 、點擊文件夾所在的數據區。
  • 、發現數據區內的數據顯示的是一堆亂碼,(注:因為如果子目錄和父目錄正常的話子目錄開頭用“2E 20 20 20 20 20 20 20 20 20 20開頭;父目錄用2E 2E 20 20 20 20 20 20 20 20 20 開頭”)。
  • 、看文件夾在那個簇號的方法:點擊變成亂碼的文件夾,然后將文件夾所在的扇區號復制到跳至扇區扇區的框中,下面的結果就是文件夾所在的簇號。(注:點擊的是根目錄下的文件夾)。
  • 、再然后將簇框中顯示的結果放到計算器十進制里面轉換成十六進制。
  • 、搜索父目錄在2B 7C的所有父目錄;方法:找一個部分為0的扇區將它們填為“2E 2E 20 20 20 20 20 20 20 20 20 3F 3F 3F 3F 3F 3F 3F 3F 3F 00 00 3F 3F 3F 3F 7C 2B”(注:因為在winhex中的數值與外界的數值是相反的;又因為數值是從低位簇開始填寫的,所以這里高位簇為0)。
  • 再然后復制選塊---十六進制數值,復制到查找十六進制數值里面進行搜索----勾上通配符、全部搜索、偏移條件:512=32、列出結果可隨意
  • 、搜索到后將子目錄的高低位簇數值做好記錄。(注:這里寫出來可不用相反)。
  • 、然后再點擊變亂碼的文件夾將文件夾的數據區清零,然后再將虛擬的子目錄復制到文件夾的數據區中,再將記錄好的高低位簇填入到虛擬子目錄的高低位簇中。
  • 、填充完成后跟新就可以了。
    • 如果文件直接在根目錄下或直接在變成亂碼的文件夾中,恢復方法:
  • 、搜索壓縮包開頭的4個字節。(注:如果不知道4個字節是那4個,那么可在外界創建一個與被變亂碼壓縮包一樣的壓縮包,然后再將創建好的壓縮包拉到winhex中,即可知道,這里一定要創建與要被恢復壓縮包一樣類型的)。
  • 、然后復制開頭4個字節到查找十六進制數值里面去搜索。
  • 、搜索到后將數據提取出來就可以了。
  • 第三十章《根據FAT表算出簇大小》

    • 沒有子目錄,用FAT表算出簇大小實驗:
  • 、 直接在實驗盤內存入一些文件或壓縮包。
  • 、然后打開winhex將實驗盤的DBR給破壞掉。
  • 、找FAT表,在查找十六進制數值中搜索“F8 FF FF 0F”全部搜索、偏移條件:512=0
  • 、搜索到后第一個就是FAT1,然后按F3繼續搜索到后第一個就是FAT2,記錄它們所在的扇區號。
  • 、算出FAT表大小:用FAT1的位置減去FAT2的位置(4170-18469=14299)
  • 、算出根目錄所在扇區號:用FAT表大小加上FAT2的起始位置等于根目錄所在扇區號(14299+18469=32768)
  • 、算出根目錄所在扇區號后復制結果到跳轉至扇區進行跳轉。
  • 、跳轉到后記錄根目錄所在扇區號也就是我們算出的結果。
  • 、算出文件系統有多大:用總扇區號減去根目錄所在位置(14673920-32768=14641152)。
  • 、算出有多少個FAT表項:用FAT表大小乘以128因為每個扇區可以容納128個FAT表項(14299*128=1830272)。
  • 、算出簇大小:用總扇區號除以FAT表項=簇大小(1830272/14641152=7.9994...)簇大小只有1、2、4、8、、16、32、64、128這幾個,因為我們算出的結果接近于8,所以它的簇大小就是8。
  • 、都算完成后再去創建一個為FAT32格式的磁盤,然后再到winhex中將創建的磁盤的DBR參數復制到實驗盤DBR參數的位置。
  • DBR參數寫入完成后再將它們的偏移:0D填簇大小;偏移:0E-0F填FAT表的起始扇區號;偏移:24-25填FAT表大小;偏移:20-23填文件系統總扇區號。
  • 、填入完成后數據就恢復了。
    • FAT表的0號扇區損壞恢復實驗。
  • 、當FAT表的0號扇區損壞了,我們又急需尋找FAT表的話,那么只能搜索“FF FF FF 0F”來查找了,全部不勾。
  • 、有時候搜索到的第一個并不是FAT表的結束標志,所以要按F3繼續搜索。
  • 、搜索到后,將光標放到第一個字節處看數據解釋器的數值。
  • 、再用第一個字節的數值除以128就是結果。(10625/128=83.00781)。
  • 、再用所在的扇區號減去算出的結果=FAT1表的起始位置(4253-83=4170)。
  • 、算出后跳到算出的扇區號的位置。
  • 、跳轉后如發現沒多少數據那么向下拉一點就可以看見了。
  • 、看見以后將光標放在第一個字節發現是FAT表的第二個扇區。也就是129。也就是說我們搜索到的就是FAT表的起始位置了。
  • 、再將找到的FAT1表的起始位置的前幾個字節復制到查找十六進制數值里搜索,搜索到后就是FAT2表的起始位置了。
  • 以上都要注意記錄

    完結

    總結

    以上是生活随笔為你收集整理的接上一章winhex数据恢复新手入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。