PE文件结构体-IMAGE_OPTIONAL_HEADER】的更多相关文章

typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // WORD Magic; // 标志字, ROM 映像(0107h),32位普通可执行文件(010Bh),64位可执行文件(0x20B). BYTE MajorLinkerVersion; // 链接程序的主版本号 BYTE MinorLinkerVersion; // 链接程序的次版本号 DWORD SizeOfCode; // 所有含代码的节的总大小 DWORD…
IMAGE_OPTIONAL_HEADER结构体最后一个成员是数组结构,大小为16,每个元素都是一个IMAGE_DATA_DIRECTORY结构体 typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; /**指向某个数据的相对虚拟地址 RAV 偏移0x00**/ DWORD Size; /**某个数据块的大小 偏移0x04**/ } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 在这…
在PE文件头与原始数据之间存在一个区块表(Section Table),它是一个IMAGE_SECTION_HEADER结构数组, 区块表包含每个块在映像中的信息(如位置.长度.属性),分别指向不同的区块实体. 全部有效结构的最后以一个空的IMAGE_SECTION_HEADER结构作为结束,所以节表中总的IMAGE_SECTION_HEADER结构数量等于节的数量加一. 另外,节表中 IMAGE_SECTION_HEADER 结构的总数总是由PE文件头NumberOfSections 字段来指…
struct _IMAGE_FILE_HEADER { WORD Machine; //运行平台 WORD NumberOfSections; //文件的区块数目 DWORD TimeDateStamp; //文件创建日期和时间 DWORD PointerToSymbolTable; //指向符号表(用于调试) DWORD NumberOfSymbols; //符号表中符号个数(用于调试) WORD SizeOfOptionalHeader; //IMAGE_OPTIONAL_HEADER结构的…
COFF/PE文件结构 原创 C++应用程序在Windows下的编译.链接(二)COFF/PE文件结构 2.1概述 在windows操作系统下,可执行文件的存储格式是PE格式:在Linux操作系统下,可执行文件的存储格式的WLF格式.它们都是COFF格式文件的变种,都是从COFF格式的文件演化而来的. 在windows平台下,目标文件(.obj),静态库文件(.lib)使用COFF格式存储:而可执行文件(.exe),动态链接库文件(.dll)使用PE格式存储.静态库文件其实就是一堆目标文件的集合…
一.PE文件结构 PE即Portable Executable,是win32环境自身所带的执行体文件格式,其部分特性继承自Unix的COFF(Common Object File Format)文件格式.PE表示该文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何Win32平台的PE装载器也能识别和使用该文件格式的文件. 所有Win32执行体(除了VxD和16位的DLL)都使用PE文件格式,如EXE文件.DLL文件等,包括NT的内核模式驱动程序(Kernel Mo…
PE文件结构详解(四)PE导入表讲 了一般的PE导入表,这次我们来看一下另外一种导入表:延迟导入(Delay Import).看名字就知道,这种导入机制导入其他DLL的时机比较“迟”,为什么要迟呢?因为有些导入函数可能使用的频率比较低,或者在某些特定的场 合才会用到,而有些函数可能要在程序运行一段时间后才会用到,这些函数可以等到他实际使用的时候再去加载对应的DLL,而没必要再程序一装载就初始化好. 这个机制听起来很诱人,因为他可以加快启动速度,我们应该如何利用这项机制呢?VC有一个选项,可以让我…
PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPORT,即导入表. 也许大家注意到过,在IMAGE_DATA_DIRECTORY中,有几项的名字都和导入表有关系,其中包括:IMAGE_DIRECTORY_ENTRY_IMPORT,IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT,IMAGE_DIRECTORY_ENTRY_IAT…
PE文件结构(四) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 输出表 一般来说输出表存在于dll中.输出表提供了 文件里函数的名字跟这些函数的地址, PE装载器通过输出表来改动IAT. IMAGE_OPTIONAL_HEADER中的 DataDirectory[0] 提供了输出表的RVA.输出表是以一个IMAGE_EXPORT_DIRECTORY结构 開始的. IMAGE_EXPORT_DIRECTORY结构: typedef struct _IMAGE_EXPORT_DIREC…
PE文件结构(五岁以下儿童) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 基址重定位 链接器生成一个PE文件时,它会如果程序被装入时使用的默认ImageBase基地址(VC默认exe基地址00400000h.dll基地址10000000h),而且会把代码中全部指令中用到的地址都使用默认的基地址(比如 程序代码中 push 10001000,就是把10000000h当做了基地址,把push 10001000写入到文件里).如果一个exe程序中一个dll装载时的地址与其他dll地址发生…