手工重建復(fù)合文檔(doc;xls,ppt)文件頭,修復(fù)文件全過程_第1頁
手工重建復(fù)合文檔(doc;xls,ppt)文件頭,修復(fù)文件全過程_第2頁
手工重建復(fù)合文檔(doc;xls,ppt)文件頭,修復(fù)文件全過程_第3頁
手工重建復(fù)合文檔(doc;xls,ppt)文件頭,修復(fù)文件全過程_第4頁
手工重建復(fù)合文檔(doc;xls,ppt)文件頭,修復(fù)文件全過程_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、最近學(xué)習(xí)了復(fù)合文檔的格式,在修復(fù)復(fù)合文檔頭方面做了不少實踐,有了一些心得,經(jīng)過梳理,做了個例子,把思路和過程介紹給大家,希望能解決你的不時之需! 例子中用的文件如下圖:名為“實驗文檔”,是個空文檔,里面沒有內(nèi)容,看屬性,10,752字節(jié),剛好21扇區(qū),復(fù)合文檔的文件大小一定是512字節(jié)的整數(shù)倍,這跟復(fù)合文檔的設(shè)計有關(guān)系。EXCEL,PPT等文件也屬于復(fù)合文檔,也符合這樣的特點。 后來我又想,可能有網(wǎng)友會對修復(fù)后的文件產(chǎn)生懷疑,沒有內(nèi)容的文件可能說明不了問題,所以我在文件中輸入了很短的文本內(nèi)容!如下圖: 實驗文檔是一個正常的文件,另外我用Winhex把該文件的文件頭(前面512字節(jié))全部寫成了0

2、,最徹底的破壞,保存為“損壞的實驗文檔”,大家可以用現(xiàn)有的修復(fù)軟件試一下,能不能修復(fù),我用EasyRecovery Professional沒有修復(fù)成功!其它的軟件沒有試過! 下面,就請大家跟我一起看,如何把“損壞的實驗文檔”修復(fù)成功! 先介紹用到的工具軟件Winhex,功能很強大,可以用二進制的方式打開文件,并進行編輯,保存!該軟件不僅可以打開文件,還可以打開硬盤,對硬盤數(shù)據(jù)進行編輯,搜索功能什分強大,用起來非常方便,同時支持腳本,提供API函數(shù)。軟件界面如下圖: 用該軟件打開“實驗文檔”和“損壞的實驗文檔”,可以對比一下前512字節(jié),為了便于操作,我們需要將文件解釋為硬盤,讓軟件以扇區(qū)的方

3、式顯示文件內(nèi)容,看起來直觀些!兩個文件的在軟件里顯示如下圖: 可見,“損壞的實驗文檔”前面的512字節(jié)全是0,文件頭被全部破壞,文件無法用office打開!復(fù)合文檔文件頭的定義:Offset Size Contents0 8 復(fù)合文檔文件標(biāo)識:D0H CFH 11H E0H A1H B1H 1AH E1H8 16 此文件的唯一標(biāo)識(不重要, 可全部為0)24 2 文件格式修訂號 (一般為003EH)26 2 文件格式版本號(一般為0003H)28 2 字節(jié)順序規(guī)則標(biāo)識(見3.2)::FEH FFH = Little-EndianFFH FEH = Big-Endian30 2 復(fù)合文檔中sec

4、tor的大小(ssz),以2的冪形式存儲, sector實際大小為s_size = 2ssz 字節(jié)(一般為9即512字節(jié), 最小值為7即128字節(jié))32 2 short-sector的大小(見5.1),以2的冪形式存儲, short-sector實際大 小為s_s_size = 2sssz 字節(jié)(一般為6即64字節(jié),最大為sector的大小)34 10 Not used44 4 用于存放扇區(qū)配置表(SAT)的sector總數(shù)48 4 用于存放目錄流的第一個sector的SID (見6)52 4 Not used56 4 標(biāo)準(zhǔn)流的最小大小(一般為4096 bytes), 小于此值的流即為短流。6

5、0 4 用于存放短扇區(qū)配置表(SSAT)的第一個sector的SID (見5.2),或為2 (End Of Chain SID)如不存在。64 4 用于存放短扇區(qū)配置表(SSAT)的sector總數(shù)68 4 用于存放主扇區(qū)配置表(MSAT)的第一個sector的SID (見4.1),或為2 (End Of Chain SID) 若無附加的sectors。72 4 用于存放主扇區(qū)配置表(MSAT)的sector總數(shù)76 436 存放主扇區(qū)配置表(MSAT)的第一部分,包含109個SID。 看起來有些復(fù)雜!修復(fù)文件頭的數(shù)據(jù)只需要計算并填寫幾項,一是扇區(qū)分配表(SAT)所占的扇區(qū)數(shù),二是目錄起始扇區(qū)

6、號,三是短流扇區(qū)分配表的起始扇區(qū)號及占用扇區(qū)數(shù),四是主扇區(qū)分配表的起始扇區(qū)號及中用扇區(qū)數(shù),五是扇區(qū)分配表的扇區(qū)號,其它內(nèi)容所有的復(fù)合文檔都是一樣的,從正常文件中拷過來就行。 以上所說五項內(nèi)容需要計算,現(xiàn)在介紹方法一:確定目錄起始扇區(qū)號打開“損壞的實驗文檔”,將文件解釋為硬盤,搜索字符串“ROOT”(unicode)如圖:搜索到結(jié)果,軟件自動定位到字符串的位置,如圖:看狀態(tài)欄:該字符串位置是43扇區(qū),第一個值確定了,目錄起始扇區(qū)是43,第一項完成。由于復(fù)合文檔在扇區(qū)編號時不包括文件頭,0扇區(qū)從512字節(jié)處開始,所以目錄起始扇區(qū)應(yīng)該是42,下面就不再進行說明。二:確定扇區(qū)分配表(SAT)我們需要通

