45 HIGH_ENTROPY_VA = 0x0020,
46 DYNAMIC_BASE = 0x0040,
47 FORCE_INTEGRITY = 0x0080,
49 NO_ISOLATION = 0x0200,
52 APPCONTAINER = 0x1000,
55 TERMINAL_SERVER_AWARE = 0x8000
68 EFI_BOOT_SERVICE_DRIVER = 11,
69 EFI_RUNTIME_DRIVER = 12,
72 WINDOWS_BOOT_APPLICATION = 16
91 return major_linker_version_;
96 return minor_linker_version_;
111 return sizeof_initialized_data_;
120 return sizeof_uninitialized_data_;
154 return section_align_;
165 return major_os_version_;
170 return minor_os_version_;
175 return major_image_version_;
180 return minor_image_version_;
185 return major_subsys_version_;
190 return minor_subsys_version_;
196 return win32_version_value_;
203 return sizeof_image_;
208 return sizeof_headers_;
228 return dll_characteristics_;
236 return sizeof_stack_reserve_;
241 return sizeof_stack_commit_;
246 return sizeof_heap_reserve_;
251 return sizeof_heap_commit_;
256 return loader_flags_;
280 void major_linker_version(uint8_t value) {
281 major_linker_version_ = value;
284 void minor_linker_version(uint8_t value) {
285 minor_linker_version_ = value;
288 void sizeof_code(uint32_t value) {
289 sizeof_code_ = value;
292 void sizeof_initialized_data(uint32_t value) {
293 sizeof_initialized_data_ = value;
296 void sizeof_uninitialized_data(uint32_t value) {
297 sizeof_uninitialized_data_ = value;
300 void addressof_entrypoint(uint32_t value) {
304 void baseof_code(uint32_t value) {
305 baseof_code_ = value;
308 void baseof_data(uint32_t value) {
309 baseof_data_ = value;
312 void imagebase(uint64_t value) {
316 void section_alignment(uint32_t value) {
317 section_align_ = value;
320 void file_alignment(uint32_t value) {
324 void major_operating_system_version(uint16_t value) {
325 major_os_version_ = value;
328 void minor_operating_system_version(uint16_t value) {
329 minor_os_version_ = value;
332 void major_image_version(uint16_t value) {
333 major_image_version_ = value;
336 void minor_image_version(uint16_t value) {
337 minor_image_version_ = value;
340 void major_subsystem_version(uint16_t value) {
341 major_subsys_version_ = value;
344 void minor_subsystem_version(uint16_t value) {
345 minor_subsys_version_ = value;
348 void win32_version_value(uint32_t value) {
349 win32_version_value_ = value;
352 void sizeof_image(uint32_t value) {
353 sizeof_image_ = value;
356 void sizeof_headers(uint32_t value) {
357 sizeof_headers_ = value;
360 void checksum(uint32_t value) {
364 void subsystem(SUBSYSTEM value) {
368 void dll_characteristics(uint32_t value) {
369 dll_characteristics_ = value;
372 void sizeof_stack_reserve(uint64_t value) {
373 sizeof_stack_reserve_ = value;
376 void sizeof_stack_commit(uint64_t value) {
377 sizeof_stack_commit_ = value;
380 void sizeof_heap_reserve(uint64_t value) {
381 sizeof_heap_reserve_ = value;
384 void sizeof_heap_commit(uint64_t value) {
385 sizeof_heap_commit_ = value;
388 void loader_flags(uint32_t value) {
389 loader_flags_ = value;
392 void numberof_rva_and_size(uint32_t value) {
393 nb_rva_size_ = value;
396 void accept(Visitor& visitor)
const override;
398 OptionalHeader& operator+=(DLL_CHARACTERISTICS c);
399 OptionalHeader& operator-=(DLL_CHARACTERISTICS c);
401 LIEF_API
friend std::ostream& operator<<(std::ostream& os,
const OptionalHeader& entry);
406 PE_TYPE magic_ = PE_TYPE::PE32;
407 uint8_t major_linker_version_ = 0;
408 uint8_t minor_linker_version_ = 0;
409 uint32_t sizeof_code_ = 0;
410 uint32_t sizeof_initialized_data_ = 0;
411 uint32_t sizeof_uninitialized_data_ = 0;
412 uint32_t entrypoint_ = 0;
413 uint32_t baseof_code_ = 0;
414 uint32_t baseof_data_ = 0;
415 uint64_t imagebase_ = 0;
416 uint32_t section_align_ = 0;
417 uint32_t file_align_ = 0;
418 uint16_t major_os_version_ = 0;
419 uint16_t minor_os_version_ = 0;
420 uint16_t major_image_version_ = 0;
421 uint16_t minor_image_version_ = 0;
422 uint16_t major_subsys_version_ = 0;
423 uint16_t minor_subsys_version_ = 0;
424 uint32_t win32_version_value_ = 0;
425 uint32_t sizeof_image_ = 0;
426 uint32_t sizeof_headers_ = 0;
427 uint32_t checksum_ = 0;
428 SUBSYSTEM subsystem_ = SUBSYSTEM::UNKNOWN;
429 uint32_t dll_characteristics_ = 0;
430 uint64_t sizeof_stack_reserve_ = 0;
431 uint64_t sizeof_stack_commit_ = 0;
432 uint64_t sizeof_heap_reserve_ = 0;
433 uint64_t sizeof_heap_commit_ = 0;
434 uint32_t loader_flags_ = 0;
435 uint32_t nb_rva_size_ = 0;