struct _IMAGE_OPTIONAL_HEADER {
0x00 WORD Magic;
标记
0x02
BYTE MajorLinkerVersion;
0x03
BYTE MinorLinkerVersion;
0x04 DWORD SizeOfCode;* 所有代码节的和(代码可能有多个节),必须是
FileAlignment
整数倍 没什么用
0x08 DWORD SizeOfInitializedData;*已初始化数据大小的和,必须是
FileAlignment
整数倍 没什么用
0x0c
DWORD SizeOfUninitializedData;*未初始化数据大小的和,(一般单词前面加Un都是反义词)
必须是
FileAlignment
整数倍(同上2个都是编译器填的)
0x10 DWORD AddressOfEntryPoint;
程序入口点 OEP
0x14
DWORD BaseOfCode;* 代码开始的基址,编译器填的 没用(代表被人修改后这个值没意义)
0x18
DWORD BaseOfData;* 数据开始的基址,编译器填的 没用(代表可以任意修改)
0x1c DWORD ImageBase;
内存映像基址/模块基址/模块句柄