共找到24條詞條名為PE的結果 展開
PE
PE——Windows預安裝環境
PE,即Windows PE(Windows Preinstallation Environment),Windows預安裝環境。微軟在2002年7月22日發布,帶有限服務的最小Win32子系統,基於以保護模式運行的WindowsXP Professional內核。
Windows預先安裝環境(Microsoft Windows Preinstallation Environment,簡稱WindowsPE或WinPE)是簡化版的WindowsXP、Windows Server2003、WindowsVista、Windows7、Windows8和Windows10。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”(原始數據長度)決定。
根據節中包含的內容,可分為好幾種節。大多數(並非所有)情況下,節中至少由一個數據目錄,並在可選頭的數據目錄數組中有一個指針指向它。