43 HIGH_ENTROPY_VA = 0x0020,
44 DYNAMIC_BASE = 0x0040,
45 FORCE_INTEGRITY = 0x0080,
47 NO_ISOLATION = 0x0200,
50 APPCONTAINER = 0x1000,
53 TERMINAL_SERVER_AWARE = 0x8000
66 EFI_BOOT_SERVICE_DRIVER = 11,
67 EFI_RUNTIME_DRIVER = 12,
70 WINDOWS_BOOT_APPLICATION = 16
89 return major_linker_version_;
94 return minor_linker_version_;
109 return sizeof_initialized_data_;
118 return sizeof_uninitialized_data_;
152 return section_align_;
163 return major_os_version_;
168 return minor_os_version_;
173 return major_image_version_;
178 return minor_image_version_;
183 return major_subsys_version_;
188 return minor_subsys_version_;
194 return win32_version_value_;
201 return sizeof_image_;
206 return sizeof_headers_;
223 return computed_checksum_;
236 return dll_characteristics_;
244 return sizeof_stack_reserve_;
249 return sizeof_stack_commit_;
254 return sizeof_heap_reserve_;
259 return sizeof_heap_commit_;
264 return loader_flags_;
288 void major_linker_version(uint8_t value) {
289 major_linker_version_ = value;
292 void minor_linker_version(uint8_t value) {
293 minor_linker_version_ = value;
296 void sizeof_code(uint32_t value) {
297 sizeof_code_ = value;
300 void sizeof_initialized_data(uint32_t value) {
301 sizeof_initialized_data_ = value;
304 void sizeof_uninitialized_data(uint32_t value) {
305 sizeof_uninitialized_data_ = value;
308 void addressof_entrypoint(uint32_t value) {
312 void baseof_code(uint32_t value) {
313 baseof_code_ = value;
316 void baseof_data(uint32_t value) {
317 baseof_data_ = value;
320 void imagebase(uint64_t value) {
324 void section_alignment(uint32_t value) {
325 section_align_ = value;
328 void file_alignment(uint32_t value) {
332 void major_operating_system_version(uint16_t value) {
333 major_os_version_ = value;
336 void minor_operating_system_version(uint16_t value) {
337 minor_os_version_ = value;
340 void major_image_version(uint16_t value) {
341 major_image_version_ = value;
344 void minor_image_version(uint16_t value) {
345 minor_image_version_ = value;
348 void major_subsystem_version(uint16_t value) {
349 major_subsys_version_ = value;
352 void minor_subsystem_version(uint16_t value) {
353 minor_subsys_version_ = value;
356 void win32_version_value(uint32_t value) {
357 win32_version_value_ = value;
360 void sizeof_image(uint32_t value) {
361 sizeof_image_ = value;
364 void sizeof_headers(uint32_t value) {
365 sizeof_headers_ = value;
368 void checksum(uint32_t value) {
372 void subsystem(SUBSYSTEM value) {
376 void dll_characteristics(uint32_t value) {
377 dll_characteristics_ = value;
380 void sizeof_stack_reserve(uint64_t value) {
381 sizeof_stack_reserve_ = value;
384 void sizeof_stack_commit(uint64_t value) {
385 sizeof_stack_commit_ = value;
388 void sizeof_heap_reserve(uint64_t value) {
389 sizeof_heap_reserve_ = value;
392 void sizeof_heap_commit(uint64_t value) {
393 sizeof_heap_commit_ = value;
396 void loader_flags(uint32_t value) {
397 loader_flags_ = value;
400 void numberof_rva_and_size(uint32_t value) {
401 nb_rva_size_ = value;
404 void accept(Visitor& visitor)
const override;
406 OptionalHeader& operator+=(DLL_CHARACTERISTICS c);
407 OptionalHeader& operator-=(DLL_CHARACTERISTICS c);
409 LIEF_API
friend std::ostream& operator<<(std::ostream& os,
const OptionalHeader& entry);
414 PE_TYPE magic_ = PE_TYPE::PE32;
415 uint8_t major_linker_version_ = 0;
416 uint8_t minor_linker_version_ = 0;
417 uint32_t sizeof_code_ = 0;
418 uint32_t sizeof_initialized_data_ = 0;
419 uint32_t sizeof_uninitialized_data_ = 0;
420 uint32_t entrypoint_ = 0;
421 uint32_t baseof_code_ = 0;
422 uint32_t baseof_data_ = 0;
423 uint64_t imagebase_ = 0;
424 uint32_t section_align_ = 0;
425 uint32_t file_align_ = 0;
426 uint16_t major_os_version_ = 0;
427 uint16_t minor_os_version_ = 0;
428 uint16_t major_image_version_ = 0;
429 uint16_t minor_image_version_ = 0;
430 uint16_t major_subsys_version_ = 0;
431 uint16_t minor_subsys_version_ = 0;
432 uint32_t win32_version_value_ = 0;
433 uint32_t sizeof_image_ = 0;
434 uint32_t sizeof_headers_ = 0;
435 uint32_t checksum_ = 0;
436 SUBSYSTEM subsystem_ = SUBSYSTEM::UNKNOWN;
437 uint32_t dll_characteristics_ = 0;
438 uint64_t sizeof_stack_reserve_ = 0;
439 uint64_t sizeof_stack_commit_ = 0;
440 uint64_t sizeof_heap_reserve_ = 0;
441 uint64_t sizeof_heap_commit_ = 0;
442 uint32_t loader_flags_ = 0;
443 uint32_t nb_rva_size_ = 0;
445 uint32_t computed_checksum_ = 0;