[读书笔记]程序员的自我修养(5)

本文介绍了使用VS2005编译器时涉及到的PE(可执行)和COFF(通用对象文件格式)的相关概念。详细解析了PE文件的结构及其在进程虚拟空间中的映射原理,并对比了PE文件头与COFF文件头的主要区别。

第五章 Windows PE/COFF

1. VS2005编译器cl,链接器link,可执行文件查看器dumpbin等
映像:因为PE文件在装载的时候被直接映射到进程的虚拟空间中运行,它是进程的虚拟空间的映像。所以PE可执行文件很多时候被叫做映像文件。

2. COFF Object File Format
Image Header   IMAGE_FILE_HEADER
Section Table IMAGE_SECTION_HEADER[]
.text
.data
.drective  //编译器传递给链接器的指令,即如何链接这个目标文件
.debug$S //表示包含的是符号(Symbol)相关的调试信息段
other sections
Symbol Table

注:我们可以在cl编译器参数里加/Zl来关闭默认C库链接指令

PE文件头与COFF相比有如下变化:
文件最开始不是COFF头,而是DOS MZ可执行文件格式文件头和桩代码(DOS MZ File Header and Stub)
原来的COFF文件头中的IMAGE_FILE_HEADER部分扩展为PE文件头IMAGE_NT_HEADERS,这个结构包括了原来的Image Header及新增的PE扩展头部结构(PE Optional Header)

参见“WinNT.h”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值