00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _PE_H
00025 #define _PE_H
00026
00027
00028 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001
00029 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
00030 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
00031 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
00032 #define IMAGE_FILE_AGGRESSIVE_WS_TRIM 0x0010
00033 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
00034 #define IMAGE_FILE_16BIT_MACHINE 0x0040
00035 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
00036 #define IMAGE_FILE_32BIT_MACHINE 0x0100
00037 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200
00038 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
00039 #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
00040 #define IMAGE_FILE_SYSTEM 0x1000
00041 #define IMAGE_FILE_DLL 0x2000
00042 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
00043 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
00044
00045
00046
00047
00048 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
00049 #define IMAGE_SCN_MEM_EXECUTE 0x20000000
00050 #define IMAGE_SCN_MEM_READ 0x40000000
00051 #define IMAGE_SCN_MEM_WRITE 0x80000000
00052
00053
00054
00055 #define IMAGE_SCN_TYPE_NO_PAD 0x00000008
00056
00057 #define IMAGE_SCN_CNT_CODE 0x00000020
00058 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
00059 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
00060
00061 #define IMAGE_SCN_LNK_OTHER 0x00000100
00062 #define IMAGE_SCN_LNK_INFO 0x00000200
00063 #define IMAGE_SCN_LNK_REMOVE 0x00000800
00064 #define IMAGE_SCN_LNK_COMDAT 0x00001000
00065
00066 #define IMAGE_SCN_MEM_FARDATA 0x00008000
00067
00068 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000
00069 #define IMAGE_SCN_MEM_16BIT 0x00020000
00070 #define IMAGE_SCN_MEM_LOCKED 0x00040000
00071 #define IMAGE_SCN_MEM_PRELOAD 0x00080000
00072
00073 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000
00074 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000
00075 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000
00076 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000
00077 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000
00078 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000
00079 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000
00080
00081 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
00082 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
00083 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
00084 #define IMAGE_SCN_MEM_SHARED 0x10000000
00085
00086
00087
00088 #define IMAGE_COMDAT_SELECT_NODUPLICATES (1)
00089 #define IMAGE_COMDAT_SELECT_ANY (2)
00090 #define IMAGE_COMDAT_SELECT_SAME_SIZE (3)
00091 #define IMAGE_COMDAT_SELECT_EXACT_MATCH (4)
00092 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE (5)
00093
00094
00095
00096 #define IMAGE_FILE_MACHINE_UNKNOWN 0x0000
00097 #define IMAGE_FILE_MACHINE_ALPHA 0x0184
00098 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284
00099 #define IMAGE_FILE_MACHINE_AM33 0x01d3
00100 #define IMAGE_FILE_MACHINE_AMD64 0x8664
00101 #define IMAGE_FILE_MACHINE_ARM 0x01c0
00102 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
00103 #define IMAGE_FILE_MACHINE_CEE 0xc0ee
00104 #define IMAGE_FILE_MACHINE_CEF 0x0cef
00105 #define IMAGE_FILE_MACHINE_EBC 0x0ebc
00106 #define IMAGE_FILE_MACHINE_I386 0x014c
00107 #define IMAGE_FILE_MACHINE_IA64 0x0200
00108 #define IMAGE_FILE_MACHINE_M32R 0x9041
00109 #define IMAGE_FILE_MACHINE_M68K 0x0268
00110 #define IMAGE_FILE_MACHINE_MIPS16 0x0266
00111 #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
00112 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
00113 #define IMAGE_FILE_MACHINE_POWERPC 0x01f0
00114 #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
00115 #define IMAGE_FILE_MACHINE_R10000 0x0168
00116 #define IMAGE_FILE_MACHINE_R3000 0x0162
00117 #define IMAGE_FILE_MACHINE_R4000 0x0166
00118 #define IMAGE_FILE_MACHINE_SH3 0x01a2
00119 #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
00120 #define IMAGE_FILE_MACHINE_SH3E 0x01a4
00121 #define IMAGE_FILE_MACHINE_SH4 0x01a6
00122 #define IMAGE_FILE_MACHINE_SH5 0x01a8
00123 #define IMAGE_FILE_MACHINE_THUMB 0x01c2
00124 #define IMAGE_FILE_MACHINE_TRICORE 0x0520
00125 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
00126
00127 #define IMAGE_SUBSYSTEM_UNKNOWN 0
00128 #define IMAGE_SUBSYSTEM_NATIVE 1
00129 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
00130 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
00131 #define IMAGE_SUBSYSTEM_POSIX_CUI 7
00132 #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
00133 #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
00134 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
00135 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
00136
00137
00138 #define DOSMAGIC 0x5a4d
00139 #define NT_SIGNATURE 0x00004550
00140
00141
00142
00143 #undef FILNMLEN
00144 #define FILNMLEN 18
00145
00146 struct external_PEI_DOS_hdr
00147 {
00148
00149 char e_magic[2];
00150 char e_cblp[2];
00151 char e_cp[2];
00152 char e_crlc[2];
00153 char e_cparhdr[2];
00154 char e_minalloc[2];
00155 char e_maxalloc[2];
00156 char e_ss[2];
00157 char e_sp[2];
00158 char e_csum[2];
00159 char e_ip[2];
00160 char e_cs[2];
00161 char e_lfarlc[2];
00162 char e_ovno[2];
00163 char e_res[4][2];
00164 char e_oemid[2];
00165 char e_oeminfo[2];
00166 char e_res2[10][2];
00167 char e_lfanew[4];
00168 char dos_message[16][4];
00169 };
00170
00171 struct external_PEI_IMAGE_hdr
00172 {
00173 char nt_signature[4];
00174
00175
00176 char f_magic[2];
00177 char f_nscns[2];
00178 char f_timdat[4];
00179 char f_symptr[4];
00180 char f_nsyms[4];
00181 char f_opthdr[2];
00182 char f_flags[2];
00183 };
00184
00185 struct external_PEI_filehdr
00186 {
00187
00188 char e_magic[2];
00189 char e_cblp[2];
00190 char e_cp[2];
00191 char e_crlc[2];
00192 char e_cparhdr[2];
00193 char e_minalloc[2];
00194 char e_maxalloc[2];
00195 char e_ss[2];
00196 char e_sp[2];
00197 char e_csum[2];
00198 char e_ip[2];
00199 char e_cs[2];
00200 char e_lfarlc[2];
00201 char e_ovno[2];
00202 char e_res[4][2];
00203 char e_oemid[2];
00204 char e_oeminfo[2];
00205 char e_res2[10][2];
00206 char e_lfanew[4];
00207 char dos_message[16][4];
00208
00209
00210
00211
00212 char nt_signature[4];
00213
00214
00215 char f_magic[2];
00216 char f_nscns[2];
00217 char f_timdat[4];
00218 char f_symptr[4];
00219 char f_nsyms[4];
00220 char f_opthdr[2];
00221 char f_flags[2];
00222 };
00223
00224 #ifdef COFF_IMAGE_WITH_PE
00225
00226
00227
00228 #undef FILHDR
00229 #define FILHDR struct external_PEI_filehdr
00230 #undef FILHSZ
00231 #define FILHSZ 152
00232
00233 #endif
00234
00235
00236
00237 typedef struct
00238 {
00239 AOUTHDR standard;
00240
00241
00242 char ImageBase[4];
00243 char SectionAlignment[4];
00244 char FileAlignment[4];
00245 char MajorOperatingSystemVersion[2];
00246 char MinorOperatingSystemVersion[2];
00247 char MajorImageVersion[2];
00248 char MinorImageVersion[2];
00249 char MajorSubsystemVersion[2];
00250 char MinorSubsystemVersion[2];
00251 char Reserved1[4];
00252 char SizeOfImage[4];
00253 char SizeOfHeaders[4];
00254 char CheckSum[4];
00255 char Subsystem[2];
00256 char DllCharacteristics[2];
00257 char SizeOfStackReserve[4];
00258 char SizeOfStackCommit[4];
00259 char SizeOfHeapReserve[4];
00260 char SizeOfHeapCommit[4];
00261 char LoaderFlags[4];
00262 char NumberOfRvaAndSizes[4];
00263
00264 char DataDirectory[16][2][4];
00265 } PEAOUTHDR;
00266 #undef AOUTSZ
00267 #define AOUTSZ (AOUTHDRSZ + 196)
00268
00269
00270
00271
00272 typedef struct
00273 {
00274 AOUTHDR standard;
00275
00276
00277 char ImageBase[8];
00278 char SectionAlignment[4];
00279 char FileAlignment[4];
00280 char MajorOperatingSystemVersion[2];
00281 char MinorOperatingSystemVersion[2];
00282 char MajorImageVersion[2];
00283 char MinorImageVersion[2];
00284 char MajorSubsystemVersion[2];
00285 char MinorSubsystemVersion[2];
00286 char Reserved1[4];
00287 char SizeOfImage[4];
00288 char SizeOfHeaders[4];
00289 char CheckSum[4];
00290 char Subsystem[2];
00291 char DllCharacteristics[2];
00292 char SizeOfStackReserve[8];
00293 char SizeOfStackCommit[8];
00294 char SizeOfHeapReserve[8];
00295 char SizeOfHeapCommit[8];
00296 char LoaderFlags[4];
00297 char NumberOfRvaAndSizes[4];
00298
00299 char DataDirectory[16][2][4];
00300 } PEPAOUTHDR;
00301 #define PEPAOUTSZ 240
00302
00303 #undef E_FILNMLEN
00304 #define E_FILNMLEN 18
00305
00306
00307 #define IMPORT_CODE 0
00308 #define IMPORT_DATA 1
00309 #define IMPORT_CONST 2
00310
00311
00312 #define IMPORT_ORDINAL 0
00313 #define IMPORT_NAME 1
00314 #define IMPORT_NAME_NOPREFIX 2
00315 #define IMPORT_NAME_UNDECORATE 3
00316
00317
00318 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
00319 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
00320 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
00321
00322 #endif