Win32平臺(tái)下標(biāo)準(zhǔn)文件格式為PE拿撩,PE=Protable
Executable瀑凝。
PE和ELF同根同源都是從COFF(Common Object File Format)發(fā)展而來(lái)蛋辈。
PE文件被裝載時(shí)直接映射到進(jìn)程虛擬空間中運(yùn)行,它是進(jìn)程虛擬空間的映像朋凉,所以PE很多時(shí)候被稱為映像文件萧芙。
COFF文件結(jié)構(gòu)和ELF文件結(jié)構(gòu)大體相同,只是前者多了兩個(gè)段——drectve段和debug$S段寓搬。
drectve很顯然就是directive的某種縮寫(xiě)形式珍昨,而directive是指令的意思,因此它是編譯器傳遞給鏈接器的鏈接指令句喷。
在COFF中所有以debug開(kāi)頭的段都是調(diào)試信息段镣典。
debug$S表示與符號(hào)相關(guān)的調(diào)試信息段。
還有其他段可參見(jiàn)P165唾琼。
與ELF不同的是COFF還會(huì)為字符串常量自動(dòng)生成符號(hào)兄春。
PE比COFF多了兩個(gè)主要的變化:
1、PE文件的開(kāi)始部分是DOS MZ可執(zhí)行文件格式的文件頭和樁代碼锡溯。
2赶舆、COFF格式中的IMAGE_FILE_HEADER被擴(kuò)展成為IMAGE_NT_HEADERS。
DOS和WINDOWS下的可執(zhí)行文件格式都是exe趾唱,但是DOS下的卻是MZ格式涌乳。