标签:file 区块 代码段 读数 处理器 date head EDA char
struct _IMAGE_FILE_HEADER { WORD Machine; //运行平台 WORD NumberOfSections; //文件的区块数目 DWORD TimeDateStamp; //文件创建日期和时间 DWORD PointerToSymbolTable; //指向符号表(用于调试) DWORD NumberOfSymbols; //符号表中符号个数(用于调试) WORD SizeOfOptionalHeader; //IMAGE_OPTIONAL_HEADER32结构的大小 WORD Characteristics; //文件属性 };
共20个字节:
成员Machine,占2个字节,表示该文件运行所要求的CPU。对于Intel i386平台,该值是“4C01”。
成员NumberOfSections,占2个字节,表示该文件中段的总数,我们这里计划写3个段,(.text(代码段)、.rdata(只读数据段)、 .data(全局变量数据段))。所以此处值是“0300”。
成员TimeDateStamp,占4个字节,表示文件创建日期和时间,从1970.1.1 00:00:00以来的秒数,我们这里填“0000”即可。
成员PointerToSymbolTable,占4个字节,表示符号表的指针,主要用于调试,在这里填“0000”。 成员NumberOfSymbols,占4个字节,表示符号的数目,主要用于调试,在这里填“0000”。
成员SizeOfOptionalHeader,占2个字节,表示后面的“PE文件可选头 ”部分所占空间大小,我们已经知道“PE文件可选头 ”的大小是224 byte,转换成十六进制就是E0,所以这里的值为“E000”
成员Characteristics,占2个字节,表示关于文件信息的标记,比如文件是exe还是dll。这个值实际上是二进制位进行或运算得到的值。
各二进制位表示的意义如下:
标签:file 区块 代码段 读数 处理器 date head EDA char
原文地址:https://www.cnblogs.com/a-s-m/p/12242545.html