16#ifndef C_LIEF_PE_HEADER_H
17#define C_LIEF_PE_HEADER_H
21#include "LIEF/visibility.h"
27enum LIEF_PE_MACHINE_TYPES {
28 LIEF_PE_MACHINE_UNKNOWN = 0x0,
29 LIEF_PE_MACHINE_AM33 = 0x1D3,
30 LIEF_PE_MACHINE_AMD64 = 0x8664,
31 LIEF_PE_MACHINE_ARM = 0x1C0,
32 LIEF_PE_MACHINE_ARMNT = 0x1C4,
33 LIEF_PE_MACHINE_ARM64 = 0xAA64,
34 LIEF_PE_MACHINE_EBC = 0xEBC,
35 LIEF_PE_MACHINE_I386 = 0x14C,
36 LIEF_PE_MACHINE_IA64 = 0x200,
37 LIEF_PE_MACHINE_M32R = 0x9041,
38 LIEF_PE_MACHINE_MIPS16 = 0x266,
39 LIEF_PE_MACHINE_MIPSFPU = 0x366,
40 LIEF_PE_MACHINE_MIPSFPU16 = 0x466,
41 LIEF_PE_MACHINE_POWERPC = 0x1F0,
42 LIEF_PE_MACHINE_POWERPCFP = 0x1F1,
43 LIEF_PE_MACHINE_R4000 = 0x166,
44 LIEF_PE_MACHINE_RISCV32 = 0x5032,
45 LIEF_PE_MACHINE_RISCV64 = 0x5064,
46 LIEF_PE_MACHINE_RISCV128 = 0x5128,
47 LIEF_PE_MACHINE_SH3 = 0x1A2,
48 LIEF_PE_MACHINE_SH3DSP = 0x1A3,
49 LIEF_PE_MACHINE_SH4 = 0x1A6,
50 LIEF_PE_MACHINE_SH5 = 0x1A8,
51 LIEF_PE_MACHINE_THUMB = 0x1C2,
52 LIEF_PE_MACHINE_WCEMIPSV2 = 0x169
55enum LIEF_PE_HEADER_CHARACTERISTICS {
56 LIEF_PE_HEADER_CHARACTERISTICS_INVALID = 0x0000,
57 LIEF_PE_HEADER_CHARACTERISTICS_RELOCS_STRIPPED = 0x0001,
58 LIEF_PE_HEADER_CHARACTERISTICS_EXECUTABLE_IMAGE = 0x0002,
59 LIEF_PE_HEADER_CHARACTERISTICS_LINE_NUMS_STRIPPED = 0x0004,
60 LIEF_PE_HEADER_CHARACTERISTICS_LOCAL_SYMS_STRIPPED = 0x0008,
61 LIEF_PE_HEADER_CHARACTERISTICS_AGGRESSIVE_WS_TRIM = 0x0010,
62 LIEF_PE_HEADER_CHARACTERISTICS_LARGE_ADDRESS_AWARE = 0x0020,
63 LIEF_PE_HEADER_CHARACTERISTICS_BYTES_REVERSED_LO = 0x0080,
64 LIEF_PE_HEADER_CHARACTERISTICS_32BIT_MACHINE = 0x0100,
65 LIEF_PE_HEADER_CHARACTERISTICS_DEBUG_STRIPPED = 0x0200,
66 LIEF_PE_HEADER_CHARACTERISTICS_REMOVABLE_RUN_FROM_SWAP = 0x0400,
67 LIEF_PE_HEADER_CHARACTERISTICS_NET_RUN_FROM_SWAP = 0x0800,
68 LIEF_PE_HEADER_CHARACTERISTICS_SYSTEM = 0x1000,
69 LIEF_PE_HEADER_CHARACTERISTICS_DLL = 0x2000,
70 LIEF_PE_HEADER_CHARACTERISTICS_UP_SYSTEM_ONLY = 0x4000,
71 LIEF_PE_HEADER_CHARACTERISTICS_BYTES_REVERSED_HI = 0x8000
76 enum LIEF_PE_MACHINE_TYPES machine;
77 uint16_t numberof_sections;
78 uint32_t time_date_stamp;
79 uint32_t pointerto_symbol_table;
80 uint32_t numberof_symbols;
81 uint16_t sizeof_optional_header;
82 uint16_t characteristics;
87LIEF_API
const char* lief_pe_header_machine_str(
enum LIEF_PE_MACHINE_TYPES e);
88LIEF_API
const char* lief_pe_header_characteristics_str(
enum LIEF_PE_HEADER_CHARACTERISTICS e);