Struct lief::pe::LoadConfiguration

pub struct LoadConfiguration<'a> { /* private fields */ }
Expand description

This structure represents the load configuration data associated with the IMAGE_LOAD_CONFIG_DIRECTORY.

This structure is frequently updated by Microsoft to add new metadata.

Reference: https://github.com/MicrosoftDocs/sdk-api/blob/cbeab4d371e8bc7e352c4d3a4c5819caa08c6a1c/sdk-api-src/content/winnt/ns-winnt-image_load_config_directory64.md#L2

Implementations§

§

impl LoadConfiguration<'_>

pub fn characteristics(&self) -> u32

Characteristics of the structure which is defined by its size

pub fn size(&self) -> u32

Size of the current structure

pub fn timedatestamp(&self) -> u32

The date and time stamp value

pub fn major_version(&self) -> u16

Major version

pub fn minor_version(&self) -> u16

Minor version

pub fn global_flags_clear(&self) -> u32

The global flags that control system behavior. For more information, see Gflags.exe.

pub fn global_flags_set(&self) -> u32

The global flags that control system behavior. For more information, see Gflags.exe.

pub fn critical_section_default_timeout(&self) -> u32

The critical section default time-out value.

pub fn decommit_free_block_threshold(&self) -> u64

The size of the minimum block that must be freed before it is freed (de-committed), in bytes. This value is advisory.

pub fn decommit_total_free_threshold(&self) -> u64

The size of the minimum total memory that must be freed in the process heap before it is freed (de-committed), in bytes. This value is advisory.

pub fn lock_prefix_table(&self) -> u64

The VA of a list of addresses where the LOCK prefix is used. These will be replaced by NOP on single-processor systems. This member is available only for x86.

pub fn maximum_allocation_size(&self) -> u64

The maximum allocation size, in bytes. This member is obsolete and is used only for debugging purposes.

pub fn virtual_memory_threshold(&self) -> u64

The maximum block size that can be allocated from heap segments, in bytes.

pub fn process_affinity_mask(&self) -> u64

The process affinity mask. For more information, see GetProcessAffinityMask. This member is available only for .exe files.

pub fn process_heap_flags(&self) -> u32

The process heap flags. For more information, see HeapCreate.

pub fn csd_version(&self) -> u16

The service pack version.

pub fn reserved1(&self) -> u16

pub fn dependent_load_flags(&self) -> u16

Alias for LoadConfiguration::reserved1.

The default load flags used when the operating system resolves the statically linked imports of a module. For more information, see LoadLibraryEx.

pub fn editlist(&self) -> u32

Reserved for use by the system.

A pointer to a cookie that is used by Visual C++ or GS implementation.

pub fn se_handler_table(&self) -> Option<u64>

The VA of the sorted table of RVAs of each valid, unique handler in the image. This member is available only for x86.

pub fn se_handler_count(&self) -> Option<u64>

The count of unique handlers in the table. This member is available only for x86.

pub fn seh_functions(&self) -> Vec<u32>

Return the list of the function RVA in the SEH table (if any)

pub fn guard_cf_check_function_pointer(&self) -> Option<u64>

The VA where Control Flow Guard check-function pointer is stored.

pub fn guard_cf_dispatch_function_pointer(&self) -> Option<u64>

The VA where Control Flow Guard dispatch-function pointer is stored.

pub fn guard_cf_function_table(&self) -> Option<u64>

The VA of the sorted table of RVAs of each Control Flow Guard function in the image.

pub fn guard_cf_function_count(&self) -> Option<u64>

The count of unique RVAs in the LoadConfiguration::guard_cf_function_table table.

pub fn guard_cf_functions(&self) -> GuardCFFunctions<'_>

Iterator over the Control Flow Guard functions referenced by LoadConfiguration::guard_cf_function_table

pub fn guard_flags(&self) -> Option<ImageGuardFlags>

Control Flow Guard related flags.

pub fn code_integrity(&self) -> Option<CodeIntegrity<'_>>

