LIEF: Library to Instrument Executable Formats Version 0.15.0
Loading...
Searching...
No Matches
OptionalHeader.h
1/* Copyright 2017 - 2024 R. Thomas
2 * Copyright 2017 - 2024 Quarkslab
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef C_LIEF_PE_OPTIONAL_HEADER_H
17#define C_LIEF_PE_OPTIONAL_HEADER_H
18#include <inttypes.h>
19
20#include "LIEF/PE/enums.h"
21#include "LIEF/visibility.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
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
39};
40
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
56};
57
59 enum LIEF_PE_PE_TYPES magic;
60 uint8_t major_linker_version;
61 uint8_t minor_linker_version;
62 uint32_t sizeof_code;
63 uint32_t sizeof_initialized_data;
64 uint32_t sizeof_uninitialized_data;
65 uint32_t addressof_entrypoint;
66 uint32_t baseof_code;
67 uint32_t baseof_data;
68 uint64_t imagebase;
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;
80 uint32_t checksum;
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;
89};
90
92
93LIEF_API const char* lief_pe_subsytem_str(enum LIEF_PE_SUBSYSTEM e);
94
95#ifdef __cplusplus
96}
97#endif
98
99#endif
Definition OptionalHeader.h:58