LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LoadConfiguration.hpp
Go to the documentation of this file.
1/* Copyright 2017 - 2025 R. Thomas
2 * Copyright 2017 - 2025 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 LIEF_PE_LOAD_CONFIGURATION_H
17#define LIEF_PE_LOAD_CONFIGURATION_H
18#include <ostream>
19#include <cstdint>
20
21#include <memory>
22
23#include "LIEF/Object.hpp"
24#include "LIEF/visibility.h"
25#include "LIEF/optional.hpp"
26#include "LIEF/iterators.hpp"
27
29
30namespace LIEF {
31class BinaryStream;
32
33namespace PE {
34class Parser;
35class CHPEMetadata;
39class LIEF_API LoadConfiguration : public Object {
47 public:
48 friend class Parser;
49
50 enum class IMAGE_GUARD : uint32_t {
51 NONE = 0x00000000, CF_INSTRUMENTED = 0x100,
55 CFW_INSTRUMENTED = 0x200,
58 CF_FUNCTION_TABLE_PRESENT = 0x400,
61 SECURITY_COOKIE_UNUSED = 0x800,
64 PROTECT_DELAYLOAD_IAT = 0x1000,
67 DELAYLOAD_IAT_IN_ITS_OWN_SECTION = 0x2000,
71 CF_EXPORT_SUPPRESSION_INFO_PRESENT = 0x4000,
75 CF_ENABLE_EXPORT_SUPPRESSION = 0x8000,
78 CF_LONGJUMP_TABLE_PRESENT = 0x10000,
81 EH_CONTINUATION_TABLE_PRESENT = 0x400000,
84
85 RF_INSTRUMENTED = 0x00020000,
86 RF_ENABLE = 0x00040000,
87 RF_STRICT = 0x00080000,
88 RETPOLINE_PRESENT = 0x00100000,
89 };
90
91 struct guard_function_t {
92 uint32_t rva = 0;
93 uint32_t extra = 0;
94 };
95
96 using guard_functions_t = std::vector<guard_function_t>;
97 using it_guard_functions = ref_iterator<guard_functions_t&>;
98 using it_const_guard_functions = const_ref_iterator<const guard_functions_t&>;
99
100 using dynamic_relocations_t = std::vector<std::unique_ptr<DynamicRelocation>>;
101 using it_dynamic_relocations_t = ref_iterator<dynamic_relocations_t&, DynamicRelocation*>;
102 using it_const_dynamic_relocations_t = const_ref_iterator<const dynamic_relocations_t&, const DynamicRelocation*>;
103
104 template<class PE_T>
105 static LIEF_LOCAL
106 std::unique_ptr<LoadConfiguration> parse(Parser& ctx, BinaryStream& stream);
107
109
110 LoadConfiguration& operator=(const LoadConfiguration&);
111 LoadConfiguration(const LoadConfiguration&);
112
113 LoadConfiguration(LoadConfiguration&&);
114 LoadConfiguration& operator=(LoadConfiguration&&);
115 uint32_t characteristics() const {
118 return characteristics_;
119 }
120 uint32_t size() const {
123 return characteristics_;
124 }
125 uint32_t timedatestamp() const {
128 return timedatestamp_;
129 }
130 uint16_t major_version() const {
133 return major_version_;
134 }
135 uint16_t minor_version() const {
138 return minor_version_;
139 }
140 uint32_t global_flags_clear() const {
144 return global_flags_clear_;
145 }
146 uint32_t global_flags_set() const {
150 return global_flags_set_;
151 }
152 uint32_t critical_section_default_timeout() const {
155 return critical_section_default_timeout_;
156 }
157 uint64_t decommit_free_block_threshold() const {
161 return decommit_free_block_threshold_;
162 }
163 uint64_t decommit_total_free_threshold() const {
167 return decommit_total_free_threshold_;
168 }
169 uint64_t lock_prefix_table() const {
174 return lock_prefix_table_;
175 }
176 uint64_t maximum_allocation_size() const {
180 return maximum_allocation_size_;
181 }
182 uint64_t virtual_memory_threshold() const {
185 return virtual_memory_threshold_;
186 }
187 uint64_t process_affinity_mask() const {
191 return process_affinity_mask_;
192 }
193 uint32_t process_heap_flags() const {
196 return process_heap_flags_;
197 }
198 uint16_t csd_version() const {
201 return csd_version_;
202 }
203 uint16_t reserved1() const {
206 return reserved1_;
207 }
208 uint16_t dependent_load_flags() const {
215 return reserved1_;
216 }
217 uint32_t editlist() const {
220 return editlist_;
221 }
222 uint64_t security_cookie() const {
225 return security_cookie_;
226 }
227 optional<uint64_t> se_handler_table() const {
231 return se_handler_table_;
232 }
233 optional<uint64_t> se_handler_count() const {
237 return se_handler_count_;
238 }
239 const std::vector<uint32_t>& seh_functions() const {
242 return seh_rva_;
243 }
244 optional<uint64_t> guard_cf_check_function_pointer() const {
247 return guard_cf_check_function_pointer_;
248 }
249 optional<uint64_t> guard_cf_dispatch_function_pointer() const {
252 return guard_cf_dispatch_function_pointer_;
253 }
254 optional<uint64_t> guard_cf_function_table() const {
258 return guard_cf_function_table_;
259 }
260 optional<uint64_t> guard_cf_function_count() const {
263 return guard_cf_function_count_;
264 }
265 it_const_guard_functions guard_cf_functions() const {
269 return guard_cf_functions_;
270 }
271
272 it_guard_functions guard_cf_functions() {
273 return guard_cf_functions_;
274 }
275 optional<uint32_t> guard_flags() const {
278 return flags_;
279 }
280 bool has(IMAGE_GUARD flag) const {
283 if (!flags_) {
284 return false;
285 }
286 return (*flags_ & (uint32_t)flag) != 0;
287 }
288 std::vector<IMAGE_GUARD> guard_cf_flags_list() const;
291 const CodeIntegrity* code_integrity() const {
294 return code_integrity_ ? &*code_integrity_ : nullptr;
295 }
296
297 CodeIntegrity* code_integrity() {
298 return code_integrity_ ? &*code_integrity_ : nullptr;
299 }
300 optional<uint64_t> guard_address_taken_iat_entry_table() const {
303 return guard_address_taken_iat_entry_table_;
304 }
305 optional<uint64_t> guard_address_taken_iat_entry_count() const {
309 return guard_address_taken_iat_entry_count_;
310 }
311 it_const_guard_functions guard_address_taken_iat_entries() const {
314 return guard_address_taken_iat_entries_;
315 }
316
317 it_guard_functions guard_address_taken_iat_entries() {
318 return guard_address_taken_iat_entries_;
319 }
320 optional<uint64_t> guard_long_jump_target_table() const {
323 return guard_long_jump_target_table_;
324 }
325 optional<uint64_t> guard_long_jump_target_count() const {
329 return guard_long_jump_target_count_;
330 }
331 it_const_guard_functions guard_long_jump_targets() const {
334 return guard_long_jump_targets_;
335 }
336
337 it_guard_functions guard_long_jump_targets() {
338 return guard_long_jump_targets_;
339 }
340 optional<uint64_t> dynamic_value_reloc_table() const {
343 return dynamic_value_reloc_table_;
344 }
345 it_dynamic_relocations_t dynamic_relocations() {
348 return dynamic_relocs_;
349 }
350
351 it_const_dynamic_relocations_t dynamic_relocations() const {
352 return dynamic_relocs_;
353 }
354 optional<uint64_t> hybrid_metadata_pointer() const {
357 return hybrid_metadata_pointer_;
358 }
359 optional<uint64_t> chpe_metadata_pointer() const {
362 return hybrid_metadata_pointer();
363 }
364 const CHPEMetadata* chpe_metadata() const {
367 return chpe_.get();
368 }
369
370 CHPEMetadata* chpe_metadata() {
371 return chpe_.get();
372 }
373 optional<uint64_t> guard_rf_failure_routine() const {
376 return guard_rf_failure_routine_;
377 }
378 optional<uint64_t> guard_rf_failure_routine_function_pointer() const {
381 return guard_rf_failure_routine_function_pointer_;
382 }
383 optional<uint32_t> dynamic_value_reloctable_offset() const {
386 return dynamic_value_reloctable_offset_;
387 }
388 optional<uint16_t> dynamic_value_reloctable_section() const {
391 return dynamic_value_reloctable_section_;
392 }
393 optional<uint16_t> reserved2() const {
396 return reserved2_;
397 }
398 optional<uint64_t> guard_rf_verify_stackpointer_function_pointer() const {
401 return guardrf_verify_stackpointer_function_pointer_;
402 }
403 optional<uint32_t> hotpatch_table_offset() const {
406 return hotpatch_table_offset_;
407 }
408
409 optional<uint32_t> reserved3() const {
410 return reserved3_;
411 }
412
413 optional<uint64_t> enclave_configuration_ptr() const {
414 return enclave_configuration_ptr_;
415 }
416
417 const EnclaveConfiguration* enclave_config() const {
418 return enclave_config_.get();
419 }
420
421 EnclaveConfiguration* enclave_config() {
422 return enclave_config_.get();
423 }
424
425 optional<uint64_t> volatile_metadata_pointer() const {
426 return volatile_metadata_pointer_;
427 }
428
429 const VolatileMetadata* volatile_metadata() const {
430 return volatile_metadata_.get();
431 }
432
433 VolatileMetadata* volatile_metadata() {
434 return volatile_metadata_.get();
435 }
436
437 optional<uint64_t> guard_eh_continuation_table() const {
438 return guard_eh_continuation_table_;
439 }
440
441 optional<uint64_t> guard_eh_continuation_count() const {
442 return guard_eh_continuation_count_;
443 }
444
445 it_const_guard_functions guard_eh_continuation_functions() const {
446 return guard_eh_continuation_functions_;
447 }
448
449 it_guard_functions guard_eh_continuation_functions() {
450 return guard_eh_continuation_functions_;
451 }
452
453 optional<uint64_t> guard_xfg_check_function_pointer() const {
454 return guard_xfg_check_function_pointer_;
455 }
456
457 optional<uint64_t> guard_xfg_dispatch_function_pointer() const {
458 return guard_xfg_dispatch_function_pointer_;
459 }
460
461 optional<uint64_t> guard_xfg_table_dispatch_function_pointer() const {
462 return guard_xfg_table_dispatch_function_pointer_;
463 }
464
465 optional<uint64_t> cast_guard_os_determined_failure_mode() const {
466 return cast_guard_os_determined_failure_mode_;
467 }
468
469 optional<uint64_t> guard_memcpy_function_pointer() const {
470 return guard_memcpy_function_pointer_;
471 }
472
473 LoadConfiguration& characteristics(uint32_t characteristics) {
474 characteristics_ = characteristics;
475 return *this;
476 }
477
478 LoadConfiguration& size(uint32_t value) {
479 return characteristics(value);
480 }
481
482 LoadConfiguration& timedatestamp(uint32_t timedatestamp) {
483 timedatestamp_ = timedatestamp;
484 return *this;
485 }
486
487 LoadConfiguration& major_version(uint16_t major_version) {
488 major_version_ = major_version;
489 return *this;
490 }
491
492 LoadConfiguration& minor_version(uint16_t minor_version) {
493 minor_version_ = minor_version;
494 return *this;
495 }
496
497 LoadConfiguration& global_flags_clear(uint32_t global_flags_clear) {
498 global_flags_clear_ = global_flags_clear;
499 return *this;
500 }
501
502 LoadConfiguration& global_flags_set(uint32_t global_flags_set) {
503 global_flags_set_ = global_flags_set;
504 return *this;
505 }
506
507 LoadConfiguration& critical_section_default_timeout(uint32_t critical_section_default_timeout) {
508 critical_section_default_timeout_ = critical_section_default_timeout;
509 return *this;
510 }
511
512 LoadConfiguration& decommit_free_block_threshold(uint64_t decommit_free_block_threshold) {
513 decommit_free_block_threshold_ = decommit_free_block_threshold;
514 return *this;
515 }
516
517 LoadConfiguration& decommit_total_free_threshold(uint64_t decommit_total_free_threshold) {
518 decommit_total_free_threshold_ = decommit_total_free_threshold;
519 return *this;
520 }
521
522 LoadConfiguration& lock_prefix_table(uint64_t lock_prefix_table) {
523 lock_prefix_table_ = lock_prefix_table;
524 return *this;
525 }
526
527 LoadConfiguration& maximum_allocation_size(uint64_t maximum_allocation_size) {
528 maximum_allocation_size_ = maximum_allocation_size;
529 return *this;
530 }
531
532 LoadConfiguration& virtual_memory_threshold(uint64_t virtual_memory_threshold) {
533 virtual_memory_threshold_ = virtual_memory_threshold;
534 return *this;
535 }
536
537 LoadConfiguration& process_affinity_mask(uint64_t process_affinity_mask) {
538 process_affinity_mask_ = process_affinity_mask;
539 return *this;
540 }
541
542 LoadConfiguration& process_heap_flags(uint32_t process_heap_flagsid) {
543 process_heap_flags_ = process_heap_flagsid;
544 return *this;
545 }
546
547 LoadConfiguration& csd_version(uint16_t csd_version) {
548 csd_version_ = csd_version;
549 return *this;
550 }
551
552 LoadConfiguration& reserved1(uint16_t reserved1) {
553 reserved1_ = reserved1;
554 return *this;
555 }
556
557 LoadConfiguration& dependent_load_flags(uint16_t flags) {
558 reserved1(flags);
559 return *this;
560 }
561
562 LoadConfiguration& editlist(uint32_t editlist) {
563 editlist_ = editlist;
564 return *this;
565 }
566
567 LoadConfiguration& security_cookie(uint64_t security_cookie) {
568 security_cookie_ = security_cookie;
569 return *this;
570 }
571
572 LoadConfiguration& se_handler_table(uint64_t se_handler_table) {
573 se_handler_table_ = se_handler_table;
574 return *this;
575 }
576
577 LoadConfiguration& se_handler_count(uint64_t se_handler_count) {
578 se_handler_count_ = se_handler_count;
579 return *this;
580 }
581
582 LoadConfiguration& guard_cf_check_function_pointer(uint64_t check_pointer) {
583 guard_cf_check_function_pointer_ = check_pointer;
584 return *this;
585 }
586
587 LoadConfiguration& guard_cf_dispatch_function_pointer(uint64_t dispatch_pointer) {
588 guard_cf_dispatch_function_pointer_ = dispatch_pointer;
589 return *this;
590 }
591
592 LoadConfiguration& guard_cf_function_table(uint64_t guard_cf_function_table) {
593 guard_cf_function_table_ = guard_cf_function_table;
594 return *this;
595 }
596
597 LoadConfiguration& guard_cf_function_count(uint64_t guard_cf_function_count) {
598 guard_cf_function_count_ = guard_cf_function_count;
599 return *this;
600 }
601
602 LoadConfiguration& guard_flags(IMAGE_GUARD flags) {
603 flags_ = (uint32_t)flags;
604 return *this;
605 }
606
607 LoadConfiguration& guard_flags(uint32_t flags) {
608 flags_ = flags;
609 return *this;
610 }
611
612 LoadConfiguration& code_integrity(CodeIntegrity CI) {
613 code_integrity_ = std::move(CI);
614 return *this;
615 }
616
617 LoadConfiguration& guard_address_taken_iat_entry_table(uint64_t value) {
618 guard_address_taken_iat_entry_table_ = value;
619 return *this;
620 }
621
622 LoadConfiguration& guard_address_taken_iat_entry_count(uint64_t value) {
623 guard_address_taken_iat_entry_count_ = value;
624 return *this;
625 }
626
627 LoadConfiguration& guard_long_jump_target_table(uint64_t value) {
628 guard_long_jump_target_table_ = value;
629 return *this;
630 }
631
632 LoadConfiguration& guard_long_jump_target_count(uint64_t value) {
633 guard_long_jump_target_count_ = value;
634 return *this;
635 }
636
637 LoadConfiguration& dynamic_value_reloc_table(uint64_t value) {
638 dynamic_value_reloc_table_ = value;
639 return *this;
640 }
641
642 LoadConfiguration& hybrid_metadata_pointer(uint64_t value) {
643 hybrid_metadata_pointer_ = value;
644 return *this;
645 }
646
647 LoadConfiguration& guard_rf_failure_routine(uint64_t value) {
648 guard_rf_failure_routine_ = value;
649 return *this;
650 }
651
652 LoadConfiguration& guard_rf_failure_routine_function_pointer(uint64_t value) {
653 guard_rf_failure_routine_function_pointer_ = value;
654 return *this;
655 }
656
657 LoadConfiguration& dynamic_value_reloctable_offset(uint32_t value) {
658 dynamic_value_reloctable_offset_ = value;
659 return *this;
660 }
661
662 LoadConfiguration& dynamic_value_reloctable_section(uint16_t value) {
663 dynamic_value_reloctable_section_ = value;
664 return *this;
665 }
666
667 LoadConfiguration& reserved2(uint16_t value) {
668 reserved2_ = value;
669 return *this;
670 }
671
672 LoadConfiguration& guard_rf_verify_stackpointer_function_pointer(uint64_t value) {
673 guardrf_verify_stackpointer_function_pointer_ = value;
674 return *this;
675 }
676
677 LoadConfiguration& hotpatch_table_offset(uint32_t value) {
678 hotpatch_table_offset_ = value;
679 return *this;
680 }
681
682 LoadConfiguration& reserved3(uint32_t value) {
683 reserved3_ = value;
684 return *this;
685 }
686
687 LoadConfiguration& enclave_configuration_ptr(uint64_t value) {
688 enclave_configuration_ptr_ = value;
689 return *this;
690 }
691
692 LoadConfiguration& volatile_metadata_pointer(uint64_t value) {
693 volatile_metadata_pointer_ = value;
694 return *this;
695 }
696
697 LoadConfiguration& guard_eh_continuation_table(uint64_t value) {
698 guard_eh_continuation_table_ = value;
699 return *this;
700 }
701
702 LoadConfiguration& guard_eh_continuation_count(uint64_t value) {
703 guard_eh_continuation_count_ = value;
704 return *this;
705 }
706
707 LoadConfiguration& guard_xfg_check_function_pointer(uint64_t value) {
708 guard_xfg_check_function_pointer_ = value;
709 return *this;
710 }
711
712 LoadConfiguration& guard_xfg_dispatch_function_pointer(uint64_t value) {
713 guard_xfg_dispatch_function_pointer_ = value;
714 return *this;
715 }
716
717 LoadConfiguration& guard_xfg_table_dispatch_function_pointer(uint64_t value) {
718 guard_xfg_table_dispatch_function_pointer_ = value;
719 return *this;
720 }
721
722 LoadConfiguration& cast_guard_os_determined_failure_mode(uint64_t value) {
723 cast_guard_os_determined_failure_mode_ = value;
724 return *this;
725 }
726
727 LoadConfiguration& guard_memcpy_function_pointer(uint64_t value) {
728 guard_memcpy_function_pointer_ = value;
729 return *this;
730 }
731
732 ~LoadConfiguration() override;
733
734 void accept(Visitor& visitor) const override;
735
736 std::string to_string() const;
737
738 LIEF_API friend
739 std::ostream& operator<<(std::ostream& os, const LoadConfiguration& config)
740 {
741 os << config.to_string();
742 return os;
743 }
744 LIEF_LOCAL static ok_error_t parse_seh_table(
747 Parser& ctx, BinaryStream& stream, LoadConfiguration& config);
748 LIEF_LOCAL static ok_error_t parse_guard_functions(
751 Parser& ctx, BinaryStream& stream, LoadConfiguration& config,
752 size_t count, guard_functions_t LoadConfiguration::* dst);
753 LIEF_LOCAL static ok_error_t parse_dyn_relocs(
756 Parser& ctx, LoadConfiguration& config);
757 template<uint8_t version, class PE_T>
760 LIEF_LOCAL static ok_error_t parse_dyn_relocs_entries(
761 Parser& ctx, BinaryStream& stream, LoadConfiguration& config,
762 size_t size);
763 template<class PE_T>
766 LIEF_LOCAL static ok_error_t parse_enclave_config(
767 Parser& ctx, LoadConfiguration& config);
768 LIEF_LOCAL static ok_error_t parse_volatile_metadata(
771 Parser& ctx, LoadConfiguration& config);
772
773 protected:
774 uint32_t characteristics_ = 0;
775 uint32_t timedatestamp_ = 0;
776
777 uint16_t major_version_ = 0;
778 uint16_t minor_version_ = 0;
779
780 uint32_t global_flags_clear_ = 0;
781 uint32_t global_flags_set_ = 0;
782
783 uint32_t critical_section_default_timeout_ = 0;
784
785 uint64_t decommit_free_block_threshold_ = 0;
786 uint64_t decommit_total_free_threshold_ = 0;
787
788 uint64_t lock_prefix_table_ = 0;
789 uint64_t maximum_allocation_size_ = 0;
790 uint64_t virtual_memory_threshold_ = 0;
791 uint64_t process_affinity_mask_ = 0;
792 uint32_t process_heap_flags_ = 0;
793 uint16_t csd_version_ = 0;
794 uint16_t reserved1_ = 0; // named DependentLoadFlags in recent headers
795 uint64_t editlist_ = 0;
796 uint64_t security_cookie_ = 0;
797
798 optional<uint64_t> se_handler_table_;
799 optional<uint64_t> se_handler_count_;
800
801 optional<uint64_t> guard_cf_check_function_pointer_;
802 optional<uint64_t> guard_cf_dispatch_function_pointer_;
803 optional<uint64_t> guard_cf_function_table_;
804 optional<uint64_t> guard_cf_function_count_;
805 optional<uint32_t> flags_;
806
807 optional<CodeIntegrity> code_integrity_;
808
809 optional<uint64_t> guard_address_taken_iat_entry_table_;
810 optional<uint64_t> guard_address_taken_iat_entry_count_;
811 optional<uint64_t> guard_long_jump_target_table_;
812 optional<uint64_t> guard_long_jump_target_count_;
813
814 optional<uint64_t> dynamic_value_reloc_table_;
815 optional<uint64_t> hybrid_metadata_pointer_;
816
817 optional<uint64_t> guard_rf_failure_routine_;
818 optional<uint64_t> guard_rf_failure_routine_function_pointer_;
819 optional<uint32_t> dynamic_value_reloctable_offset_;
820 optional<uint16_t> dynamic_value_reloctable_section_;
821 optional<uint16_t> reserved2_;
822
823 optional<uint64_t> guardrf_verify_stackpointer_function_pointer_;
824 optional<uint32_t> hotpatch_table_offset_;
825
826 optional<uint32_t> reserved3_;
827 optional<uint64_t> enclave_configuration_ptr_;
828
829 optional<uint64_t> volatile_metadata_pointer_;
830
831 optional<uint64_t> guard_eh_continuation_table_;
832 optional<uint64_t> guard_eh_continuation_count_;
833
834 optional<uint64_t> guard_xfg_check_function_pointer_;
835 optional<uint64_t> guard_xfg_dispatch_function_pointer_;
836 optional<uint64_t> guard_xfg_table_dispatch_function_pointer_;
837
838 optional<uint64_t> cast_guard_os_determined_failure_mode_;
839
840 optional<uint64_t> guard_memcpy_function_pointer_;
841
842 std::unique_ptr<CHPEMetadata> chpe_;
843 std::vector<uint32_t> seh_rva_;
844 guard_functions_t guard_cf_functions_;
845 guard_functions_t guard_address_taken_iat_entries_;
846 guard_functions_t guard_long_jump_targets_;
847 guard_functions_t guard_eh_continuation_functions_;
848 dynamic_relocations_t dynamic_relocs_;
849 std::unique_ptr<EnclaveConfiguration> enclave_config_;
850 std::unique_ptr<VolatileMetadata> volatile_metadata_;
851};
852
853LIEF_API const char* to_string(LoadConfiguration::IMAGE_GUARD e);
854
855}
856}
857
858#endif
CodeIntegrity.hpp
Object.hpp
LIEF::BinaryStream
Class that is used to a read stream of data from different sources.
Definition BinaryStream.hpp:33
LIEF::PE::CHPEMetadata
Base class for any Compiled Hybrid Portable Executable (CHPE) metadata.
Definition PE/LoadConfigurations/CHPEMetadata/Metadata.hpp:32
LIEF::PE::DynamicRelocation
This is the base class for any IMAGE_DYNAMIC_RELOCATION32, IMAGE_DYNAMIC_RELOCATION32_V2,...
Definition DynamicRelocationBase.hpp:33
LIEF::PE::EnclaveConfiguration
This class represents the enclave configuration.
Definition EnclaveConfiguration.hpp:32
LIEF::PE::LoadConfiguration
This class represents the load configuration data associated with the IMAGE_LOAD_CONFIG_DIRECTORY.
Definition LoadConfiguration.hpp:46
LIEF::PE::LoadConfiguration::editlist
uint32_t editlist() const
Reserved for use by the system.
Definition LoadConfiguration.hpp:219
LIEF::PE::LoadConfiguration::guard_cf_function_count
LoadConfiguration & guard_cf_function_count(uint64_t guard_cf_function_count)
Definition LoadConfiguration.hpp:597
LIEF::PE::LoadConfiguration::parse
static std::unique_ptr< LoadConfiguration > parse(Parser &ctx, BinaryStream &stream)
LIEF::PE::LoadConfiguration::guard_eh_continuation_table
optional< uint64_t > guard_eh_continuation_table() const
Definition LoadConfiguration.hpp:437
LIEF::PE::LoadConfiguration::chpe_metadata_pointer
optional< uint64_t > chpe_metadata_pointer() const
VA to the extra Compiled Hybrid Portable Executable (CHPE) metadata.
Definition LoadConfiguration.hpp:361
LIEF::PE::LoadConfiguration::guard_eh_continuation_count
LoadConfiguration & guard_eh_continuation_count(uint64_t value)
Definition LoadConfiguration.hpp:702
LIEF::PE::LoadConfiguration::operator=
LoadConfiguration & operator=(const LoadConfiguration &)
LIEF::PE::LoadConfiguration::guard_xfg_dispatch_function_pointer
optional< uint64_t > guard_xfg_dispatch_function_pointer() const
Definition LoadConfiguration.hpp:457
LIEF::PE::LoadConfiguration::guard_cf_check_function_pointer
LoadConfiguration & guard_cf_check_function_pointer(uint64_t check_pointer)
Definition LoadConfiguration.hpp:582
LIEF::PE::LoadConfiguration::to_string
std::string to_string() const
LIEF::PE::LoadConfiguration::dynamic_value_reloctable_section
LoadConfiguration & dynamic_value_reloctable_section(uint16_t value)
Definition LoadConfiguration.hpp:662
LIEF::PE::LoadConfiguration::decommit_free_block_threshold
LoadConfiguration & decommit_free_block_threshold(uint64_t decommit_free_block_threshold)
Definition LoadConfiguration.hpp:512
LIEF::PE::LoadConfiguration::guard_long_jump_target_table
LoadConfiguration & guard_long_jump_target_table(uint64_t value)
Definition LoadConfiguration.hpp:627
LIEF::PE::LoadConfiguration::dynamic_relocations
it_dynamic_relocations_t dynamic_relocations()
Return an iterator over the Dynamic relocations (DVRT)
Definition LoadConfiguration.hpp:347
LIEF::PE::LoadConfiguration::characteristics
uint32_t characteristics() const
Characteristics of the structure which is defined by its size.
Definition LoadConfiguration.hpp:117
LIEF::PE::LoadConfiguration::guard_long_jump_target_table
optional< uint64_t > guard_long_jump_target_table() const
The VA where Control Flow Guard long jump target table is stored.
Definition LoadConfiguration.hpp:322
LIEF::PE::LoadConfiguration::maximum_allocation_size
LoadConfiguration & maximum_allocation_size(uint64_t maximum_allocation_size)
Definition LoadConfiguration.hpp:527
LIEF::PE::LoadConfiguration::editlist
LoadConfiguration & editlist(uint32_t editlist)
Definition LoadConfiguration.hpp:562
LIEF::PE::LoadConfiguration::security_cookie
LoadConfiguration & security_cookie(uint64_t security_cookie)
Definition LoadConfiguration.hpp:567
LIEF::PE::LoadConfiguration::code_integrity
CodeIntegrity * code_integrity()
Definition LoadConfiguration.hpp:297
LIEF::PE::LoadConfiguration::critical_section_default_timeout
uint32_t critical_section_default_timeout() const
The critical section default time-out value.
Definition LoadConfiguration.hpp:154
LIEF::PE::LoadConfiguration::guard_xfg_dispatch_function_pointer
LoadConfiguration & guard_xfg_dispatch_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:712
LIEF::PE::LoadConfiguration::operator=
LoadConfiguration & operator=(LoadConfiguration &&)
LIEF::PE::LoadConfiguration::guard_long_jump_target_count
LoadConfiguration & guard_long_jump_target_count(uint64_t value)
Definition LoadConfiguration.hpp:632
LIEF::PE::LoadConfiguration::security_cookie
uint64_t security_cookie() const
A pointer to a cookie that is used by Visual C++ or GS implementation.
Definition LoadConfiguration.hpp:224
LIEF::PE::LoadConfiguration::LoadConfiguration
LoadConfiguration()
LIEF::PE::LoadConfiguration::decommit_total_free_threshold
LoadConfiguration & decommit_total_free_threshold(uint64_t decommit_total_free_threshold)
Definition LoadConfiguration.hpp:517
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entry_table
optional< uint64_t > guard_address_taken_iat_entry_table() const
The VA where Control Flow Guard address taken IAT table is stored.
Definition LoadConfiguration.hpp:302
LIEF::PE::LoadConfiguration::guard_rf_verify_stackpointer_function_pointer
LoadConfiguration & guard_rf_verify_stackpointer_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:672
LIEF::PE::LoadConfiguration::guard_memcpy_function_pointer
optional< uint64_t > guard_memcpy_function_pointer() const
Definition LoadConfiguration.hpp:469
LIEF::PE::LoadConfiguration::decommit_free_block_threshold
uint64_t decommit_free_block_threshold() const
The size of the minimum block that must be freed before it is freed (de-committed),...
Definition LoadConfiguration.hpp:160
LIEF::PE::LoadConfiguration::guard_cf_flags_list
std::vector< IMAGE_GUARD > guard_cf_flags_list() const
List of flags.
LIEF::PE::LoadConfiguration::hybrid_metadata_pointer
LoadConfiguration & hybrid_metadata_pointer(uint64_t value)
Definition LoadConfiguration.hpp:642
LIEF::PE::LoadConfiguration::dynamic_value_reloctable_offset
optional< uint32_t > dynamic_value_reloctable_offset() const
Offset of dynamic relocation table relative to the relocation table.
Definition LoadConfiguration.hpp:385
LIEF::PE::LoadConfiguration::~LoadConfiguration
~LoadConfiguration() override
LIEF::PE::LoadConfiguration::se_handler_table
LoadConfiguration & se_handler_table(uint64_t se_handler_table)
Definition LoadConfiguration.hpp:572
LIEF::PE::LoadConfiguration::guard_cf_function_table
LoadConfiguration & guard_cf_function_table(uint64_t guard_cf_function_table)
Definition LoadConfiguration.hpp:592
LIEF::PE::LoadConfiguration::reserved2
LoadConfiguration & reserved2(uint16_t value)
Definition LoadConfiguration.hpp:667
LIEF::PE::LoadConfiguration::seh_functions
const std::vector< uint32_t > & seh_functions() const
Return the list of the function RVA in the SEH table (if any)
Definition LoadConfiguration.hpp:241
LIEF::PE::LoadConfiguration::enclave_configuration_ptr
LoadConfiguration & enclave_configuration_ptr(uint64_t value)
Definition LoadConfiguration.hpp:687
LIEF::PE::LoadConfiguration::characteristics
LoadConfiguration & characteristics(uint32_t characteristics)
Definition LoadConfiguration.hpp:473
LIEF::PE::LoadConfiguration::process_affinity_mask
uint64_t process_affinity_mask() const
The process affinity mask. For more information, see GetProcessAffinityMask. This member is available...
Definition LoadConfiguration.hpp:190
LIEF::PE::LoadConfiguration::guard_cf_check_function_pointer
optional< uint64_t > guard_cf_check_function_pointer() const
The VA where Control Flow Guard check-function pointer is stored.
Definition LoadConfiguration.hpp:246
LIEF::PE::LoadConfiguration::se_handler_count
optional< uint64_t > se_handler_count() const
The count of unique handlers in the table. This member is available only for x86.
Definition LoadConfiguration.hpp:236
LIEF::PE::LoadConfiguration::guard_flags
LoadConfiguration & guard_flags(IMAGE_GUARD flags)
Definition LoadConfiguration.hpp:602
LIEF::PE::LoadConfiguration::enclave_configuration_ptr
optional< uint64_t > enclave_configuration_ptr() const
Definition LoadConfiguration.hpp:413
LIEF::PE::LoadConfiguration::lock_prefix_table
LoadConfiguration & lock_prefix_table(uint64_t lock_prefix_table)
Definition LoadConfiguration.hpp:522
LIEF::PE::LoadConfiguration::dynamic_value_reloctable_offset
LoadConfiguration & dynamic_value_reloctable_offset(uint32_t value)
Definition LoadConfiguration.hpp:657
LIEF::PE::LoadConfiguration::global_flags_set
LoadConfiguration & global_flags_set(uint32_t global_flags_set)
Definition LoadConfiguration.hpp:502
LIEF::PE::LoadConfiguration::guard_memcpy_function_pointer
LoadConfiguration & guard_memcpy_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:727
LIEF::PE::LoadConfiguration::enclave_config
const EnclaveConfiguration * enclave_config() const
Definition LoadConfiguration.hpp:417
LIEF::PE::LoadConfiguration::maximum_allocation_size
uint64_t maximum_allocation_size() const
The maximum allocation size, in bytes. This member is obsolete and is used only for debugging purpose...
Definition LoadConfiguration.hpp:179
LIEF::PE::LoadConfiguration::code_integrity
LoadConfiguration & code_integrity(CodeIntegrity CI)
Definition LoadConfiguration.hpp:612
LIEF::PE::LoadConfiguration::chpe_metadata
CHPEMetadata * chpe_metadata()
Definition LoadConfiguration.hpp:370
LIEF::PE::LoadConfiguration::guard_xfg_check_function_pointer
optional< uint64_t > guard_xfg_check_function_pointer() const
Definition LoadConfiguration.hpp:453
LIEF::PE::LoadConfiguration::guard_rf_failure_routine
LoadConfiguration & guard_rf_failure_routine(uint64_t value)
Definition LoadConfiguration.hpp:647
LIEF::PE::LoadConfiguration::reserved3
LoadConfiguration & reserved3(uint32_t value)
Definition LoadConfiguration.hpp:682
LIEF::PE::LoadConfiguration::minor_version
uint16_t minor_version() const
Minor version.
Definition LoadConfiguration.hpp:137
LIEF::PE::LoadConfiguration::guard_flags
LoadConfiguration & guard_flags(uint32_t flags)
Definition LoadConfiguration.hpp:607
LIEF::PE::LoadConfiguration::guard_rf_failure_routine
optional< uint64_t > guard_rf_failure_routine() const
VA of the failure routine.
Definition LoadConfiguration.hpp:375
LIEF::PE::LoadConfiguration::guard_cf_function_table
optional< uint64_t > guard_cf_function_table() const
The VA of the sorted table of RVAs of each Control Flow Guard function in the image.
Definition LoadConfiguration.hpp:257
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entries
it_const_guard_functions guard_address_taken_iat_entries() const
List of RVA pointed by guard_address_taken_iat_entry_table()
Definition LoadConfiguration.hpp:313
LIEF::PE::LoadConfiguration::guard_cf_functions
it_const_guard_functions guard_cf_functions() const
Iterator over the Control Flow Guard functions referenced by guard_cf_function_table()
Definition LoadConfiguration.hpp:268
LIEF::PE::LoadConfiguration::guard_long_jump_targets
it_guard_functions guard_long_jump_targets()
Definition LoadConfiguration.hpp:337
LIEF::PE::LoadConfiguration::timedatestamp
uint32_t timedatestamp() const
The date and time stamp value.
Definition LoadConfiguration.hpp:127
LIEF::PE::LoadConfiguration::chpe_metadata
const CHPEMetadata * chpe_metadata() const
Compiled Hybrid Portable Executable (CHPE) metadata (if any)
Definition LoadConfiguration.hpp:366
LIEF::PE::LoadConfiguration::size
uint32_t size() const
Size of the current structure.
Definition LoadConfiguration.hpp:122
LIEF::PE::LoadConfiguration::csd_version
uint16_t csd_version() const
The service pack version.
Definition LoadConfiguration.hpp:200
LIEF::PE::LoadConfiguration::guard_rf_failure_routine_function_pointer
LoadConfiguration & guard_rf_failure_routine_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:652
LIEF::PE::LoadConfiguration::global_flags_set
uint32_t global_flags_set() const
The global flags that control system behavior. For more information, see Gflags.exe.
Definition LoadConfiguration.hpp:149
LIEF::PE::LoadConfiguration::dynamic_value_reloctable_section
optional< uint16_t > dynamic_value_reloctable_section() const
The section index of the dynamic value relocation table.
Definition LoadConfiguration.hpp:390
LIEF::PE::LoadConfiguration::dynamic_relocations
it_const_dynamic_relocations_t dynamic_relocations() const
Definition LoadConfiguration.hpp:351
LIEF::PE::LoadConfiguration::virtual_memory_threshold
LoadConfiguration & virtual_memory_threshold(uint64_t virtual_memory_threshold)
Definition LoadConfiguration.hpp:532
LIEF::PE::LoadConfiguration::virtual_memory_threshold
uint64_t virtual_memory_threshold() const
The maximum block size that can be allocated from heap segments, in bytes.
Definition LoadConfiguration.hpp:184
LIEF::PE::LoadConfiguration::LoadConfiguration
LoadConfiguration(LoadConfiguration &&)
LIEF::PE::LoadConfiguration::accept
void accept(Visitor &visitor) const override
LIEF::PE::LoadConfiguration::size
LoadConfiguration & size(uint32_t value)
Definition LoadConfiguration.hpp:478
LIEF::PE::LoadConfiguration::timedatestamp
LoadConfiguration & timedatestamp(uint32_t timedatestamp)
Definition LoadConfiguration.hpp:482
LIEF::PE::LoadConfiguration::csd_version
LoadConfiguration & csd_version(uint16_t csd_version)
Definition LoadConfiguration.hpp:547
LIEF::PE::LoadConfiguration::hotpatch_table_offset
optional< uint32_t > hotpatch_table_offset() const
Offset to the hotpatch table.
Definition LoadConfiguration.hpp:405
LIEF::PE::LoadConfiguration::decommit_total_free_threshold
uint64_t decommit_total_free_threshold() const
The size of the minimum total memory that must be freed in the process heap before it is freed (de-co...
Definition LoadConfiguration.hpp:166
LIEF::PE::LoadConfiguration::guard_long_jump_targets
it_const_guard_functions guard_long_jump_targets() const
List of RVA pointed by guard_address_taken_iat_entry_table()
Definition LoadConfiguration.hpp:333
LIEF::PE::LoadConfiguration::volatile_metadata
const VolatileMetadata * volatile_metadata() const
Definition LoadConfiguration.hpp:429
LIEF::PE::LoadConfiguration::hybrid_metadata_pointer
optional< uint64_t > hybrid_metadata_pointer() const
Alias for chpe_metadata_pointer()
Definition LoadConfiguration.hpp:356
LIEF::PE::LoadConfiguration::lock_prefix_table
uint64_t lock_prefix_table() const
The VA of a list of addresses where the LOCK prefix is used. These will be replaced by NOP on single-...
Definition LoadConfiguration.hpp:173
LIEF::PE::LoadConfiguration::reserved2
optional< uint16_t > reserved2() const
Must be zero.
Definition LoadConfiguration.hpp:395
LIEF::PE::LoadConfiguration::guard_xfg_table_dispatch_function_pointer
optional< uint64_t > guard_xfg_table_dispatch_function_pointer() const
Definition LoadConfiguration.hpp:461
LIEF::PE::LoadConfiguration::guard_eh_continuation_functions
it_const_guard_functions guard_eh_continuation_functions() const
Definition LoadConfiguration.hpp:445
LIEF::PE::LoadConfiguration::guard_rf_failure_routine_function_pointer
optional< uint64_t > guard_rf_failure_routine_function_pointer() const
VA of the failure routine fptr.
Definition LoadConfiguration.hpp:380
LIEF::PE::LoadConfiguration::enclave_config
EnclaveConfiguration * enclave_config()
Definition LoadConfiguration.hpp:421
LIEF::PE::LoadConfiguration::dependent_load_flags
LoadConfiguration & dependent_load_flags(uint16_t flags)
Definition LoadConfiguration.hpp:557
LIEF::PE::LoadConfiguration::reserved1
LoadConfiguration & reserved1(uint16_t reserved1)
Definition LoadConfiguration.hpp:552
LIEF::PE::LoadConfiguration::cast_guard_os_determined_failure_mode
LoadConfiguration & cast_guard_os_determined_failure_mode(uint64_t value)
Definition LoadConfiguration.hpp:722
LIEF::PE::LoadConfiguration::global_flags_clear
uint32_t global_flags_clear() const
The global flags that control system behavior. For more information, see Gflags.exe.
Definition LoadConfiguration.hpp:143
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entry_count
LoadConfiguration & guard_address_taken_iat_entry_count(uint64_t value)
Definition LoadConfiguration.hpp:622
LIEF::PE::LoadConfiguration::major_version
uint16_t major_version() const
Major version.
Definition LoadConfiguration.hpp:132
LIEF::PE::LoadConfiguration::has
bool has(IMAGE_GUARD flag) const
Check if the given flag is present.
Definition LoadConfiguration.hpp:282
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entry_table
LoadConfiguration & guard_address_taken_iat_entry_table(uint64_t value)
Definition LoadConfiguration.hpp:617
LIEF::PE::LoadConfiguration::guard_xfg_table_dispatch_function_pointer
LoadConfiguration & guard_xfg_table_dispatch_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:717
LIEF::PE::LoadConfiguration::process_affinity_mask
LoadConfiguration & process_affinity_mask(uint64_t process_affinity_mask)
Definition LoadConfiguration.hpp:537
LIEF::PE::LoadConfiguration::guard_xfg_check_function_pointer
LoadConfiguration & guard_xfg_check_function_pointer(uint64_t value)
Definition LoadConfiguration.hpp:707
LIEF::PE::LoadConfiguration::hotpatch_table_offset
LoadConfiguration & hotpatch_table_offset(uint32_t value)
Definition LoadConfiguration.hpp:677
LIEF::PE::LoadConfiguration::global_flags_clear
LoadConfiguration & global_flags_clear(uint32_t global_flags_clear)
Definition LoadConfiguration.hpp:497
LIEF::PE::LoadConfiguration::volatile_metadata
VolatileMetadata * volatile_metadata()
Definition LoadConfiguration.hpp:433
LIEF::PE::LoadConfiguration::process_heap_flags
uint32_t process_heap_flags() const
The process heap flags. For more information, see HeapCreate.
Definition LoadConfiguration.hpp:195
LIEF::PE::LoadConfiguration::dependent_load_flags
uint16_t dependent_load_flags() const
Alias for reserved1().
Definition LoadConfiguration.hpp:214
LIEF::PE::LoadConfiguration::volatile_metadata_pointer
LoadConfiguration & volatile_metadata_pointer(uint64_t value)
Definition LoadConfiguration.hpp:692
LIEF::PE::LoadConfiguration::IMAGE_GUARD
IMAGE_GUARD
Definition LoadConfiguration.hpp:50
LIEF::PE::LoadConfiguration::volatile_metadata_pointer
optional< uint64_t > volatile_metadata_pointer() const
Definition LoadConfiguration.hpp:425
LIEF::PE::LoadConfiguration::cast_guard_os_determined_failure_mode
optional< uint64_t > cast_guard_os_determined_failure_mode() const
Definition LoadConfiguration.hpp:465
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entries
it_guard_functions guard_address_taken_iat_entries()
Definition LoadConfiguration.hpp:317
LIEF::PE::LoadConfiguration::guard_cf_dispatch_function_pointer
LoadConfiguration & guard_cf_dispatch_function_pointer(uint64_t dispatch_pointer)
Definition LoadConfiguration.hpp:587
LIEF::PE::LoadConfiguration::guard_address_taken_iat_entry_count
optional< uint64_t > guard_address_taken_iat_entry_count() const
The count of unique RVAs in the table pointed by guard_address_taken_iat_entry_table().
Definition LoadConfiguration.hpp:308
LIEF::PE::LoadConfiguration::se_handler_count
LoadConfiguration & se_handler_count(uint64_t se_handler_count)
Definition LoadConfiguration.hpp:577
LIEF::PE::LoadConfiguration::minor_version
LoadConfiguration & minor_version(uint16_t minor_version)
Definition LoadConfiguration.hpp:492
LIEF::PE::LoadConfiguration::process_heap_flags
LoadConfiguration & process_heap_flags(uint32_t process_heap_flagsid)
Definition LoadConfiguration.hpp:542
LIEF::PE::LoadConfiguration::operator<<
friend std::ostream & operator<<(std::ostream &os, const LoadConfiguration &config)
Definition LoadConfiguration.hpp:739
LIEF::PE::LoadConfiguration::se_handler_table
optional< uint64_t > se_handler_table() const
The VA of the sorted table of RVAs of each valid, unique handler in the image. This member is availab...
Definition LoadConfiguration.hpp:230
LIEF::PE::LoadConfiguration::code_integrity
const CodeIntegrity * code_integrity() const
Code integrity information.
Definition LoadConfiguration.hpp:293
LIEF::PE::LoadConfiguration::dynamic_value_reloc_table
optional< uint64_t > dynamic_value_reloc_table() const
VA pointing to a IMAGE_DYNAMIC_RELOCATION_TABLE
Definition LoadConfiguration.hpp:342
LIEF::PE::LoadConfiguration::major_version
LoadConfiguration & major_version(uint16_t major_version)
Definition LoadConfiguration.hpp:487
LIEF::PE::LoadConfiguration::guard_eh_continuation_table
LoadConfiguration & guard_eh_continuation_table(uint64_t value)
Definition LoadConfiguration.hpp:697
LIEF::PE::LoadConfiguration::dynamic_value_reloc_table
LoadConfiguration & dynamic_value_reloc_table(uint64_t value)
Definition LoadConfiguration.hpp:637
LIEF::PE::LoadConfiguration::guard_cf_functions
it_guard_functions guard_cf_functions()
Definition LoadConfiguration.hpp:272
LIEF::PE::LoadConfiguration::critical_section_default_timeout
LoadConfiguration & critical_section_default_timeout(uint32_t critical_section_default_timeout)
Definition LoadConfiguration.hpp:507
LIEF::PE::LoadConfiguration::guard_rf_verify_stackpointer_function_pointer
optional< uint64_t > guard_rf_verify_stackpointer_function_pointer() const
VA of the Function verifying the stack pointer.
Definition LoadConfiguration.hpp:400
LIEF::PE::LoadConfiguration::guard_cf_dispatch_function_pointer
optional< uint64_t > guard_cf_dispatch_function_pointer() const
The VA where Control Flow Guard dispatch-function pointer is stored.
Definition LoadConfiguration.hpp:251
LIEF::PE::LoadConfiguration::reserved1
uint16_t reserved1() const
See: dependent_load_flags()
Definition LoadConfiguration.hpp:205
LIEF::PE::LoadConfiguration::guard_eh_continuation_count
optional< uint64_t > guard_eh_continuation_count() const
Definition LoadConfiguration.hpp:441
LIEF::PE::LoadConfiguration::guard_eh_continuation_functions
it_guard_functions guard_eh_continuation_functions()
Definition LoadConfiguration.hpp:449
LIEF::PE::LoadConfiguration::guard_flags
optional< uint32_t > guard_flags() const
Control Flow Guard related flags.
Definition LoadConfiguration.hpp:277
LIEF::PE::LoadConfiguration::LoadConfiguration
LoadConfiguration(const LoadConfiguration &)
LIEF::PE::LoadConfiguration::reserved3
optional< uint32_t > reserved3() const
Definition LoadConfiguration.hpp:409
LIEF::PE::LoadConfiguration::guard_cf_function_count
optional< uint64_t > guard_cf_function_count() const
The count of unique RVAs in the guard_cf_function_table() table.
Definition LoadConfiguration.hpp:262
LIEF::PE::LoadConfiguration::guard_long_jump_target_count
optional< uint64_t > guard_long_jump_target_count() const
The count of unique RVAs in the table pointed by guard_long_jump_target_table.
Definition LoadConfiguration.hpp:328
LIEF::PE::Parser
Main interface to parse PE binaries. In particular the static functions: Parser::parse should be used...
Definition PE/Parser.hpp:52
LIEF::PE::VolatileMetadata
This class represents volatile metadata which can be enabled at link time with /volatileMetadata.
Definition VolatileMetadata.hpp:34
iterators.hpp
LIEF::PE
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
LIEF::PE::to_string
const char * to_string(AuxiliaryWeakExternal::CHARACTERISTICS e)
LIEF
LIEF namespace.
Definition Abstract/Binary.hpp:36
LIEF::ok_error_t
result< ok_t > ok_error_t
Opaque structure that is used by LIEF to avoid writing result<void> f(...). Instead,...
Definition errors.hpp:109
optional.hpp
visibility.h
LIEF_API
#define LIEF_API
Definition visibility.h:41
LIEF_LOCAL
#define LIEF_LOCAL
Definition visibility.h:42