3 //C_ASSERT(sizeof(ULONG) == 4);
4 typedef unsigned char UBYTE
;
5 typedef unsigned __int64 ULONG64
;
7 #define IMAGE_FILE_MACHINE_AMD64 0x8664
8 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
9 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
11 #define UWOP_PUSH_NONVOL 0
12 #define UWOP_ALLOC_LARGE 1
13 #define UWOP_ALLOC_SMALL 2
14 #define UWOP_SET_FPREG 3
15 #define UWOP_SAVE_NONVOL 4
16 #define UWOP_SAVE_NONVOL_FAR 5
17 #define UWOP_SAVE_XMM 6
18 #define UWOP_SAVE_XMM_FAR 7
19 #define UWOP_SAVE_XMM128 8
20 #define UWOP_SAVE_XMM128_FAR 9
21 #define UWOP_PUSH_MACHFRAME 10
58 typedef struct _IMAGE_IMPORT_DESCRIPTOR
61 DWORD Characteristics
;
62 DWORD OriginalFirstThunk
;
68 } IMAGE_IMPORT_DESCRIPTOR
, *PIMAGE_IMPORT_DESCRIPTOR
;
70 typedef struct _IMAGE_THUNK_DATA64
73 ULONGLONG ForwarderString
;
76 ULONGLONG AddressOfData
;
78 } IMAGE_THUNK_DATA64
, *PIMAGE_THUNK_DATA64
;
80 typedef struct _RUNTIME_FUNCTION
85 } RUNTIME_FUNCTION
, *PRUNTIME_FUNCTION
;
87 typedef union _UNWIND_CODE
96 } UNWIND_CODE
, *PUNWIND_CODE
;
100 UNW_FLAG_EHANDLER
= 0x01,
101 UNW_FLAG_UHANDLER
= 0x02,
102 UNW_FLAG_CHAININFO
= 0x03,
105 typedef struct _UNWIND_INFO
111 UBYTE FrameRegister
:4;
113 UNWIND_CODE UnwindCode
[1];
115 OPTIONAL ULONG ExceptionHandler;
116 OPTIONAL ULONG FunctionEntry;
118 OPTIONAL ULONG ExceptionData[];
120 } UNWIND_INFO
, *PUNWIND_INFO
;
122 typedef struct _C_SCOPE_TABLE_ENTRY
128 } C_SCOPE_TABLE_ENTRY
, *PC_SCOPE_TABLE_ENTRY
;
130 typedef struct _C_SCOPE_TABLE
133 C_SCOPE_TABLE_ENTRY Entry
[1];
134 } C_SCOPE_TABLE
, *PC_SCOPE_TABLE
;
139 IMAGE_SECTION_HEADER
*psh
;
149 size_t cbNewFileSize
;
151 /* PE data pointers */
152 PIMAGE_DOS_HEADER DosHeader
;
153 PIMAGE_FILE_HEADER FileHeader
;
154 PIMAGE_OPTIONAL_HEADER64 OptionalHeader
;
155 PIMAGE_SECTION_HEADER SectionHeaders
;
156 PIMAGE_SECTION_HEADER NewSectionHeaders
;
157 ULONG NewSectionHeaderSize
;
158 PIMAGE_BASE_RELOCATION Relocations
;
179 } FILE_INFO
, *PFILE_INFO
;