Trait pelite::pe64::Pe

source ·
pub unsafe trait Pe<'a> {
Show 45 methods fn image(&self) -> &'a [u8]Notable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]; fn align(&self) -> Align; fn slice(&self, rva: Rva, min_size_of: usize, align: usize) -> Result<&'a [u8]>; fn read(&self, va: Va, min_size_of: usize, align: usize) -> Result<&'a [u8]>; fn dos_header(self) -> &'a IMAGE_DOS_HEADER
    where
        Self: Copy
, { ... } fn dos_image(self) -> &'a [u8]Notable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
    where
        Self: Copy
, { ... } fn nt_headers(self) -> &'a IMAGE_NT_HEADERS
    where
        Self: Copy
, { ... } fn file_header(self) -> &'a IMAGE_FILE_HEADER
    where
        Self: Copy
, { ... } fn optional_header(self) -> &'a IMAGE_OPTIONAL_HEADER
    where
        Self: Copy
, { ... } fn data_directory(self) -> &'a [IMAGE_DATA_DIRECTORY]
    where
        Self: Copy
, { ... } fn section_headers(self) -> &'a [IMAGE_SECTION_HEADER]
    where
        Self: Copy
, { ... } fn headers(self) -> Headers<Self>
    where
        Self: Copy
, { ... } fn rva_to_file_offset(self, rva: Rva) -> Result<usize>
    where
        Self: Copy
, { ... } fn file_offset_to_rva(self, file_offset: usize) -> Result<Rva>
    where
        Self: Copy
, { ... } fn rva_to_va(self, rva: Rva) -> Result<Va>
    where
        Self: Copy
, { ... } fn va_to_rva(self, va: Va) -> Result<Rva>
    where
        Self: Copy
, { ... } fn slice_bytes(self, rva: Rva) -> Result<&'a [u8]>
    where
        Self: Sized
, { ... } fn read_bytes(self, va: Va) -> Result<&'a [u8]>
    where
        Self: Sized
, { ... } fn derva<T>(self, rva: Rva) -> Result<&'a T>
    where
        Self: Copy,
        T: Pod
, { ... } fn derva_copy<T>(self, rva: Rva) -> Result<T>
    where
        Self: Copy,
        T: Copy + Pod
, { ... } fn derva_into<T>(self, rva: Rva, dest: &mut T) -> Result<()>
    where
        Self: Copy,
        T: ?Sized + Pod
, { ... } fn derva_slice<T>(self, rva: Rva, len: usize) -> Result<&'a [T]>
    where
        Self: Copy,
        T: Pod
