15#ifndef LIEF_PE_ENUMS_H
16#define LIEF_PE_ENUMS_H
19#include "LIEF/enums.hpp"
20#define LIEF_PE_FORCE_UNDEF
21#include "LIEF/PE/undef.h"
32enum SYMBOL_SECTION_NUMBER:
int {
34 IMAGE_SYM_ABSOLUTE = -1,
35 IMAGE_SYM_UNDEFINED = 0
40 IMAGE_SYM_CLASS_INVALID = 0xFF,
63 IMAGE_SYM_CLASS_FUNCTION = 101,
66 IMAGE_SYM_CLASS_SECTION = 104,
68 IMAGE_SYM_CLASS_CLR_TOKEN = 107
99enum class AuxSymbolType:
size_t {
100 IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1
104enum class RELOCATIONS_I386:
size_t {
105 IMAGE_REL_I386_ABSOLUTE = 0x0000,
106 IMAGE_REL_I386_DIR16 = 0x0001,
107 IMAGE_REL_I386_REL16 = 0x0002,
108 IMAGE_REL_I386_DIR32 = 0x0006,
109 IMAGE_REL_I386_DIR32NB = 0x0007,
110 IMAGE_REL_I386_SEG12 = 0x0009,
111 IMAGE_REL_I386_SECTION = 0x000A,
112 IMAGE_REL_I386_SECREL = 0x000B,
113 IMAGE_REL_I386_TOKEN = 0x000C,
114 IMAGE_REL_I386_SECREL7 = 0x000D,
115 IMAGE_REL_I386_REL32 = 0x0014
118enum class RELOCATIONS_AMD64:
size_t {
119 IMAGE_REL_AMD64_ABSOLUTE = 0x0000,
120 IMAGE_REL_AMD64_ADDR64 = 0x0001,
121 IMAGE_REL_AMD64_ADDR32 = 0x0002,
122 IMAGE_REL_AMD64_ADDR32NB = 0x0003,
123 IMAGE_REL_AMD64_REL32 = 0x0004,
124 IMAGE_REL_AMD64_REL32_1 = 0x0005,
125 IMAGE_REL_AMD64_REL32_2 = 0x0006,
126 IMAGE_REL_AMD64_REL32_3 = 0x0007,
127 IMAGE_REL_AMD64_REL32_4 = 0x0008,
128 IMAGE_REL_AMD64_REL32_5 = 0x0009,
129 IMAGE_REL_AMD64_SECTION = 0x000A,
130 IMAGE_REL_AMD64_SECREL = 0x000B,
131 IMAGE_REL_AMD64_SECREL7 = 0x000C,
132 IMAGE_REL_AMD64_TOKEN = 0x000D,
133 IMAGE_REL_AMD64_SREL32 = 0x000E,
134 IMAGE_REL_AMD64_PAIR = 0x000F,
135 IMAGE_REL_AMD64_SSPAN32 = 0x0010
138enum class RELOCATIONS_ARM:
size_t {
139 IMAGE_REL_ARM_ABSOLUTE = 0x0000,
140 IMAGE_REL_ARM_ADDR32 = 0x0001,
141 IMAGE_REL_ARM_ADDR32NB = 0x0002,
142 IMAGE_REL_ARM_BRANCH24 = 0x0003,
143 IMAGE_REL_ARM_BRANCH11 = 0x0004,
144 IMAGE_REL_ARM_TOKEN = 0x0005,
145 IMAGE_REL_ARM_BLX24 = 0x0008,
146 IMAGE_REL_ARM_BLX11 = 0x0009,
147 IMAGE_REL_ARM_SECTION = 0x000E,
148 IMAGE_REL_ARM_SECREL = 0x000F,
149 IMAGE_REL_ARM_MOV32A = 0x0010,
150 IMAGE_REL_ARM_MOV32T = 0x0011,
151 IMAGE_REL_ARM_BRANCH20T = 0x0012,
152 IMAGE_REL_ARM_BRANCH24T = 0x0014,
153 IMAGE_REL_ARM_BLX23T = 0x0015
159 IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1,
160 IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2,
161 IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3
165enum class ImportType:
size_t {
189enum class CodeViewIdentifiers:
size_t {
190 DEBUG_LINE_TABLES_HAVE_COLUMN_RECORDS = 0x1,
191 DEBUG_SECTION_MAGIC = 0x4,
192 DEBUG_SYMBOL_SUBSECTION = 0xF1,
193 DEBUG_LINE_TABLE_SUBSECTION = 0xF2,
194 DEBUG_STRING_TABLE_SUBSECTION = 0xF3,
195 DEBUG_INDEX_SUBSECTION = 0xF4,
198 DEBUG_SYMBOL_TYPE_PROC_START = 0x1147,
199 DEBUG_SYMBOL_TYPE_PROC_END = 0x114F
205 WS_EX_DLGMODALFRAME = 0x00000001L,
206 WS_EX_NOPARENTNOTIFY = 0x00000004L,
207 WS_EX_TOPMOST = 0x00000008L,
208 WS_EX_ACCEPTFILES = 0x00000010L,
209 WS_EX_TRANSPARENT = 0x00000020L,
210 WS_EX_MDICHILD = 0x00000040L,
211 WS_EX_TOOLWINDOW = 0x00000080L,
212 WS_EX_WINDOWEDGE = 0x00000100L,
213 WS_EX_CLIENTEDGE = 0x00000200L,
214 WS_EX_CONTEXTHELP = 0x00000400L,
216 WS_EX_RIGHT = 0x00001000L,
217 WS_EX_LEFT = 0x00000000L,
218 WS_EX_RTLREADING = 0x00002000L,
219 WS_EX_LTRREADING = 0x00000000L,
220 WS_EX_LEFTSCROLLBAR = 0x00004000L,
221 WS_EX_RIGHTSCROLLBAR = 0x00000000L,
223 WS_EX_CONTROLPARENT = 0x00010000L,
224 WS_EX_STATICEDGE = 0x00020000L,
225 WS_EX_APPWINDOW = 0x00040000L,
230 WS_OVERLAPPED = 0x00000000L,
231 WS_POPUP = 0x80000000L,
232 WS_CHILD = 0x40000000L,
233 WS_MINIMIZE = 0x20000000L,
234 WS_VISIBLE = 0x10000000L,
235 WS_DISABLED = 0x08000000L,
236 WS_CLIPSIBLINGS = 0x04000000L,
237 WS_CLIPCHILDREN = 0x02000000L,
238 WS_MAXIMIZE = 0x01000000L,
239 WS_CAPTION = 0x00C00000L,
240 WS_BORDER = 0x00800000L,
241 WS_DLGFRAME = 0x00400000L,
242 WS_VSCROLL = 0x00200000L,
243 WS_HSCROLL = 0x00100000L,
244 WS_SYSMENU = 0x00080000L,
245 WS_THICKFRAME = 0x00040000L,
246 WS_GROUP = 0x00020000L,
247 WS_TABSTOP = 0x00010000L,
249 WS_MINIMIZEBOX = 0x00020000L,
250 WS_MAXIMIZEBOX = 0x00010000L,
256 DS_ABSALIGN = 0x0001L,
257 DS_SYSMODAL = 0x0002L,
258 DS_LOCALEDIT = 0x0020L,
259 DS_SETFONT = 0x0040L,
260 DS_MODALFRAME = 0x0080L,
261 DS_NOIDLEMSG = 0x0100L,
262 DS_SETFOREGROUND = 0x0200L,
264 DS_FIXEDSYS = 0x0008L,
265 DS_NOFAILCREATE = 0x0010L,
266 DS_CONTROL = 0x0400L,
268 DS_CENTERMOUSE = 0x1000L,
269 DS_CONTEXTHELP = 0x2000L,
270 DS_SHELLFONT = 0x0040L | 0x0008L,
273enum class FIXED_VERSION_OS:
size_t {
274 VOS_UNKNOWN = 0x00000000L,
275 VOS_DOS = 0x00010000L,
276 VOS_NT = 0x00040000L,
277 VOS__WINDOWS16 = 0x00000001L,
278 VOS__WINDOWS32 = 0x00000004L,
279 VOS_OS216 = 0x00020000L,
280 VOS_OS232 = 0x00030000L,
281 VOS__PM16 = 0x00000002L,
282 VOS__PM32 = 0x00000003L,
283 VOS_DOS_WINDOWS16 = 0x00010000L | 0x00000001L,
284 VOS_DOS_WINDOWS32 = 0x00010000L | 0x00000004L,
285 VOS_NT_WINDOWS32 = 0x00040000L | 0x00000004L,
286 VOS_OS216_PM16 = 0x00020000L | 0x00000002L,
287 VOS_OS232_PM32 = 0x00030000L | 0x00000003L,
291enum class FIXED_VERSION_FILE_FLAGS:
size_t {
292 VS_FF_DEBUG = 0x00000001L,
293 VS_FF_INFOINFERRED = 0x00000010L,
294 VS_FF_PATCHED = 0x00000004L,
295 VS_FF_PRERELEASE = 0x00000002L,
296 VS_FF_PRIVATEBUILD = 0x00000008L,
297 VS_FF_SPECIALBUILD = 0x00000020L,
301enum class FIXED_VERSION_FILE_TYPES:
size_t {
302 VFT_APP = 0x00000001L,
303 VFT_DLL = 0x00000002L,
304 VFT_DRV = 0x00000003L,
305 VFT_FONT = 0x00000004L,
306 VFT_STATIC_LIB = 0x00000007L,
307 VFT_UNKNOWN = 0x00000000L,
308 VFT_VXD = 0x00000005L,
312enum class FIXED_VERSION_FILE_SUB_TYPES:
size_t {
313 VFT2_DRV_COMM = 0x0000000AL,
314 VFT2_DRV_DISPLAY = 0x00000004L,
315 VFT2_DRV_INSTALLABLE = 0x00000008L,
316 VFT2_DRV_KEYBOARD = 0x00000002L,
317 VFT2_DRV_LANGUAGE = 0x00000003L,
318 VFT2_DRV_MOUSE = 0x00000005L,
319 VFT2_DRV_NETWORK = 0x00000006L,
320 VFT2_DRV_PRINTER = 0x00000001L,
321 VFT2_DRV_SOUND = 0x00000009L,
322 VFT2_DRV_SYSTEM = 0x00000007L,
323 VFT2_DRV_VERSIONED_PRINTER = 0x0000000CL,
325 VFT2_FONT_RASTER = 0x00000001L,
326 VFT2_FONT_TRUETYPE = 0x00000003L,
327 VFT2_FONT_VECTOR = 0x00000002L,
329 VFT2_UNKNOWN = 0x00000000L,
514 VK_NONCONVERT = 0x1D,
516 VK_MODECHANGE = 0x1F,
621 VK_BROWSER_BACK = 0xA6,
622 VK_BROWSER_FORWARD = 0xA7,
623 VK_BROWSER_REFRESH = 0xA8,
624 VK_BROWSER_STOP = 0xA9,
625 VK_BROWSER_SEARCH = 0xAA,
626 VK_BROWSER_FAVORITES = 0xAB,
627 VK_BROWSER_HOME = 0xAC,
628 VK_VOLUME_MUTE = 0xAD,
629 VK_VOLUME_DOWN = 0xAE,
631 VK_MEDIA_NEXT_TRACK = 0xB0,
632 VK_MEDIA_PREV_TRACK = 0xB1,
633 VK_MEDIA_STOP = 0xB2,
634 VK_MEDIA_PLAY_PAUSE = 0xB3,
635 VK_LAUNCH_MAIL = 0xB4,
636 VK_LAUNCH_MEDIA_SELECT = 0xB5,
637 VK_LAUNCH_APP1 = 0xB6,
638 VK_LAUNCH_APP2 = 0xB7,
643 VK_OEM_PERIOD = 0xBE,
651 VK_PROCESSKEY = 0xE5,
Class which represents the PE Thread Local Storage.
Definition TLS.hpp:45
PE_SECTION_TYPES
Common section type.
Definition PE/enums.hpp:666
ALGORITHMS
Cryptography algorithms.
Definition PE/enums.hpp:686
WeakExternalCharacteristics
These are not documented in the spec, but are located in WinNT.h.
Definition PE/enums.hpp:158
ACCELERATOR_VK_CODES
From https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
Definition PE/enums.hpp:487
EXTENDED_WINDOW_STYLES
From https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles.
Definition PE/enums.hpp:204
SYMBOL_BASE_TYPES
Definition PE/enums.hpp:72
@ IMAGE_SYM_TYPE_BYTE
A byte; unsigned 1-byte integer.
@ IMAGE_SYM_TYPE_CHAR
A character (signed byte).
@ IMAGE_SYM_TYPE_FLOAT
A 4-byte floating-point number.
@ IMAGE_SYM_TYPE_NULL
No type information or unknown base type.
@ IMAGE_SYM_TYPE_WORD
A word; unsigned 2-byte integer.
@ IMAGE_SYM_TYPE_SHORT
A 2-byte signed integer.
@ IMAGE_SYM_TYPE_MOE
A member of enumeration (a specific value).
@ IMAGE_SYM_TYPE_LONG
A 4-byte signed integer.
@ IMAGE_SYM_TYPE_DWORD
An unsigned 4-byte integer.
@ IMAGE_SYM_TYPE_STRUCT
A structure.
@ IMAGE_SYM_TYPE_DOUBLE
An 8-byte floating-point number.
@ IMAGE_SYM_TYPE_INT
A natural integer type on the target.
@ IMAGE_SYM_TYPE_UNION
An union.
@ IMAGE_SYM_TYPE_VOID
Used with void pointers and functions.
@ IMAGE_SYM_TYPE_UINT
An unsigned integer of natural size.
@ IMAGE_SYM_TYPE_ENUM
An enumerated type.
WINDOW_STYLES
From: https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles.
Definition PE/enums.hpp:229
ACCELERATOR_FLAGS
From https://docs.microsoft.com/en-us/windows/win32/menurc/acceltableentry.
Definition PE/enums.hpp:477
SYMBOL_STORAGE_CLASS
Storage class tells where and what the symbol represents.
Definition PE/enums.hpp:39
@ IMAGE_SYM_CLASS_STATIC
Static.
Definition PE/enums.hpp:46
@ IMAGE_SYM_CLASS_BLOCK
".bf" or ".ef" - beginning or end of function
Definition PE/enums.hpp:62
@ IMAGE_SYM_CLASS_END_OF_STRUCT
End of structure.
Definition PE/enums.hpp:64
@ IMAGE_SYM_CLASS_STRUCT_TAG
Structure tag.
Definition PE/enums.hpp:53
@ IMAGE_SYM_CLASS_NULL
No symbol.
Definition PE/enums.hpp:43
@ IMAGE_SYM_CLASS_REGISTER_PARAM
Register parameter.
Definition PE/enums.hpp:60
@ IMAGE_SYM_CLASS_MEMBER_OF_STRUCT
Member of structure.
Definition PE/enums.hpp:51
@ IMAGE_SYM_CLASS_END_OF_FUNCTION
Physical end of function.
Definition PE/enums.hpp:42
@ IMAGE_SYM_CLASS_FILE
File name line number, reformatted as symbol.
Definition PE/enums.hpp:65
@ IMAGE_SYM_CLASS_WEAK_EXTERNAL
Duplicate tag external symbol in dmert public lib.
Definition PE/enums.hpp:67
@ IMAGE_SYM_CLASS_LABEL
Label.
Definition PE/enums.hpp:49
@ IMAGE_SYM_CLASS_BIT_FIELD
Bit field ".bb" or ".eb" - beginning or end of block.
Definition PE/enums.hpp:61
@ IMAGE_SYM_CLASS_UNION_TAG
Union tag.
Definition PE/enums.hpp:55
@ IMAGE_SYM_CLASS_ENUM_TAG
Enumeration tag.
Definition PE/enums.hpp:58
@ IMAGE_SYM_CLASS_TYPE_DEFINITION
Type definition.
Definition PE/enums.hpp:56
@ IMAGE_SYM_CLASS_UNDEFINED_LABEL
Undefined label.
Definition PE/enums.hpp:50
@ IMAGE_SYM_CLASS_REGISTER
Register variable.
Definition PE/enums.hpp:47
@ IMAGE_SYM_CLASS_MEMBER_OF_UNION
Member of union.
Definition PE/enums.hpp:54
@ IMAGE_SYM_CLASS_ARGUMENT
Function argument.
Definition PE/enums.hpp:52
@ IMAGE_SYM_CLASS_MEMBER_OF_ENUM
Member of enumeration.
Definition PE/enums.hpp:59
@ IMAGE_SYM_CLASS_AUTOMATIC
Stack variable.
Definition PE/enums.hpp:44
@ IMAGE_SYM_CLASS_EXTERNAL_DEF
External definition.
Definition PE/enums.hpp:48
@ IMAGE_SYM_CLASS_EXTERNAL
External symbol.
Definition PE/enums.hpp:45
@ IMAGE_SYM_CLASS_UNDEFINED_STATIC
Undefined static.
Definition PE/enums.hpp:57
PE_TYPES
Definition PE/enums.hpp:26
ImportNameType
Definition PE/enums.hpp:172
@ IMPORT_NAME
The import name is identical to the public symbol name.
@ IMPORT_NAME_UNDECORATE
The import name is the public symbol name, but skipping the leading ?, @, or optionally _,...
@ IMPORT_NAME_NOPREFIX
The import name is the public symbol name, but skipping the leading ?, @, or optionally _.
@ IMPORT_ORDINAL
Import is by ordinal. This indicates that the value in the Ordinal/Hint field of the import header is...
CODE_PAGES
Code page from https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers.
Definition PE/enums.hpp:333
@ CP_X_EBCDIC_KOREANEXTENDED
SYMBOL_COMPLEX_TYPES
Definition PE/enums.hpp:91
@ IMAGE_SYM_DTYPE_FUNCTION
A function that returns a base type.
@ IMAGE_SYM_DTYPE_ARRAY
An array of base type.
@ IMAGE_SYM_DTYPE_NULL
No complex type; simple scalar variable.
@ SCT_COMPLEX_TYPE_SHIFT
Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
@ IMAGE_SYM_DTYPE_POINTER
A pointer to base type.
PE_TYPE
Definition PE/enums.hpp:680
DIALOG_BOX_STYLES
From https://docs.microsoft.com/en-us/windows/win32/dlgbox/dialog-box-styles.
Definition PE/enums.hpp:255
LIEF namespace.
Definition Abstract/Binary.hpp:32