7、過扇區(qū)的內(nèi)容來確定某個扇區(qū)是不是扇區(qū)分配表(SAT)該文件總共有47個扇區(qū),文件頭占一個扇區(qū),剩下46扇區(qū),所以,扇區(qū)分配表中的值應(yīng)該大于0小于等于46,另外還有一些特殊的值,值FEFFFFFF表示扇區(qū)鏈結(jié)束,值FDFFFFFF表示該扇區(qū)被SAT占用,值FFFFFFFF表示該扇區(qū)為空閑??次募?扇區(qū):數(shù)據(jù)如下:該扇區(qū)是不是扇區(qū)分配表(SAT)呢?分析里面的數(shù)據(jù)(4個字節(jié)一個項,因為扇區(qū)編號是用4個字節(jié)來存放的),第一項是ECA5C100,低位在前高位在后,換過來就是00C1A5EC,換成十進制為12690924,文件最大為46扇區(qū),因此該扇區(qū)不可能是扇區(qū)分配表(SAT)??吹?扇區(qū),第三項0

8、0007A03不滿足條件,因此不是扇區(qū)分配表。重復(fù)該過程,1-41扇區(qū)均不符合條件,分析到42扇區(qū),看該扇區(qū)數(shù)據(jù): 第一項0100000,第二項02000000,第三項03000000,等等,該扇區(qū)內(nèi)的所有項的值要么小于46,要么是FEFFFFFF,要么是FDFFFFFF,要么是FFFFFFFF,符合扇區(qū)分配表的特點!記下該扇區(qū)號。繼續(xù)分析剩下的扇區(qū),直到結(jié)束!在本例中,文件總共47扇區(qū)大小,而每個扇區(qū)512字節(jié),4個字節(jié)放一個扇區(qū)編號,因此,一個扇區(qū)分配表可以存放128個扇區(qū)編號,所以說該文件只有一個扇區(qū)用來存放扇區(qū)分配表(SAT)。第二項完成。第三:確定主扇區(qū)分配表(MSAT)的起始扇區(qū)號

9、主扇區(qū)分配表(MSAT)中存放的是扇區(qū)分配表(SAT)所在的扇區(qū)號,本例中,扇區(qū)分配表(SAT)只有一個,根據(jù)復(fù)合文檔的格式定義,文件頭中可以存放109項SAT值,也就是說,只要文件的扇區(qū)分配表不大于109個,就不需要主扇區(qū)分配表,嚴格的說是不需要額外的主扇區(qū)分配表,因為文件頭就可以容納下了,主扇區(qū)分配表(MSAT)是在SAT多于109項時,剩下的值用指定的扇區(qū)來記錄!根據(jù)定義,無額外主扇區(qū)分配表(MSAT)時,主扇區(qū)分配表的起始扇區(qū)號為-2,十六進制表示為FEFFFFFF,它占用的扇區(qū)數(shù)為0,第三項完成第四:確定短流扇區(qū)分配表的起始扇區(qū)號及占用的扇區(qū)數(shù)短流扇區(qū)分配表(SSAT)是復(fù)合文檔中的

10、另一個概念,短流數(shù)據(jù)用短流扇區(qū)來存放,短流數(shù)據(jù)存放的位置通過短流扇區(qū)分配表來確定。一個文件有沒有短流數(shù)據(jù)可以查看目錄,如圖: 根據(jù)復(fù)合文檔定義,目錄的第一表項0X74處的4個字節(jié)表示的是短流的起始扇區(qū)(十六進制2D000000值為45),0X48處的4個字節(jié)為短流的大?。ㄊM制800000值為128)。而短流扇區(qū)分配表(SSAT)一般位于短流起始扇區(qū)的前一個扇區(qū),所以短流扇區(qū)分配表的起始扇區(qū)為45-1=44扇區(qū),它只占用一個扇區(qū)。44扇區(qū)的內(nèi)容如下圖:第四項完成。第五:確定文件頭中的扇區(qū)分配表編號本例子只有一個扇區(qū)分配表(SAT),因此文件頭中只用填寫一個值。到此,需要重建文件頭的所有值基本

11、都確定了,下面的工作就是改寫文件頭。定位到0X2C處,2C-2F為扇區(qū)分配表(SAT)所占用的扇區(qū)數(shù),本例占用1個扇區(qū),轉(zhuǎn)換成十六進制為(01000000,低位在前高位在后),操作完成后如下圖:定位到0X30處,4字節(jié)表示目錄所在的扇區(qū)編號,經(jīng)前面的計算,目錄所在的扇區(qū)編號為42,換成十六進制為2A000000,把該值寫到此處,操作完成后如下圖:定位到0X3C處,4字節(jié)表示短流扇區(qū)分配表(SSAT)的起始扇區(qū)號,本例短流扇區(qū)為44,十六進制值為2C000000,改寫后,如下圖:定位到0X40,4字節(jié)表示短流扇區(qū)分配表占用的扇區(qū)數(shù),本例占用1個扇區(qū),應(yīng)填寫01000000,操作完成后如下圖:定位到0X44處,4字節(jié)表示MSAT起始扇區(qū)編號,本例沒有MSAT,填寫-2,十六進制值為FEFFFFFF,定位到0X48處,4字節(jié)表示MSAT占用的扇區(qū)數(shù),本例為0,填寫00000000操作完成后如下圖:定位到0X4C處,此處后的每4個字節(jié)填寫一項SAT扇區(qū)編號,本例只有一個SAT,位置為41,轉(zhuǎn)換成十六進制為29000000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論