windows PE/COFF

COFF -> ELF/PE

书中,目标文件默认为COFF,可执行文件默认为PE;

.text -> .code   (visual c++)
.text -> CODE (Borland)

段名没有实际意义,除了链接脚本控制链接的时候;

sample.c --cl--> sample.obj --linker--> sample.exe

使用dumpbin来查看obj文件;

COFF文件格式

coff_struct

PE文件格式

pe_struct

IMAGE_NT_HEADERS是真正的PE文件头,其偏移信息保存在IMAGE_DOS_HEADER中,该信息为e_lfanew成员,如果为0,表示该PE文件为DOSMZ文件,将会用DOS子系统执行,如果不为0,如上所示,则代表偏移;

IMAGE_NT_HEADERS中,包含一个标记(0x00004550,即PE\0\0)以及两个结构体(Image Header、Image Optional Header);

类似于ELF文件的信息放在了数据目录Data Directory中;