pe[PE——Windows預安裝環境]

PE,即Windows PE(Windows Preinstallation Environment),Windows預安裝環境。微軟在2002年7月22日發布,帶有限服務的最小Win32子系統,基於以保護模式運行的Windows XP Professional核心。 Windows預先安裝環境(Microsoft Windows Preinstallation Environment,簡稱Windows PE或WinPE)是簡化版的Windows XP、Windows Server 2003、Windows Vista、Windows 7 、Windows 8和Windows 10。WinPE是以光碟或其他可攜設備作媒介。WinPE作用是方便大企業作出工作站和伺服器的企劃、給“原始設備製造商”(OEM)製造自定義的Windows作業系統、取代MS-DOS的磁片。Windows PE可理解為Windows的LiveCD。

概述

在Windows系統下的執行檔的一種(還有NE、LE),是微軟設計、TIS(Tool Interface Standard,工具接口標準)委員會批准的一種執行檔格式。PE的意思是Portable Executable(可移植可執行)。所有Windows下的32位或64位執行檔都是PE檔案格式,其中包括DLL、EXE、FON、OCX、LIB和部分SYS檔案。

基本結構

DOS-stub(DOS-頭)

DOS-根的概念很早從16位windows的執行檔(當時是“NE”格式)時就廣為人知了。根原來是用於OS/2系統的執行檔的,也用於自解壓檔案檔案和其它的應用程式。對於PE檔案來說,它是一個總是由大約100個位元組所組成的和MS-DOS 2.0兼容的可執行體,用來輸出像“This program needs windows NT”之類的錯誤信息。

你可以通過確認DOS-頭部分是否為一個IMAGE_DOS_HEADER(DOS頭)結構來認出DOS-根,它的前兩個位元組必須為連續的兩個字母“MZ”(有一個#define IMAGE_DOS_SIGNATURE的定義是針對這個WORD單元的)。

你可以通過跟在後面的簽名來將一個PE二進制檔案和其它含有根的二進制檔案區分開來,跟在後面的簽名可由頭成員'e_lfanew'(它是從位元組偏移地址60處開始的,有32位元組長)所設定的偏移地址找到。對於OS/2系統和Windows系統的二進制檔案來說,簽名是一個16位的word單元;對於PE檔案來說,它是一個按照8位位元組邊界對齊的32位的longword單元,並且IMAGE_NT_SIGNATURE(NT簽名)的值已由#defined定義為0x00004550(即字母“PE/0/0”)。

file-header(檔案頭)

要到達IMAGE_FILE_HEADER(檔案頭)結構,請先確認DOS-頭“MZ”(起始的2個位元組),然後找出DOS-根的頭部的成員“e_lfanew”,並從檔案開始處跳過那么多的位元組。在核實你在那裡找到的簽名後,IMAGE_FILE_HEADER(檔案頭)結構的檔案頭就緊跟其後開始了。

optional header(可選頭)

緊跟在檔案頭後面的就是IMAGE_OPTIONAL_HEADER(儘管它名叫“可選頭”,它卻一直都在那裡)。它包含有怎樣去準確處理PE檔案的信息。

data directories(數據目錄)

IMAGE_NUMBEROF_DIRECTORY_ENTRIES (16)(映象檔案目錄項數目)個IMAGE_DATA_DIRECTORY(映象檔案數據目錄)數組。這些目錄中的每一個目錄都描述了一個特定的、位於目錄項後面的某一節中的信息的位置(32位的RVA,叫“VirtualAddress(虛擬地址)”)和大小(也是32位,叫“Size(大小)”)。

例如,安全目錄能在索引4中給定的RVA處發現並具有索引4中給定的大小。

section headers(節頭)

節由兩個主要部分組成:首先,是一個節描述(IMAGE_SECTION_HEADER[意為“節頭”]類型的),然後是原始的節數據。因此,我們會在數據目錄後發現一“NumberOfSections”個節頭組成的數組,它們按照各節的RVA排序。

sections(節數據)

所有的節在載入記憶體後都按“SectionAlignment”(節對齊)對齊,在檔案中則以“FileAlignment”(檔案對齊)對齊。節由節頭中的相關項來描述:在檔案中你可通過“PointerToRawData”(原始數據指針)來找到,在記憶體中你可通過“VirtualAddress”(虛擬地址)來找到;長度由“SizeOfRawData”(原始數據長度)決定。

根據節中包含的內容,可分為好幾種節。大多數(並非所有)情況下,節中至少由一個數據目錄,並在可選頭的數據目錄數組中有一個指針指向它。

相關詞條

熱門詞條

聯絡我們