5 //C_ASSERT(sizeof(ULONG) == 4);
6 typedef unsigned char UBYTE
;
7 typedef unsigned __int64 ULONG64
;
9 #define IMAGE_FILE_MACHINE_AMD64 0x8664
10 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
11 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
13 #define UWOP_PUSH_NONVOL 0
14 #define UWOP_ALLOC_LARGE 1
15 #define UWOP_ALLOC_SMALL 2
16 #define UWOP_SET_FPREG 3
17 #define UWOP_SAVE_NONVOL 4
18 #define UWOP_SAVE_NONVOL_FAR 5
19 #define UWOP_SAVE_XMM 6
20 #define UWOP_SAVE_XMM_FAR 7
21 #define UWOP_SAVE_XMM128 8
22 #define UWOP_SAVE_XMM128_FAR 9
23 #define UWOP_PUSH_MACHFRAME 10
60 typedef struct _IMAGE_IMPORT_DESCRIPTOR
63 DWORD Characteristics
;
64 DWORD OriginalFirstThunk
;
70 } IMAGE_IMPORT_DESCRIPTOR
, *PIMAGE_IMPORT_DESCRIPTOR
;
72 typedef struct _IMAGE_THUNK_DATA64
75 ULONGLONG ForwarderString
;
78 ULONGLONG AddressOfData
;
80 } IMAGE_THUNK_DATA64
, *PIMAGE_THUNK_DATA64
;
82 typedef struct _RUNTIME_FUNCTION
87 } RUNTIME_FUNCTION
, *PRUNTIME_FUNCTION
;
89 typedef union _UNWIND_CODE
98 } UNWIND_CODE
, *PUNWIND_CODE
;
100 typedef struct _UNWIND_INFO
106 UBYTE FrameRegister
:4;
108 UNWIND_CODE UnwindCode
[1];
110 OPTIONAL ULONG ExceptionHandler;
111 OPTIONAL ULONG FunctionEntry;
113 OPTIONAL ULONG ExceptionData[];
115 } UNWIND_INFO
, *PUNWIND_INFO
;
117 typedef struct _C_SCOPE_TABLE_ENTRY
123 } C_SCOPE_TABLE_ENTRY
, *PC_SCOPE_TABLE_ENTRY
;
125 typedef struct _C_SCOPE_TABLE
128 C_SCOPE_TABLE_ENTRY Table
[1];
129 } C_SCOPE_TABLE
, *PC_SCOPE_TABLE
;
134 IMAGE_SECTION_HEADER
*psh
;
144 size_t cbNewFileSize
;
146 /* PE data pointers */
147 PIMAGE_DOS_HEADER DosHeader
;
148 PIMAGE_FILE_HEADER FileHeader
;
149 PIMAGE_OPTIONAL_HEADER64 OptionalHeader
;
150 PIMAGE_SECTION_HEADER SectionHeaders
;
151 PIMAGE_BASE_RELOCATION Relocations
;
171 } FILE_INFO
, *PFILE_INFO
;