LIEF: Library to Instrument Executable Formats
Version 1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
lief-install
x86_64
static
include
LIEF
PE
OptionalHeader.h
Go to the documentation of this file.
1
/* Copyright 2017 - 2026 R. Thomas
2
* Copyright 2017 - 2026 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
24
extern
"C"
{
25
#endif
26
27
enum
LIEF_PE_DLL_CHARACTERISTICS
{
28
LIEF_PE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
=
29
0x0020,
30
LIEF_PE_DLL_CHARACTERISTICS_DYNAMIC_BASE
=
31
0x0040,
32
LIEF_PE_DLL_CHARACTERISTICS_FORCE_INTEGRITY
=
33
0x0080,
34
LIEF_PE_DLL_CHARACTERISTICS_NX_COMPAT
= 0x0100,
35
LIEF_PE_DLL_CHARACTERISTICS_NO_ISOLATION
=
36
0x0200,
37
LIEF_PE_DLL_CHARACTERISTICS_NO_SEH
=
38
0x0400,
40
LIEF_PE_DLL_CHARACTERISTICS_NO_BIND
= 0x0800,
41
LIEF_PE_DLL_CHARACTERISTICS_APPCONTAINER
=
42
0x1000,
43
LIEF_PE_DLL_CHARACTERISTICS_WDM_DRIVER
= 0x2000,
44
LIEF_PE_DLL_CHARACTERISTICS_GUARD_CF
=
45
0x4000,
46
LIEF_PE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
=
47
0x8000,
48
};
49
50
enum
LIEF_PE_SUBSYSTEM
{
51
LIEF_PE_SUBSYSTEM_UNKNOWN
= 0,
52
LIEF_PE_SUBSYSTEM_NATIVE
= 1,
53
LIEF_PE_SUBSYSTEM_WINDOWS_GUI
= 2,
54
LIEF_PE_SUBSYSTEM_WINDOWS_CUI
= 3,
55
LIEF_PE_SUBSYSTEM_OS2_CUI
= 5,
56
LIEF_PE_SUBSYSTEM_POSIX_CUI
= 7,
57
LIEF_PE_SUBSYSTEM_NATIVE_WINDOWS
= 8,
58
LIEF_PE_SUBSYSTEM_WINDOWS_CE_GUI
= 9,
59
LIEF_PE_SUBSYSTEM_EFI_APPLICATION
= 10,
60
LIEF_PE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
=
61
11,
62
LIEF_PE_SUBSYSTEM_EFI_RUNTIME_DRIVER
=
63
12,
64
LIEF_PE_SUBSYSTEM_EFI_ROM
= 13,
65
LIEF_PE_SUBSYSTEM_XBOX
= 14,
66
LIEF_PE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
= 16,
67
LIEF_PE_SUBSYSTEM_XBOX_CODE_CATALOG
= 17,
68
};
69
70
struct
Pe_OptionalHeader_t
{
71
uint16_t
magic
;
72
uint8_t
major_linker_version
;
73
uint8_t
minor_linker_version
;
74
uint32_t
sizeof_code
;
75
uint32_t
sizeof_initialized_data
;
76
uint32_t
sizeof_uninitialized_data
;
77
uint32_t
addressof_entrypoint
;
78
uint32_t
baseof_code
;
79
uint32_t
baseof_data
;
80
uint64_t
imagebase
;
81
uint32_t
section_alignment
;
82
uint32_t
file_alignment
;
83
uint16_t
major_operating_system_version
;
84
uint16_t
minor_operating_system_version
;
85
uint16_t
major_image_version
;
86
uint16_t
minor_image_version
;
87
uint16_t
major_subsystem_version
;
88
uint16_t
minor_subsystem_version
;
89
uint32_t
win32_version_value
;
90
uint32_t
sizeof_image
;
91
uint32_t
sizeof_headers
;
92
uint32_t
checksum
;
93
enum
LIEF_PE_SUBSYSTEM
subsystem
;
94
uint32_t
dll_characteristics
;
95
uint64_t
sizeof_stack_reserve
;
96
uint64_t
sizeof_stack_commit
;
97
uint64_t
sizeof_heap_reserve
;
98
uint64_t
sizeof_heap_commit
;
99
uint32_t
loader_flags
;
100
uint32_t
numberof_rva_and_size
;
101
};
102
103
typedef
struct
Pe_OptionalHeader_t
Pe_OptionalHeader_t
;
104
105
LIEF_API
const
char
*
lief_pe_subsytem_str
(
enum
LIEF_PE_SUBSYSTEM
e);
106
107
#ifdef __cplusplus
108
}
109
#endif
110
111
#endif
LIEF_PE_SUBSYSTEM
LIEF_PE_SUBSYSTEM
Definition
OptionalHeader.h:50
LIEF_PE_SUBSYSTEM_OS2_CUI
@ LIEF_PE_SUBSYSTEM_OS2_CUI
Definition
OptionalHeader.h:55
LIEF_PE_SUBSYSTEM_EFI_RUNTIME_DRIVER
@ LIEF_PE_SUBSYSTEM_EFI_RUNTIME_DRIVER
Definition
OptionalHeader.h:62
LIEF_PE_SUBSYSTEM_POSIX_CUI
@ LIEF_PE_SUBSYSTEM_POSIX_CUI
Definition
OptionalHeader.h:56
LIEF_PE_SUBSYSTEM_WINDOWS_CUI
@ LIEF_PE_SUBSYSTEM_WINDOWS_CUI
Definition
OptionalHeader.h:54
LIEF_PE_SUBSYSTEM_WINDOWS_CE_GUI
@ LIEF_PE_SUBSYSTEM_WINDOWS_CE_GUI
Definition
OptionalHeader.h:58
LIEF_PE_SUBSYSTEM_EFI_ROM
@ LIEF_PE_SUBSYSTEM_EFI_ROM
Definition
OptionalHeader.h:64
LIEF_PE_SUBSYSTEM_NATIVE
@ LIEF_PE_SUBSYSTEM_NATIVE
Definition
OptionalHeader.h:52
LIEF_PE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
@ LIEF_PE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
Definition
OptionalHeader.h:60
LIEF_PE_SUBSYSTEM_EFI_APPLICATION
@ LIEF_PE_SUBSYSTEM_EFI_APPLICATION
Definition
OptionalHeader.h:59
LIEF_PE_SUBSYSTEM_XBOX
@ LIEF_PE_SUBSYSTEM_XBOX
Definition
OptionalHeader.h:65
LIEF_PE_SUBSYSTEM_NATIVE_WINDOWS
@ LIEF_PE_SUBSYSTEM_NATIVE_WINDOWS
Definition
OptionalHeader.h:57
LIEF_PE_SUBSYSTEM_XBOX_CODE_CATALOG
@ LIEF_PE_SUBSYSTEM_XBOX_CODE_CATALOG
Definition
OptionalHeader.h:67
LIEF_PE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
@ LIEF_PE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
Definition
OptionalHeader.h:66
LIEF_PE_SUBSYSTEM_UNKNOWN
@ LIEF_PE_SUBSYSTEM_UNKNOWN
Definition
OptionalHeader.h:51
LIEF_PE_SUBSYSTEM_WINDOWS_GUI
@ LIEF_PE_SUBSYSTEM_WINDOWS_GUI
Definition
OptionalHeader.h:53
LIEF_PE_DLL_CHARACTERISTICS
LIEF_PE_DLL_CHARACTERISTICS
Definition
OptionalHeader.h:27
LIEF_PE_DLL_CHARACTERISTICS_NO_ISOLATION
@ LIEF_PE_DLL_CHARACTERISTICS_NO_ISOLATION
Definition
OptionalHeader.h:35
LIEF_PE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
@ LIEF_PE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
Definition
OptionalHeader.h:46
LIEF_PE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
@ LIEF_PE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
Definition
OptionalHeader.h:28
LIEF_PE_DLL_CHARACTERISTICS_NO_SEH
@ LIEF_PE_DLL_CHARACTERISTICS_NO_SEH
Definition
OptionalHeader.h:37
LIEF_PE_DLL_CHARACTERISTICS_DYNAMIC_BASE
@ LIEF_PE_DLL_CHARACTERISTICS_DYNAMIC_BASE
Definition
OptionalHeader.h:30
LIEF_PE_DLL_CHARACTERISTICS_NO_BIND
@ LIEF_PE_DLL_CHARACTERISTICS_NO_BIND
Definition
OptionalHeader.h:40
LIEF_PE_DLL_CHARACTERISTICS_WDM_DRIVER
@ LIEF_PE_DLL_CHARACTERISTICS_WDM_DRIVER
Definition
OptionalHeader.h:43
LIEF_PE_DLL_CHARACTERISTICS_GUARD_CF
@ LIEF_PE_DLL_CHARACTERISTICS_GUARD_CF
Definition
OptionalHeader.h:44
LIEF_PE_DLL_CHARACTERISTICS_NX_COMPAT
@ LIEF_PE_DLL_CHARACTERISTICS_NX_COMPAT
Definition
OptionalHeader.h:34
LIEF_PE_DLL_CHARACTERISTICS_APPCONTAINER
@ LIEF_PE_DLL_CHARACTERISTICS_APPCONTAINER
Definition
OptionalHeader.h:41
LIEF_PE_DLL_CHARACTERISTICS_FORCE_INTEGRITY
@ LIEF_PE_DLL_CHARACTERISTICS_FORCE_INTEGRITY
Definition
OptionalHeader.h:32
lief_pe_subsytem_str
const char * lief_pe_subsytem_str(enum LIEF_PE_SUBSYSTEM e)
enums.h
Pe_OptionalHeader_t
Definition
OptionalHeader.h:70
Pe_OptionalHeader_t::major_image_version
uint16_t major_image_version
Definition
OptionalHeader.h:85
Pe_OptionalHeader_t::baseof_code
uint32_t baseof_code
Definition
OptionalHeader.h:78
Pe_OptionalHeader_t::win32_version_value
uint32_t win32_version_value
Definition
OptionalHeader.h:89
Pe_OptionalHeader_t::major_linker_version
uint8_t major_linker_version
Definition
OptionalHeader.h:72
Pe_OptionalHeader_t::magic
uint16_t magic
Definition
OptionalHeader.h:71
Pe_OptionalHeader_t::baseof_data
uint32_t baseof_data
Definition
OptionalHeader.h:79
Pe_OptionalHeader_t::major_operating_system_version
uint16_t major_operating_system_version
Definition
OptionalHeader.h:83
Pe_OptionalHeader_t::minor_image_version
uint16_t minor_image_version
Definition
OptionalHeader.h:86
Pe_OptionalHeader_t::sizeof_headers
uint32_t sizeof_headers
Definition
OptionalHeader.h:91
Pe_OptionalHeader_t::sizeof_uninitialized_data
uint32_t sizeof_uninitialized_data
Definition
OptionalHeader.h:76
Pe_OptionalHeader_t::major_subsystem_version
uint16_t major_subsystem_version
Definition
OptionalHeader.h:87
Pe_OptionalHeader_t::numberof_rva_and_size
uint32_t numberof_rva_and_size
Definition
OptionalHeader.h:100
Pe_OptionalHeader_t::file_alignment
uint32_t file_alignment
Definition
OptionalHeader.h:82
Pe_OptionalHeader_t::sizeof_image
uint32_t sizeof_image
Definition
OptionalHeader.h:90
Pe_OptionalHeader_t::minor_subsystem_version
uint16_t minor_subsystem_version
Definition
OptionalHeader.h:88
Pe_OptionalHeader_t::minor_linker_version
uint8_t minor_linker_version
Definition
OptionalHeader.h:73
Pe_OptionalHeader_t::sizeof_heap_commit
uint64_t sizeof_heap_commit
Definition
OptionalHeader.h:98
Pe_OptionalHeader_t::section_alignment
uint32_t section_alignment
Definition
OptionalHeader.h:81
Pe_OptionalHeader_t::subsystem
enum LIEF_PE_SUBSYSTEM subsystem
Definition
OptionalHeader.h:93
Pe_OptionalHeader_t::imagebase
uint64_t imagebase
Definition
OptionalHeader.h:80
Pe_OptionalHeader_t::minor_operating_system_version
uint16_t minor_operating_system_version
Definition
OptionalHeader.h:84
Pe_OptionalHeader_t::sizeof_stack_reserve
uint64_t sizeof_stack_reserve
Definition
OptionalHeader.h:95
Pe_OptionalHeader_t::dll_characteristics
uint32_t dll_characteristics
Definition
OptionalHeader.h:94
Pe_OptionalHeader_t::sizeof_heap_reserve
uint64_t sizeof_heap_reserve
Definition
OptionalHeader.h:97
Pe_OptionalHeader_t::sizeof_code
uint32_t sizeof_code
Definition
OptionalHeader.h:74
Pe_OptionalHeader_t::sizeof_initialized_data
uint32_t sizeof_initialized_data
Definition
OptionalHeader.h:75
Pe_OptionalHeader_t::checksum
uint32_t checksum
Definition
OptionalHeader.h:92
Pe_OptionalHeader_t::loader_flags
uint32_t loader_flags
Definition
OptionalHeader.h:99
Pe_OptionalHeader_t::addressof_entrypoint
uint32_t addressof_entrypoint
Definition
OptionalHeader.h:77
Pe_OptionalHeader_t::sizeof_stack_commit
uint64_t sizeof_stack_commit
Definition
OptionalHeader.h:96
visibility.h
LIEF_API
#define LIEF_API
Definition
visibility.h:43
Generated by
1.17.0