WEB开发网
开发学院软件开发VC PE文件格式详解(上) 阅读

PE文件格式详解(上)

 2006-07-20 11:43:30 来源:WEB开发网   
核心提示: PE可选头部PE可执行文件中接下来的224个字节组成了PE可选头部,虽然它的名字是“可选头部”,PE文件格式详解(上)(8),但是请确信:这个头部并非“可选”,而是“必需”的,为了不让你对所有这些域感到厌烦,我会仅仅讨

PE可选头部

PE可执行文件中接下来的224个字节组成了PE可选头部。虽然它的名字是“可选头部”,但是请确信:这个头部并非“可选”,而是“必需”的。OPTHDROFFSET宏可以获得指向可选头部的指针: //PEFILE.H
#define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a + \
            ((PIMAGE_DOS_HEADER)a)->e_lfanew + \
            SIZE_OF_NT_SIGNATURE + \
            sizeof(IMAGE_FILE_HEADER)))
  
可选头部包含了很多关于可执行映像的重要信息,例如初始的堆栈大小、程序入口点的位置、首选基地址、操作系统版本、段对齐的信息等等。IMAGE_OPTIONAL_HEADER结构如下: //WINNT.H
typedef struct _IMAGE_OPTIONAL_HEADER {
 //
 // 标准域
 //
 USHORT Magic;
 UCHAR MajorLinkerVersion;
 UCHAR MinorLinkerVersion;
 ULONG SizeOfCode;
 ULONG SizeOfInitializedData;
 ULONG SizeOfUninitializedData;
 ULONG AddressOfEntryPoint;
 ULONG BaseOfCode;
 ULONG BaseOfData;
 //
 // NT附加域
 //
 ULONG ImageBase;
 ULONG SectionAlignment;
 ULONG FileAlignment;
 USHORT MajorOperatingSystemVersion;
 USHORT MinorOperatingSystemVersion;
 USHORT MajorImageVersion;
 USHORT MinorImageVersion;
 USHORT MajorSubsystemVersion;
 USHORT MinorSubsystemVersion;
 ULONG Reserved1;
 ULONG SizeOfImage;
 ULONG SizeOfHeaders;
 ULONG CheckSum;
 USHORT Subsystem;
 USHORT DllCharacteristics;
 ULONG SizeOfStackReserve;
 ULONG SizeOfStackCommit;
 ULONG SizeOfHeapReserve;
 ULONG SizeOfHeapCommit;
 ULONG LoaderFlags;
 ULONG NumberOfRvaAndSizes;
 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
如你所见,这个结构中所列出的域实在是冗长得过分。为了不让你对所有这些域感到厌烦,我会仅仅讨论有用的——就是说,对于探究PE文件格式而言有用的。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:PE 文件 格式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接