16#ifndef C_LIEF_PE_OPTIONAL_HEADER_H
17#define C_LIEF_PE_OPTIONAL_HEADER_H
20#include "LIEF/PE/enums.h"
21#include "LIEF/visibility.h"
27enum LIEF_PE_DLL_CHARACTERISTICS {
28 LIEF_PE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,
29 LIEF_PE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040,
30 LIEF_PE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080,
31 LIEF_PE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100,
32 LIEF_PE_DLL_CHARACTERISTICS_NO_ISOLATION = 0x0200,
33 LIEF_PE_DLL_CHARACTERISTICS_NO_SEH = 0x0400,
34 LIEF_PE_DLL_CHARACTERISTICS_NO_BIND = 0x0800,
35 LIEF_PE_DLL_CHARACTERISTICS_APPCONTAINER = 0x1000,
36 LIEF_PE_DLL_CHARACTERISTICS_WDM_DRIVER = 0x2000,
37 LIEF_PE_DLL_CHARACTERISTICS_GUARD_CF = 0x4000,
38 LIEF_PE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
41enum LIEF_PE_SUBSYSTEM {
42 LIEF_PE_SUBSYSTEM_UNKNOWN = 0,
43 LIEF_PE_SUBSYSTEM_NATIVE = 1,
44 LIEF_PE_SUBSYSTEM_WINDOWS_GUI = 2,
45 LIEF_PE_SUBSYSTEM_WINDOWS_CUI = 3,
46 LIEF_PE_SUBSYSTEM_OS2_CUI = 5,
47 LIEF_PE_SUBSYSTEM_POSIX_CUI = 7,
48 LIEF_PE_SUBSYSTEM_NATIVE_WINDOWS = 8,
49 LIEF_PE_SUBSYSTEM_WINDOWS_CE_GUI = 9,
50 LIEF_PE_SUBSYSTEM_EFI_APPLICATION = 10,
51 LIEF_PE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,
52 LIEF_PE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,
53 LIEF_PE_SUBSYSTEM_EFI_ROM = 13,
54 LIEF_PE_SUBSYSTEM_XBOX = 14,
55 LIEF_PE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16
59 enum LIEF_PE_PE_TYPES magic;
60 uint8_t major_linker_version;
61 uint8_t minor_linker_version;
63 uint32_t sizeof_initialized_data;
64 uint32_t sizeof_uninitialized_data;
65 uint32_t addressof_entrypoint;
69 uint32_t section_alignment;
70 uint32_t file_alignment;
71 uint16_t major_operating_system_version;
72 uint16_t minor_operating_system_version;
73 uint16_t major_image_version;
74 uint16_t minor_image_version;
75 uint16_t major_subsystem_version;
76 uint16_t minor_subsystem_version;
77 uint32_t win32_version_value;
78 uint32_t sizeof_image;
79 uint32_t sizeof_headers;
81 enum LIEF_PE_SUBSYSTEM subsystem;
82 uint32_t dll_characteristics;
83 uint64_t sizeof_stack_reserve;
84 uint64_t sizeof_stack_commit;
85 uint64_t sizeof_heap_reserve;
86 uint64_t sizeof_heap_commit;
87 uint32_t loader_flags;
88 uint32_t numberof_rva_and_size;
93LIEF_API
const char* lief_pe_subsytem_str(
enum LIEF_PE_SUBSYSTEM e);