peeringinsidethepe中文版

peeringinsidethepe中文版

ID:8801044

大小:269.50 KB

頁數(shù):25頁

時間:2018-04-08

peeringinsidethepe中文版_第1頁
peeringinsidethepe中文版_第2頁
peeringinsidethepe中文版_第3頁
peeringinsidethepe中文版_第4頁
peeringinsidethepe中文版_第5頁
資源描述:

《peeringinsidethepe中文版》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、翻譯:JasonSun(木水魚)2004年5月10日[譯注:僅供大家學(xué)習(xí)使用,您在復(fù)制或使用此文檔時請保留這個文件頭]PeeringInsidethePE:ATouroftheWin32PortableExecutableFileFormatMattPietrek1994年3月MattPietrek是WindowsInternals(Addison-Wesley,1993)的作者。他就職于Nu-Mega技術(shù)有限公司,可通過CompuServe:71774,362聯(lián)系到他。這篇文章出自1994年3月發(fā)行的Micro

2、soft系統(tǒng)期刊。版權(quán)所有﹫1994MillerFreeman,Inc.保留所有權(quán)利。未經(jīng)MillerFreeman同意,這篇文章的任何部分不得以任何形式被復(fù)制(除了在評論文章里以摘要引用)。一個操作系統(tǒng)的可執(zhí)行文件的格式在很多方面是這個操作系統(tǒng)的一面鏡子。雖然學(xué)習(xí)一個可執(zhí)行文件格式不是大多數(shù)程序員的首要任務(wù),但是從中你可學(xué)到大量的知識。這篇文章中,我將給出Microsoft為他們的基于Win32的系統(tǒng)所設(shè)計的PE文件格式的詳細(xì)說明??梢灶A(yù)知在未來,PE文件格式在Microsoft的所有操作系統(tǒng)包括Windows

3、2000中都將扮演著很重要的角色。如果你在使用Win32s或WinNT,那么你已經(jīng)在使用PE文件了。甚至你只是在Windows3.1下用VisualC++編程,你也已在使用PE文件了(VisualC++的32位DOS擴(kuò)展組件使用此格式)。簡而言之,PE格式已得到普遍應(yīng)用并且在不短的將來也不會取消?,F(xiàn)在是時間找出這種新的可執(zhí)行文件格式為操作系統(tǒng)所帶來的影響了。我不會讓你盯住無窮無盡的16進(jìn)制Dumps和詳細(xì)討論頁面中每個單獨位的重要性。代替的,我將介紹PE文件格式中內(nèi)含的概念并且把它們和你每天都會遇到的東西聯(lián)系起來

4、。例如,線程局部變量的概念,比如declspec(thread)inti;它使我快要發(fā)瘋了,直到我明白它是怎樣在可執(zhí)行文件里優(yōu)雅而簡單的實現(xiàn)的。既然你們大多數(shù)都有使用16位Windows的背景,我將把Win32PE文件格式的結(jié)構(gòu)和與其等價的16位的NE文件格式聯(lián)系起來。除了一個不同的可執(zhí)行文件格式之外,Microsoft還引入了一個由它的編譯器和匯編器生成的新的目標(biāo)模塊格式。這個新的OBJ文件格式和PE格式有許多相同的東西。為了找到這個新的OBJ文件格式的文檔我做了許多徒勞的搜索。所以我以自己的理解來解釋它,并且

5、除了PE格式之外我會在這里描述它其中的一部分。大家都知道WindowsNT繼承了VAX?VMS?和UNIX?。許多WindowsNT的創(chuàng)建者在進(jìn)入Microsoft之前都在那些平臺上進(jìn)行設(shè)計和編碼。當(dāng)開始設(shè)計WindowsNT時,很自然的他們設(shè)法使用以前編寫的并經(jīng)過測試的工具以最小化項目啟動時間。這些工具生成的并且與之一起工作的可執(zhí)行文件和目標(biāo)模塊格式被叫做COFF(CommonObjectFileFormat的首字母縮寫)。COFF格式自身是一個好的起點,但需要被擴(kuò)展以滿足一個現(xiàn)代操作系統(tǒng)如WindowsNT或

6、者Windows95的所有需要。這個擴(kuò)展的結(jié)果就是PE格式。它被稱為“可移植”是因為WindowsNT在不同的平臺(x86,MIPS?,Alpha,等等)上的所有實現(xiàn)都使用這個相同的可執(zhí)行格式。當(dāng)然,也有不同的地方比如CPU指令的二進(jìn)制編碼。重要的是操作系統(tǒng)加載器和程序設(shè)計工具不必為每種CPU完全重寫。Microsoft拋棄了現(xiàn)存的32位工具和文件格式的事實證明了他們想讓W(xué)indowsNT升級并且運行的更快的決心。為16位Windows編寫的虛擬設(shè)備驅(qū)動使用一個不同的32位文件布局-LE格式-它在WindowsN

7、T出現(xiàn)很早以前就存在了。比那更重要的是OBJ格式的改變。在WindowsNT的C編譯器以前,所有的Microsoft編譯器使用IntelOMF(ObjectModuleFormat)規(guī)范。以前提到,Microsoft的Win32編譯器生成COFF格式的OBJ文件。一些Microsoft的競爭者例如Borland和Symantec選擇放棄COFF格式的OBJs而堅持使用IntelOMF格式。結(jié)果導(dǎo)致生成OBJs或LIBs的公司為了使用不同的編譯器就必須回去為不同的編譯器發(fā)布他們產(chǎn)品的不同版本(如果他們還沒有那么做)

8、。PE格式在WINNT.H頭文件中被文檔化了。大約在WINNT.H文件的中間一個標(biāo)題為“ImageFormat”的區(qū)域。這塊區(qū)域的開頭是我們熟悉的老的MS-DOSMZ格式和NE格式文件頭接下來才是更新的PE格式的信息。WINNT.H提供PE文件用到的原始數(shù)據(jù)結(jié)構(gòu)的定義,但只包含了很少有用的以助于理解這些結(jié)構(gòu)和標(biāo)志的意思的注釋。當(dāng)使用WINNT.H編碼時,類似這樣的表達(dá)式很

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。