Module imports

Module imports 

Source
Expand description

Import Directory and the IAT.

The import directory lists all the module dependencies and their imported symbols by this module.

The Import Address Table (IAT) lists all the imported symbols for all the modules in one big list. When the imports are resolved the IAT is overwritten with pointers to the resolved functions.

§Examples

use pelite::pe64::{Pe, PeFile};

fn example(file: PeFile<'_>) -> pelite::Result<()> {
	// Access the import directory
	let imports = file.imports()?;

	// Iterate over the import descriptors
	for desc in imports {
		// DLL being imported from
		let dll_name = desc.dll_name()?;

		// Import Address Table and Import Name Table for this imported DLL
		let iat = desc.iat()?;
		let int = desc.int()?;

		// Iterate over the imported functions from this DLL
		for (va, import) in Iterator::zip(iat, int) {}
	}

	// Iterate over the IAT
	for (va, import) in file.iat()?.iter() {
		// The IAT may contains Null entries where the IAT of imported modules join
		if let Ok(import) = import {}
	}

	Ok(())
}

Structs§

Desc
Import library descriptor.
IAT
Import Address Table.
Imports
Import directory.
Iter

Enums§

Import
Imported symbol.