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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、過(guò)扇區(qū)的內(nèi)容來(lái)確定某個(gè)扇區(qū)是不是扇區(qū)分配表(SAT)該文件總共有47個(gè)扇區(qū),文件頭占一個(gè)扇區(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個(gè)字節(jié)一個(gè)項(xiàng),因?yàn)樯葏^(qū)編號(hào)是用4個(gè)字節(jié)來(lái)存放的),第一項(xiàng)是ECA5C100,低位在前高位在后,換過(guò)來(lái)就是00C1A5EC,換成十進(jìn)制為12690924,文件最大為46扇區(qū),因此該扇區(qū)不可能是扇區(qū)分配表(SAT)??吹?扇區(qū),第三項(xiàng)0

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論