Code integrity information.

pub fn guard_address_taken_iat_entry_table(&self) -> Option<u64>

The VA where Control Flow Guard address taken IAT table is stored.

pub fn guard_address_taken_iat_entry_count(&self) -> Option<u64>

The count of unique RVAs in the table pointed by LoadConfiguration::guard_address_taken_iat_entry_table.

pub fn guard_address_taken_iat_entries(&self) -> GuardAddressTakenIATEntries<'_>

Iterator over the functions referenced by LoadConfiguration::guard_address_taken_iat_entry_table

pub fn guard_long_jump_target_table(&self) -> Option<u64>

The VA where Control Flow Guard long jump target table is stored.

pub fn guard_long_jump_target_count(&self) -> Option<u64>

The count of unique RVAs in the table pointed by LoadConfiguration::guard_long_jump_target_table.

pub fn guard_long_jump_targets(&self) -> GuardLongJumpTargets<'_>

Iterator over the functions referenced by LoadConfiguration::guard_long_jump_target_table

pub fn dynamic_value_reloc_table(&self) -> Option<u64>

VA of pointing to a IMAGE_DYNAMIC_RELOCATION_TABLE

pub fn hybrid_metadata_pointer(&self) -> Option<u64>

pub fn chpe_metadata_pointer(&self) -> Option<u64>

VA to the extra Compiled Hybrid Portable Executable (CHPE) metadata.

pub fn chpe_metadata(&self) -> Option<CHPEMetadata<'_>>

Compiled Hybrid Portable Executable (CHPE) metadata (if any)

pub fn guard_rf_failure_routine(&self) -> Option<u64>

VA of the failure routine

pub fn guard_rf_failure_routine_function_pointer(&self) -> Option<u64>

VA of the failure routine fptr.

pub fn dynamic_value_reloctable_offset(&self) -> Option<u32>

Offset of dynamic relocation table relative to the relocation table

pub fn dynamic_value_reloctable_section(&self) -> Option<u16>

The section index of the dynamic value relocation table

pub fn dynamic_relocations(&self) -> DynamicRelocations<'_>

Return an iterator over the Dynamic relocations (DVRT)

pub fn reserved2(&self) -> Option<u16>

Must be zero

pub fn guard_rf_verify_stackpointer_function_pointer(&self) -> Option<u64>

VA of the Function verifying the stack pointer

pub fn hotpatch_table_offset(&self) -> Option<u32>

pub fn reserved3(&self) -> Option<u32>

pub fn enclave_config(&self) -> Option<EnclaveConfiguration<'_>>

pub fn enclave_configuration_ptr(&self) -> Option<u64>

pub fn volatile_metadata_pointer(&self) -> Option<u64>

pub fn volatile_metadata(&self) -> Option<VolatileMetadata<'_>>

pub fn guard_eh_continuation_table(&self) -> Option<u64>

pub fn guard_eh_continuation_count(&self) -> Option<u64>

pub fn guard_eh_continuation_functions( &self ) -> GuardEhContinuationFunctions<'_>

Iterator over the Guard EH continuation functions referenced by LoadConfiguration::guard_eh_continuation_table

pub fn guard_xfg_check_function_pointer(&self) -> Option<u64>

pub fn guard_xfg_dispatch_function_pointer(&self) -> Option<u64>

pub fn guard_xfg_table_dispatch_function_pointer(&self) -> Option<u64>

pub fn cast_guard_os_determined_failure_mode(&self) -> Option<u64>

pub fn guard_memcpy_function_pointer(&self) -> Option<u64>

Trait Implementations§

§

impl Debug for LoadConfiguration<'_>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for LoadConfiguration<'a>

§

impl<'a> !Send for LoadConfiguration<'a>

§

impl<'a> !Sync for LoadConfiguration<'a>

§

impl<'a> Unpin for LoadConfiguration<'a>

§

impl<'a> !UnwindSafe for LoadConfiguration<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.