PE文件格式(2)
2007-01-14 20:15:04 来源:WEB开发网下面一个成员是'PhysicalAddress'和'VirtualSize'的32位联合体.在目标文件,该地址是内容被重定位的地址,在可执行文件内是内容的尺寸。实际上该域好像没有被使用,有的链接器填入尺寸有的链接器填入地址,有的链接器填入0。
下一个成员是'VirtualAddress',32位,保存当节的数据加载入内存时的RVA。
然后是32位'SizeOfRawData',是四舍五入到下个FileAlignment'倍数的大小。
下一个是'PointerToRawData',32位,它是从文件起始到节数据的偏移量。如果是0,节数据不包含在文件内,在加载时被确定。
然后是'PointerToRelocations',32位,和'PointerToLinenumbers',32位,'NumberOfRelocations',16位,'NumberOfLinenumbers',16位.所有这些信息仅仅用于目标文件。可执行文件有一个特殊的基准重定位目录,如果存在行号信息,一般包含在特殊目的的调试段或其他。
最后一个是32位的'Characteristics',它是一组标志描述如何处理节的内存。
bit5(IMAGE_SCN_CNT_CODE),置1,节内包含可执行代码。
bit6(IMAGE_SCN_CNT_INITIALIZED_DATA)置1,节内包含的数据在执行前是确定的。
bit7(IMAGE_SCN_CNT_UNINITIALIZED_DATA)置1,本节包含未初始化的数据,执行前即将被初始化为0。一般是BSS.
bit9(IMAGE_SCN_LNK_INFO)置1,节内不包含映象数据除了注释,描述或者其他文档外,是一个目标文件的一部分,可能是针对链接器的信息。比如哪个库被需要。
bit11(IMAGE_SCN_LNK_REMOVE)置1,在可执行文件链接后,作为文件一部分的数据被清除。
bit12(IMAGE_SCN_LNK_COMDAT)置1,节包含公共块数据,是某个顺序的打包的函数。
赞助商链接