pub unsafe trait Pe<'a>: PeObject<'a> + Copy {
Show 45 methods
fn dos_header(self) -> &'a IMAGE_DOS_HEADER { ... }
fn dos_image(self) -> &'a [u8]ⓘNotable traits for &mut [u8]impl Write for &mut [u8]impl Read for &[u8]
{ ... }
fn nt_headers(self) -> &'a IMAGE_NT_HEADERS { ... }
fn file_header(self) -> &'a IMAGE_FILE_HEADER { ... }
fn optional_header(self) -> &'a IMAGE_OPTIONAL_HEADER { ... }
fn data_directory(self) -> &'a [IMAGE_DATA_DIRECTORY] { ... }
fn section_headers(self) -> &'a SectionHeaders { ... }
fn headers(self) -> Headers<Self> { ... }
fn rva_to_file_offset(self, rva: Rva) -> Result<usize> { ... }
fn file_offset_to_rva(self, file_offset: usize) -> Result<Rva> { ... }
fn rva_to_va(self, rva: Rva) -> Result<Va> { ... }
fn va_to_rva(self, va: Va) -> Result<Rva> { ... }
fn slice(&self, rva: Rva, min_size_of: usize, align: usize) -> Result<&'a [u8]> { ... }
fn slice_bytes(self, rva: Rva) -> Result<&'a [u8]>
where
Self: Sized,
{ ... }
fn get_section_bytes(
self,
section_header: &IMAGE_SECTION_HEADER
) -> Result<&'a [u8]> { ... }
fn read(&self, va: Va, min_size_of: usize, align: usize) -> Result<&'a [u8]> { ... }
fn read_bytes(self, va: Va) -> Result<&'a [u8]>
where
Self: Sized,
{ ... }
fn derva<T>(self, rva: Rva) -> Result<&'a T>
where
T: Pod,
{ ... }
fn derva_copy<T>(self, rva: Rva) -> Result<T>
where
T: Copy + Pod,
{ ... }
fn derva_into<T>(self, rva: Rva, dest: &mut T) -> Result<()>
where
T: ?Sized + Pod,
{ ... }
fn derva_slice<T>(self, rva: Rva, len: usize) -> Result<&'a [T]>
where
T: Pod,
{ ... }
fn derva_slice_f<T, F>(self, rva: Rva, f: F) -> Result<&'a [T]>
where
T: Pod,
F: FnMut(&'a T) -> bool,
{ ... }
fn derva_slice_s<T>(self, rva: Rva, sentinel: T) -> Result<&'a [T]>
where
T: PartialEq + Pod,
{ ... }
fn derva_c_str(self, rva: Rva) -> Result<&'a CStr> { ... }
fn derva_string<T>(self, rva: Rva) -> Result<&'a T>
where
T: FromBytes + ?Sized,
{ ... }
fn deref<T>(self, ptr: Ptr<T>) -> Result<&'a T>
where
T: Pod,
{ ... }
fn deref_copy<T>(self, ptr: Ptr<T>) -> Result<T>
where
T: Copy + Pod,
{ ... }
fn deref_into<T>(self, ptr: Ptr<T>, dest: &mut T) -> Result<()>
where
T: ?Sized + Pod,
{ ... }
fn deref_slice<T>(self, ptr: Ptr<[T]>, len: usize) -> Result<&'a [T]>
where
T: Pod,
{ ... }
fn deref_slice_f<T, F>(self, ptr: Ptr<[T]>, f: F) -> Result<&'a [T]>
where
T: Pod,
F: FnMut(&'a T) -> bool,
{ ... }
fn deref_slice_s<T>(self, ptr: Ptr<[T]>, sentinel: T) -> Result<&'a [T]>
where
T: PartialEq + Pod,
{ ... }
fn deref_c_str(self, ptr: Ptr<CStr>) -> Result<&'a CStr> { ... }
fn deref_string<T>(self, ptr: Ptr<T>) -> Result<&'a T>
where
T: FromBytes + ?Sized,
{ ... }
fn rich_structure(self) -> Result<RichStructure<'a>> { ... }
fn exports(self) -> Result<Exports<'a, Self>> { ... }
fn imports(self) -> Result<Imports<'a, Self>> { ... }
fn iat(self) -> Result<IAT<'a, Self>> { ... }
fn base_relocs(self) -> Result<BaseRelocs<'a>> { ... }
fn load_config(self) -> Result<LoadConfig<'a, Self>> { ... }
fn tls(self) -> Result<Tls<'a, Self>> { ... }
fn security(self) -> Result<Security<'a>> { ... }
fn exception(self) -> Result<Exception<'a, Self>> { ... }
fn debug(self) -> Result<Debug<'a, Self>> { ... }
fn resources(self) -> Result<Resources<'a>>
where
Self: Copy,
{ ... }
fn scanner(self) -> Scanner<Self> { ... }
}
Provided Methods
sourcefn dos_header(self) -> &'a IMAGE_DOS_HEADER
fn dos_header(self) -> &'a IMAGE_DOS_HEADER
Returns the DOS header.
sourcefn dos_image(self) -> &'a [u8]ⓘNotable traits for &mut [u8]impl Write for &mut [u8]impl Read for &[u8]
fn dos_image(self) -> &'a [u8]ⓘNotable traits for &mut [u8]impl Write for &mut [u8]impl Read for &[u8]
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.
sourcefn nt_headers(self) -> &'a IMAGE_NT_HEADERS
fn nt_headers(self) -> &'a IMAGE_NT_HEADERS
Returns the NT headers.
sourcefn file_header(self) -> &'a IMAGE_FILE_HEADER
fn file_header(self) -> &'a IMAGE_FILE_HEADER
Returns the file header.
sourcefn optional_header(self) -> &'a IMAGE_OPTIONAL_HEADER
fn optional_header(self) -> &'a IMAGE_OPTIONAL_HEADER
Returns the optional header.
sourcefn data_directory(self) -> &'a [IMAGE_DATA_DIRECTORY]
fn data_directory(self) -> &'a [IMAGE_DATA_DIRECTORY]
Returns the data directory.
sourcefn section_headers(self) -> &'a SectionHeaders
fn section_headers(self) -> &'a SectionHeaders
Returns the section headers.
sourcefn rva_to_file_offset(self, rva: Rva) -> Result<usize>
fn rva_to_file_offset(self, rva: Rva) -> Result<usize>
Converts a relative virtual address to file offset.
Errors
sourcefn file_offset_to_rva(self, file_offset: usize) -> Result<Rva>
fn file_offset_to_rva(self, file_offset: usize) -> Result<Rva>
Converts a file offset to relative virtual address.
Errors
sourcefn slice(&self, rva: Rva, min_size_of: usize, align: usize) -> Result<&'a [u8]>
fn slice(&self, rva: Rva, min_size_of: usize, align: usize) -> Result<&'a [u8]>
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.
sourcefn slice_bytes(self, rva: Rva) -> Result<&'a [u8]>where
Self: Sized,
fn slice_bytes(self, rva: Rva) -> Result<&'a [u8]>where
Self: Sized,
Slices the image at the specified rva returning a byte slice with no alignment or minimum size.
Shorthand to invoke slice(rva, 0, 1)
.
sourcefn get_section_bytes(
self,
section_header: &IMAGE_SECTION_HEADER
) -> Result<&'a [u8]>
fn get_section_bytes(
self,
section_header: &IMAGE_SECTION_HEADER
) -> Result<&'a [u8]>
sourcefn read(&self, va: Va, min_size_of: usize, align: usize) -> Result<&'a [u8]>
fn read(&self, va: Va, min_size_of: usize, align: usize) -> Result<&'a [u8]>
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.
sourcefn read_bytes(self, va: Va) -> Result<&'a [u8]>where
Self: Sized,
fn read_bytes(self, va: Va) -> Result<&'a [u8]>where
Self: Sized,
Reads the image at the specified va returning a byte slice with no alignment or minimum size.
Shorthand to invoke read(va, 0, 1)
.
sourcefn derva_into<T>(self, rva: Rva, dest: &mut T) -> Result<()>where
T: ?Sized + Pod,
fn derva_into<T>(self, rva: Rva, dest: &mut T) -> Result<()>where
T: ?Sized + Pod,
Reads and byte-wise copies the content to the given destination.
Allows reading of an unaligned array of data.
sourcefn derva_slice<T>(self, rva: Rva, len: usize) -> Result<&'a [T]>where
T: Pod,
fn derva_slice<T>(self, rva: Rva, len: usize) -> Result<&'a [T]>where
T: Pod,
Reads an array of pod T
with given length.
sourcefn derva_slice_f<T, F>(self, rva: Rva, f: F) -> Result<&'a [T]>where
T: Pod,
F: FnMut(&'a T) -> bool,
fn derva_slice_f<T, F>(self, rva: Rva, f: F) -> Result<&'a [T]>where
T: Pod,
F: FnMut(&'a T) -> bool,
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
.
sourcefn derva_slice_s<T>(self, rva: Rva, sentinel: T) -> Result<&'a [T]>where
T: PartialEq + Pod,
fn derva_slice_s<T>(self, rva: Rva, sentinel: T) -> Result<&'a [T]>where
T: PartialEq + Pod,
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.
sourcefn derva_c_str(self, rva: Rva) -> Result<&'a CStr>
fn derva_c_str(self, rva: Rva) -> Result<&'a CStr>
Reads a nul-terminated C string.
sourcefn derva_string<T>(self, rva: Rva) -> Result<&'a T>where
T: FromBytes + ?Sized,
fn derva_string<T>(self, rva: Rva) -> Result<&'a T>where
T: FromBytes + ?Sized,
Reads a string.
sourcefn deref<T>(self, ptr: Ptr<T>) -> Result<&'a T>where
T: Pod,
fn deref<T>(self, ptr: Ptr<T>) -> Result<&'a T>where
T: Pod,
Dereferences the pointer to a pod T
.
sourcefn deref_copy<T>(self, ptr: Ptr<T>) -> Result<T>where
T: Copy + Pod,
fn deref_copy<T>(self, ptr: Ptr<T>) -> Result<T>where
T: Copy + Pod,
Dereferences the pointer to an unaligned pod T
.
sourcefn deref_into<T>(self, ptr: Ptr<T>, dest: &mut T) -> Result<()>where
T: ?Sized + Pod,
fn deref_into<T>(self, ptr: Ptr<T>, dest: &mut T) -> Result<()>where
T: ?Sized + Pod,
Reads and byte-wise copies the content to the given destination.
Allows reading of an unaligned array of data.
sourcefn deref_slice<T>(self, ptr: Ptr<[T]>, len: usize) -> Result<&'a [T]>where
T: Pod,
fn deref_slice<T>(self, ptr: Ptr<[T]>, len: usize) -> Result<&'a [T]>where
T: Pod,
Reads an array of pod T
with given length.
sourcefn deref_slice_f<T, F>(self, ptr: Ptr<[T]>, f: F) -> Result<&'a [T]>where
T: Pod,
F: FnMut(&'a T) -> bool,
fn deref_slice_f<T, F>(self, ptr: Ptr<[T]>, f: F) -> Result<&'a [T]>where
T: Pod,
F: FnMut(&'a T) -> bool,
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
.
sourcefn deref_slice_s<T>(self, ptr: Ptr<[T]>, sentinel: T) -> Result<&'a [T]>where
T: PartialEq + Pod,
fn deref_slice_s<T>(self, ptr: Ptr<[T]>, sentinel: T) -> Result<&'a [T]>where
T: PartialEq + Pod,
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.
sourcefn deref_c_str(self, ptr: Ptr<CStr>) -> Result<&'a CStr>
fn deref_c_str(self, ptr: Ptr<CStr>) -> Result<&'a CStr>
Dereferences the pointer to a nul-terminated C string.
sourcefn deref_string<T>(self, ptr: Ptr<T>) -> Result<&'a T>where
T: FromBytes + ?Sized,
fn deref_string<T>(self, ptr: Ptr<T>) -> Result<&'a T>where
T: FromBytes + ?Sized,
Dereferences the pointer to a string.
sourcefn rich_structure(self) -> Result<RichStructure<'a>>
fn rich_structure(self) -> Result<RichStructure<'a>>
Returns the Rich structure.
sourcefn base_relocs(self) -> Result<BaseRelocs<'a>>
fn base_relocs(self) -> Result<BaseRelocs<'a>>
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.
sourcefn load_config(self) -> Result<LoadConfig<'a, Self>>
fn load_config(self) -> Result<LoadConfig<'a, Self>>
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.