26 #define VERSION_MAJOR(x) ((unsigned int)((x)& 0xff)) 27 #define VERSION_MINOR(x) ((unsigned int)(((x)>8) &0xff)) 29 #define BIGVERSION_MAJOR(x) ((unsigned int)((x)& 0xffff)) 30 #define BIGVERSION_MINOR(x) ((unsigned int)(((x)>16) &0xffff)) 39 unsigned short MachineType;
40 unsigned short NumberOfSections;
41 unsigned long TimeDateStamp;
42 unsigned long PointerToSymbolTable;
43 unsigned long NumberOfSymbols;
44 unsigned short SizeOfOptionHeader;
45 unsigned short Characteristics;
57 #ifndef IMAGE_FILE_MACHINE_I386 58 #define IMAGE_FILE_MACHINE_I386 0x14c 63 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 64 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 65 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 66 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 67 #define IMAGE_FILE_AGGRESSIVE_WS_TRIM 0x0010 68 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 69 #define IMAGE_FILE_16BIT_MACHINE 0x0040 70 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 71 #define IMAGE_FILE_32BIT_MACHINE 0x0100 72 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 73 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 74 #define IMAGE_FILE_SYSTEM 0x1000 75 #define IMAGE_FILE_DLL 0x2000 76 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 77 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 83 #define OPTMAGIC_PE32 0x010b 84 #define OPTMAGIC_PE32P 0x020b 86 #define OPTHDR_SIZE 28 87 #define OPTHDR_SIZEP 24 88 #define WINHDR_SIZE 68 89 #define WINHDR_SIZEP 88 99 unsigned short LinkVersion;
100 unsigned long CodeSize;
101 unsigned long DataSize;
102 unsigned long BssSize;
104 unsigned long CodeBase;
105 unsigned long DataBase;
111 unsigned short Magic;
112 unsigned short LinkVersion;
113 unsigned long CodeSize;
114 unsigned long DataSize;
115 unsigned long BssSize;
117 unsigned long CodeBase;
128 unsigned long ImageBase;
129 unsigned long SectionAlignment;
130 unsigned long FileAlignment;
132 unsigned long ImgVer;
133 unsigned long SubSysVer;
134 unsigned long Reserved;
135 unsigned long SizeOfImage;
136 unsigned long SizeOfHeaders;
137 unsigned long CheckSum;
138 unsigned short Subsystem;
139 unsigned short DLLFlags;
140 unsigned long SizeOfStackReserve;
141 unsigned long SizeOfStackCommit;
142 unsigned long SizeOfHeapReserve;
143 unsigned long SizeOfHeapCommit;
144 unsigned long LoaderFlags;
145 unsigned long NumDirectories;
151 unsigned long long ImageBase;
152 unsigned long SectionAlignment;
153 unsigned long FileAlignment;
155 unsigned long ImgVer;
156 unsigned long SubSysVer;
157 unsigned long Reserved;
158 unsigned long SizeOfImage;
159 unsigned long SizeOfHeaders;
160 unsigned long CheckSum;
161 unsigned short Subsystem;
162 unsigned short DLLFlags;
163 unsigned long long SizeOfStackReserve;
164 unsigned long long SizeOfStackCommit;
165 unsigned long long SizeOfHeapReserve;
166 unsigned long long SizeOfHeapCommit;
167 unsigned long LoaderFlags;
168 unsigned long NumDirectories;
200 enum Directory_Items {
206 BASE_RELOCATION_TABLE,
214 DELAY_IMPORT_DESCRIPTOR,
227 unsigned char Name[8];
228 unsigned long VirtualSize;
229 unsigned long VirtualAddress;
230 unsigned long SizeOfRawData;
231 unsigned long PtrToRawData;
232 unsigned long PtrToRelocations;
233 unsigned long PtrToLineNums;
234 unsigned short NumRelocations;
235 unsigned short NumLineNumbers;
236 unsigned long Characteristics;
245 #define IMAGE_SCN_CNT_CODE 0x00000020 246 #define IMAGE_SCN_CNT_DATA 0x00000040 247 #define IMAGE_SCN_CNT_BSS 0x00000080 248 #define IMAGE_SCN_LNK_INFO 0x00000200 249 #define IMAGE_SCN_LNK_REMOVE 0x00000800 250 #define IMAGE_SCN_LNK_COMDAT 0x00001000 251 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 252 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 253 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 254 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 255 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 256 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 257 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 258 #define IMAGE_SCN_ALIGN_128BYTES 0x00800000 259 #define IMAGE_SCN_ALIGN_256BYTES 0x00900000 260 #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 261 #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 262 #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 263 #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 264 #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 265 #define IMAGE_SCN_ALIGN_MASK 0x00F00000 266 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 267 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 268 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 269 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 270 #define IMAGE_SCN_MEM_SHARED 0x10000000 271 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 272 #define IMAGE_SCN_MEM_READ 0x40000000 273 #define IMAGE_SCN_MEM_WRITE 0x80000000 282 unsigned long VirtualAddress;
283 unsigned long SymTableIndex;
293 #define IMAGE_REL_I386_ABSOLUTE 0x0000 294 #define IMAGE_REL_I386_DIR16 0x0001 295 #define IMAGE_REL_I386_REL16 0x0002 296 #define IMAGE_REL_I386_DIR32 0x0006 297 #define IMAGE_REL_I386_DIR32NB 0x0007 298 #define IMAGE_REL_I386_SEG12 0x0009 299 #define IMAGE_REL_I386_SECTION 0x000A 300 #define IMAGE_REL_I386_SECREL 0x000B 301 #define IMAGE_REL_I386_REL32 0x0014 311 unsigned long SymbolTableIndex;
312 unsigned long VirtualAddress;
314 unsigned short LineNum;
326 unsigned char ShortName[8];
327 unsigned long long Offset;
330 unsigned short SectionNumber;
332 unsigned char StorageClass;
333 unsigned char NumberOfAuxSymbols;
337 #if !defined(TARGET_WINDOWS) 339 #define IMAGE_SYM_UNDEFINED 0 340 #define IMAGE_SYM_ABSOLUTE 0xFFFF 341 #define IMAGE_SYM_DEBUG 0xFFFE 344 #define IMAGE_SYM_TYPE_NULL 0 345 #define IMAGE_SYM_TYPE_VOID 1 346 #define IMAGE_SYM_TYPE_CHAR 2 347 #define IMAGE_SYM_TYPE_SHORT 3 348 #define IMAGE_SYM_TYPE_INT 4 349 #define IMAGE_SYM_TYPE_LONG 5 350 #define IMAGE_SYM_TYPE_FLOAT 6 351 #define IMAGE_SYM_TYPE_DOUBLE 7 352 #define IMAGE_SYM_TYPE_STRUCT 8 353 #define IMAGE_SYM_TYPE_UNION 9 354 #define IMAGE_SYM_TYPE_ENUM 10 355 #define IMAGE_SYM_TYPE_MOE 11 356 #define IMAGE_SYM_TYPE_BYTE 12 357 #define IMAGE_SYM_TYPE_WORD 13 358 #define IMAGE_SYM_TYPE_UINT 14 359 #define IMAGE_SYM_TYPE_DWORD 15 361 #define IMAGE_SYM_DWORD_NULL 0 362 #define IMAGE_SYM_DWORD_POINTER 1 363 #define IMAGE_SYM_DWORD_FUNCTION 2 364 #define IMAGE_SYM_DWORD_ARRAY 3 367 #define IMAGE_SYM_CLASS_END_OF_FUNCTION 0xFF 368 #define IMAGE_SYM_CLASS_NULL 0 369 #define IMAGE_SYM_CLASS_AUTOMATIC 1 370 #define IMAGE_SYM_CLASS_EXTERNAL 2 371 #define IMAGE_SYM_CLASS_STATIC 3 372 #define IMAGE_SYM_CLASS_REGISTER 4 373 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 374 #define IMAGE_SYM_CLASS_LABEL 6 375 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 376 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 377 #define IMAGE_SYM_CLASS_ARGUMENT 9 378 #define IMAGE_SYM_CLASS_STRUCT_TAG 10 379 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 380 #define IMAGE_SYM_CLASS_UNION_TAG 12 381 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 382 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 383 #define IMAGE_SYM_CLASS_ENUM_TAG 15 384 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 385 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17 386 #define IMAGE_SYM_CLASS_BIT_FIELD 18 387 #define IMAGE_SYM_CLASS_BLOCK 100 388 #define IMAGE_SYM_CLASS_FUNCTION 101 389 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102 390 #define IMAGE_SYM_CLASS_FILE 103 391 #define IMAGE_SYM_CLASS_SECTION 104 392 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 397 unsigned long TagIndex;
398 unsigned long TotalSize;
399 unsigned long PtrToLineNumber;
400 unsigned long PtrToNextFunc;
401 unsigned short unused;
412 unsigned long unused;
413 unsigned short LineNumber;
414 unsigned long unused1;
415 unsigned short unused2;
416 unsigned long PtrToNextFunc;
417 unsigned char unused3;
433 unsigned long ExportFlags;
434 unsigned long TimeStamp;
435 unsigned short MajorVersion;
436 unsigned short MinorVersion;
437 unsigned long Name_RVA;
438 unsigned long OrdinalBase;
439 unsigned long NumAddrTable;
440 unsigned long NumNamePtrs;
441 unsigned long ExportAddressTable_RVA;
442 unsigned long NamePointerTable_RVA;
443 unsigned long OrdinalTable_RVA;
460 unsigned long ImportLookupTable_RVA;
461 unsigned long TimeStamp;
462 unsigned long ForwarderChain;
463 unsigned long Name_RVA;
464 unsigned long ImportAddressTable_RVA;
474 #define IMAGE_REL_BASED_ABSOLUTE 0 475 #define IMAGE_REL_BASED_HIGH 1 476 #define IMAGE_REL_BASED_LOW 2 477 #define IMAGE_REL_BASED_HIGHLOW 3 478 #define IMAGE_REL_BASED_HIGHADJ 4 479 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 480 #define IMAGE_REL_BASED_SECTION 6 481 #define IMAGE_REL_BASED_REL32 7 482 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 483 #define IMAGE_REL_BASED_DIR64 10 484 #define IMAGE_REL_BASED_HIGH3ADJ 11