, { ... } fn derva_slice_f<T, F>(self, rva: Rva, f: F) -> Result<&'a [T]>
    where
        Self: Copy,
        T: Pod,
        F: FnMut(&'a T) -> bool
, { ... } fn derva_slice_s<T>(self, rva: Rva, sentinel: T) -> Result<&'a [T]>
    where
        Self: Copy,
        T: PartialEq + Pod
, { ... } fn derva_c_str(self, rva: Rva) -> Result<&'a CStr>
    where
        Self: Copy
, { ... } fn derva_string<T>(self, rva: Rva) -> Result<&'a T>
    where
        Self: Copy,
        T: FromBytes + ?Sized
, { ... } fn deref<T>(self, ptr: Ptr<T>) -> Result<&'a T>
    where
        Self: Copy,
        T: Pod
, { ... } fn deref_copy<T>(self, ptr: Ptr<T>) -> Result<T>
    where
        Self: Copy,
        T: Copy + Pod
, { ... } fn deref_into<T>(self, ptr: Ptr<T>, dest: &mut T) -> Result<()>
    where
        Self: Copy,
        T: ?Sized + Pod
, { ... } fn deref_slice<T>(self, ptr: Ptr<[T]>, len: usize) -> Result<&'a [T]>
    where
        Self: Copy,
        T: Pod
, { ... } fn deref_slice_f<T, F>(self, ptr: Ptr<[T]>, f: F) -> Result<&'a [T]>
    where
        Self: Copy,
        T: Pod,
        F: FnMut(&'a T) -> bool
, { ... } fn deref_slice_s<T>(self, ptr: Ptr<[T]>, sentinel: T) -> Result<&'a [T]>
    where
        Self: Copy,
        T: PartialEq + Pod
, { ... } fn deref_c_str(self, ptr: Ptr<CStr>) -> Result<&'a CStr>
    where
        Self: Copy
, { ... } fn deref_string<T>(self, ptr: Ptr<T>) -> Result<&'a T>
    where
        Self: Copy,
        T: FromBytes + ?Sized
, { ... } fn exports(self) -> Result<Exports<'a, Self>>
    where
        Self: Copy
, { ... } fn imports(self) -> Result<Imports<'a, Self>>
    where
        Self: Copy
, { ... } fn iat(self) -> Result<IAT<'a, Self>>
    where
        Self: Copy
, { ... } fn base_relocs(self) -> Result<BaseRelocs<'a, Self>>
    where
        Self: Copy
, { ... } fn load_config(self) -> Result<LoadConfig<'a, Self>>
    where
        Self: Copy
, { ... } fn tls(self) -> Result<Tls<'a, Self>>
    where
        Self: Copy
, { ... } fn security(self) -> Result<Security<'a, Self>>
    where
        Self: Copy
, { ... } fn exception(self) -> Result<Exception<'a, Self>>
    where
        Self: Copy
, { ... } fn debug(self) -> Result<Debug<'a, Self>>
    where
        Self: Copy
, { ... } fn resources(self) -> Result<Resources<'a>>
    where
        Self: Copy
, { ... } fn scanner(self) -> Scanner<Self>
    where
        Self: Copy
, { ... }
}

Required Methods

Returns the image as a byte slice.

Returns whether this image uses file alignment or section alignment.

Slices the image at the specified rva.

If successful the returned slice’s length will be at least the given size but often be quite larger. This allows to access the image without knowing beforehand how large the structure being accessed will be.

The length is the largest consecutive number of bytes available until the end. In case the of PE files on disk, this is limited to the section’s size of raw data.

Errors
  • Null: The rva is zero.

Reads the image at the specified va.

If successful the returned slice’s length will be at least the given size but often be quite larger. This allows to access the image without knowing beforehand how large the structure being accessed will be.

The length is the largest consecutive number of bytes available until the end. In case the of PE files on disk, this is limited to the section’s size of raw data.

Errors
  • Null: The va is zero.

Provided Methods

Returns the DOS header.

Returns the DOS image.

This includes the dos header and everything up to the start of the PE headers but is not guaranteed to actually contain anything valid.

Returns the NT headers.

Returns the file header.

Returns the optional header.

Returns the data directory.

Returns the section headers.

Returns the pe headers together in a single struct.

Converts a relative virtual address to file offset.

Errors
  • Overflow: The rva is contained within a corrupt section where the range bounds overflow.

  • ZeroFill: The rva points to part of a section zero filled and is not available on disk.

  • Bounds: The rva falls outside any valid section or the PE headers.

Converts a file offset to relative virtual address.

Errors
  • Overflow: The file offset is contained within a corrupt section where the range bounds overflow.

  • Unmapped: The file offset points to part of a section not mapped and is not available in virtual memory.

  • Bounds: The file offset falls outside any valid section or PE headers.

Converts from relative virtual address to virtual address.

Errors
  • Null: The rva is zero.

  • Bounds: The rva does not fall within the virtual image bounds.

Converts from virtual address to relative virtual address.

Errors
  • Null: The va is zero.

  • Bounds: The va does not fall within the virtual image bounds.

Slices the image at the specified rva returning a byte slice with no alignment or minimum size.

Shorthand to invoke slice(rva, 0, 1).

Reads the image at the specified va returning a byte slice with no alignment or minimum size.

Shorthand to invoke read(va, 0, 1).

Reads an aligned pod T.

Reads an unaligned pod T.

Reads and byte-wise copies the content to the given destination.

Allows reading of an unaligned array of data.

Reads an array of pod T with given length.

Reads an array of pod T.

For every element of the array, starting at the given rva, the callable f is called with that element. The length of the array is the index when the callable f returns true.

The returned slice contains all T up to but not including the element for which the callable returned true.

Reads an array of pod T.

The length of the array is determined by a sentinel value, a special value of T which marks the end of the array.

The returned slice contains all T up to but not including the sentinel value.

Reads a nul-terminated C string.

Reads a string.

Dereferences the pointer to a pod T.

Dereferences the pointer to an unaligned pod T.

Reads and byte-wise copies the content to the given destination.

Allows reading of an unaligned array of data.

Reads an array of pod T with given length.

Reads an array of pod T.

For every element of the array, starting at the given ptr, the callable f is called with that element. The length of the array is the index when the callable f returns true.

The returned slice contains all T up to but not including the element for which the callable returned true.

Reads an array of pod T.

The length of the array is determined by a sentinel value, a special value of T which marks the end of the array.

The returned slice contains all T up to but not including the sentinel value.

Dereferences the pointer to a nul-terminated C string.

Dereferences the pointer to a string.

Gets the Export Directory.

See the exports module for more information.

Returns Err(Null) if the image has no exports. Any other error indiciates some form of corruption.

Gets the Import Directory.

See the imports module for more information.

Returns Err(Null) if the image has no imports. Any other error indicates some form of corruption.

Gets the Import Address Table.

See the imports module for more information.

Returns Err(Null) if the image has no iat. Any other error indicates some form of corruption.

Gets the Base Relocations Directory.

See the base relocations module for more information.

Returns Err(Null) if the image has no base relocations. Any other error indicates some form of corruption.

Gets the Load Config Directory.

See the load config module for more information.

Returns Err(Null) if the image has no load config. Any other error indicates some form of corruption.

Gets the TLS Directory.

See the tls module for more information.

Returns Err(Null) if the image has no tls. Any other error indicates some form of corruption.

Gets the Security Directory.

See the security module for more information.

Returns Err(Null) if the image has no security info. Any other error indicates some form of corruption.

Gets the Exception Directory.

See the exception module for more information.

Returns Err(Null) if the image has no exception directory. Any other error indicates some form of corruption.

Gets the Debug Directory.

See the debug module for more information.

Returns Err(Null) if the image has no debug info. Any other error indicates some form of corruption.

Gets the Resources.

See the resources module for more information.

Returns Err(Null) if the image has no resources. Any other error indicates some form of corruption.

Gets Scanner access.

See the scanner module for more information.

Implementations on Foreign Types

Implementors