接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构,正如名字的意思,这是一个可选映像头,是一个可选的结构,但是呢,实际上上节课我们讲解的 IMAGE_FILE_HEADER 结构远远不足以来定义 PE 文件的属性。因此,这些属性在 IMAGE_OPTIONAL_HEADER 结构中进行定义。 因此这两个结构联合起来,才是一个完整的 “PE文件结构” 。
PE文件结构体-IMAGE_OPTIONAL_HEADER typedefstruct_IMAGE_OPTIONAL_HEADER {///Standard fields.//WORD Magic;//标志字, ROM 映像(0107h),32位普通可执行文件(010Bh),64位可执行文件(0x20B)。BYTE MajorLinkerVersion;//链接程序的主版本号BYTE MinorLinkerVersion;//链接程序的次版本号DWORD SizeOfCode;//所...
IMAGE_OPTIONAL_HEADER中的 DataDirectory[0] 提供了输出表的RVA。输出表是以一个IMAGE_EXPORT_DIRECTORY结构 開始的。 IMAGE_EXPORT_DIRECTORY结构: 代码语言:javascript 复制 typedef struct _IMAGE_EXPORT_DIRECTORY{DWORDCharacteristics;//未使用 DWORD TimeDateStamp; //文件生成的时间 WORD MajorVersion; //主版本。
接着我们来谈谈IMAGE_OPTIONAL_HEADER 结构,正如名字的意思,这是一个可选映像头,是一个可选的结构,但是呢,实际上上节课我们讲解的 IMAGE_FILE_HEADER 结构远远不足以来定义 PE 文件的属性。因此,这些属性在 IMAGE_OPTIONAL_HEADER 结构中进行定义。 因此这两个结构联合起来,才是一个完整的 “PE文件结构” 。 ...
PE文件头是一个结构体(IMAGE_NT_HEADERS32),里面还包含两个其它结构体,占用4B + 20B + 224B typedef struct _IMAGE_NT_HEADERS { DWORD Signature; // PE文件标识 4Bytes IMAGE_FILE_HEADER FileHeader; // 40 Bytes IMAGE_OPTIONAL_HEADER32 OptionalHeader; // 224 Bytes PE32可执行文件,不讨论PE32+的...
因此,这些属性在 IMAGE_OPTIONAL_HEADER 结构中进行定义。 因此这两个结构联合起来,才是一个完整的 “PE 文件结构” 。 那么我们接着就应该顺理成章地来谈谈 IMAGE_OPTIONAL_HEADER32 结构的定义: (啥?结构不会,先 看看小甲鱼童鞋的 《零基础入门学习 C 语言》 关于结构方面的章节吧~) typedef struct _...
节区的偏移:节的起始地址在磁盘文件中是按照IMAGE_OPTIONAL_HEADER结构的FileAhgnment字段的值对齐的,而被加载到内存中时是按照同一结构中的SectionAlignment字段的值对齐的,两者的值可能不同,所以一个节被装入内存后相对于文件头的偏移和在磁盘文件中的偏移可能是不同的。
将VA(虚拟地址)转换为RVA(相对虚拟地址)是很容易的,RVA(相对虚拟地址)为VA(虚拟地址)减去IMAGE_OPTIONAL_HEADER结构体中的ImageBase(映像文件的装载虚拟地址)字段的值,即RVA = VA – ImageBase = 0x00406030 – 0x00400000 = 0x0000 6030。由于IMAGE_OPTIONAL_...
IMAGE_OPTIONAL_HEADER32 OptionalHeader; // 扩展PE头 } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; 1. 2. 3. 4. 5. 第一个成员就是PE标识,该标识不能破坏,因为操作系统在启动一个程序的时候会检测这个标识。 标准PE头 标准PE头是PE头的第二个成员,它是如下所示的结构体: ...
将VA(虚拟地址)转换为RVA(相对虚拟地址)是很容易的,RVA(相对虚拟地址)为VA(虚拟地址)减去IMAGE_OPTIONAL_HEADER结构体中的ImageBase(映像文件的装载虚拟地址)字段的值,即RVA = VA – ImageBase = 0x00406030 – 0x00400000 = 0x0000 6030。由于IMAGE_OPTIONAL_HEADER中的SectionAlignment和FileAlignment的值相同,因...