1. PE程序是什麼來的
WinPE只是有限功能的Mini操作系統
它是微軟提供給OEM廠商用來開發驅動和調試硬體的一個命令行方式(有WIN2000/XP/2003等不同版本),實質上就是只提供了WINNT基本內核和基本驅動的操作系統,主要特點是:只有100多M,可直接在光碟上運行,無須訪問硬碟。以前WINPE並不出名,後來,第三方軟體ERD(模擬WINXP界面)的出現,改變了WINPE的命運,使其一舉起成名,
很多並不是為 PE 准備的軟體也是可以在 PE 中運行的,用一個笨辦法來判斷一個普通的綠軟是否可以直接在 PE 中運行,啟動 PE 環境,找到該軟體所在目錄,復制一份備份,然後將該目錄和目錄下的所有文件屬性改為只讀,直接雙擊目錄內的可執行文件,看能否運行,運行後各項功能都使用一下看是否正常,如無異常,則可按上面的方法簡單加入。
2. 程序編程里的PE頭是什麼
Windows操作系統家族增加的Windows NT為開發環境和應用程序本身帶來了很大的改變,這之中一個最為重大的當屬PE文件格式了。新的PE文件格式主要來自於UNIX操作系統所通用的COFF 規范,同時為了保證與舊版本MS-DOS及Windows操作系統的兼容,PE文件格式也保留了MS-DOS中那熟悉的MZ頭部。
在Windows下,程序和庫都是PE(Portable Excutable)格式文件,可以被內存映射到一個進程中。
載入一個Windows可執行程序或者DLL與載入一個動態鏈接的ELF程序相似,盡管在Windows下動態鏈接器是操作系統內核的一部分。
PE文件可以包含有重定位項。通常一個可執行程序不會包含可重定位項,因此必須將它們映射到在鏈接時確定的地址上。DLL都包含有重定位項,並且在它們被鏈接進來的地址空間無效的時候都會被重定位(微軟將運行時重定位稱為rebasing)。
所有的PE文件,包括可執行程序和DLL,都有一個入口點,在DLL被載入、被卸載,以及每一次進程的線程attach或deattach這個DLL的時候,載入器都會調用DLL的入口點(每一次載入器都會傳遞一個參數說明調用原因)。這就可以提供類似ELF的.init和.fini區段的鉤子代碼來實現初始化和終結操作。
簡而言之,PE頭就是windows中特有的可執行文件頭.