学习笔记----COFF文件结构

本文详细介绍了COFF文件结构,包括属性证书、日期/时间戳等概念,并通过VS编译结果示例解析了文件头、节头表、符号表和字符串表的内容。此外,还提到了重定位信息在生成目标文件中的作用,是学习编译器知识的重要参考资料。
摘要由CSDN通过智能技术生成

时隔一个月的假期(自从上一篇文章开始我就开始着手于写编译器,由于是以学习为目的,所以我自己写的编译器的数据结构和书上的完全不同,导致花费了很多时间,终于今天晚上写完了符号表的内容终于到了我的主要目的COFF文件结构)

这章主要是记录COFF文件结构的,因为PE文件结构和COFF文件结构有很多相似的地方,所以也会记录的比较详细。


概念部分的最仔细的说明:http://blog.csdn.net/diamont/article/details/4291131
这个文章很大部分内容实际上就是对这篇文章做简化解释和说明的


基本概念(名词):
属性证书:就是将一个可以用于校验的声明和映像关联器来的证书。
日期/时间戳:由于不同目的而用于PE或COFF文件中好几个地方的戳。
文件指针:某文件在被处理前的磁盘位置
映像文件:可执行文件(EXE或DLL),可以被认为是内存映像
目标文件:传入链接器进行处理的文件,链接器生成一个映像文件
RVA:相对虚拟地址,对于映像文件来说,他是某项内容被加载进内存后的地址减去映像文件地址的基地址;对于目标文件来说,因为内存的位置香味分配,所以RVA没有意义,但是RVA的节是依然保存的并且会在后面链接是重定位。
节:COFF,PE文件中代码或数据的基本单元
VA:和RVA相似,但是不减去映像文件基地址


下面是COFF文件头的标准格式:
WORD字 DWORD = double word 双字,一个字大小是两字节,也就是16位,DWORD就是4字节

typedef struct _IMAGE_FILE_HEADER
{
    WORD Machine;                    //一个标识目标机器类型的数字
    WORD NumberOfSections;           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值