pub struct VecPE { /* private fields */ }Expand description
Represents a PE object with owned data.
Implementations§
Source§impl VecPE
impl VecPE
Sourcepub fn new(pe_type: PEType, size: usize) -> Self
pub fn new(pe_type: PEType, size: usize) -> Self
Creates a new VecPE object with a mutable PE object, initializing a backing buffer with the given size.
Sourcepub fn new_disk(size: usize) -> Self
pub fn new_disk(size: usize) -> Self
Creates a new VecPE as type Disk, initializing a vector of the given size.
Sourcepub fn new_memory(size: usize) -> Self
pub fn new_memory(size: usize) -> Self
Creates a new VecPE as type Memory, initializing a vector of the given size.
Sourcepub fn from_file<P: AsRef<Path>>(
pe_type: PEType,
filename: P,
) -> Result<Self, Error>
pub fn from_file<P: AsRef<Path>>( pe_type: PEType, filename: P, ) -> Result<Self, Error>
Creates a new VecPE object with the given file’s data.
Sourcepub fn from_disk_file<P: AsRef<Path>>(filename: P) -> Result<Self, Error>
pub fn from_disk_file<P: AsRef<Path>>(filename: P) -> Result<Self, Error>
Creates a new VecPE object with the given file’s data, marking it as a Disk image.
Sourcepub fn from_memory_file<P: AsRef<Path>>(filename: P) -> Result<Self, Error>
pub fn from_memory_file<P: AsRef<Path>>(filename: P) -> Result<Self, Error>
Creates a new VecPE object with the given file’s data, marking it as a Memory image.
Sourcepub fn from_data<B: AsRef<[u8]>>(pe_type: PEType, data: B) -> Self
pub fn from_data<B: AsRef<[u8]>>(pe_type: PEType, data: B) -> Self
Creates a new VecPE object with the given data.
Sourcepub fn from_disk_data<B: AsRef<[u8]>>(data: B) -> Self
pub fn from_disk_data<B: AsRef<[u8]>>(data: B) -> Self
Creates a new VecPE object from the given slice object, marking it as a Disk image.
Sourcepub fn from_memory_data<B: AsRef<[u8]>>(data: B) -> Self
pub fn from_memory_data<B: AsRef<[u8]>>(data: B) -> Self
Creates a new VecPE object from the given slice object, marking it as a Memory image.
Sourcepub fn from_assembly<B: AsRef<[u8]>>(
arch: Arch,
asm_ref: B,
entrypoint: Offset,
) -> Result<Self, Error>
pub fn from_assembly<B: AsRef<[u8]>>( arch: Arch, asm_ref: B, entrypoint: Offset, ) -> Result<Self, Error>
Creates a new VecPE object from a buffer of assembly. Useful for converting shellcode into a binary.
Returns InvalidOffset if the offset given doesn’t point at code.
Sourcepub fn get_buffer(&self) -> &VecBuffer
pub fn get_buffer(&self) -> &VecBuffer
Get the underlying VecBuffer object.
Sourcepub fn get_mut_buffer(&mut self) -> &mut VecBuffer
pub fn get_mut_buffer(&mut self) -> &mut VecBuffer
Get a mutable reference to the underlying VecBuffer object.
Sourcepub fn append<B: AsRef<[u8]>>(&mut self, data: B)
pub fn append<B: AsRef<[u8]>>(&mut self, data: B)
Appends the given data to the end of the VecPE object. See VecBuffer::append.
Sourcepub fn append_ref<T: Castable>(&mut self, data: &T) -> Result<(), Error>
pub fn append_ref<T: Castable>(&mut self, data: &T) -> Result<(), Error>
Appends the given reference to the end of the VecPE object. See VecBuffer::append_ref.
Sourcepub fn append_slice_ref<T: Castable>(&mut self, data: &[T]) -> Result<(), Error>
pub fn append_slice_ref<T: Castable>(&mut self, data: &[T]) -> Result<(), Error>
Appends the given slice reference to the end of the VecPE object. See VecBuffer::append_slice_ref.
Sourcepub fn insert(&mut self, offset: usize, element: u8)
pub fn insert(&mut self, offset: usize, element: u8)
Insert a byte at the given offset. See VecBuffer::insert.
Sourcepub fn remove(&mut self, offset: usize)
pub fn remove(&mut self, offset: usize)
Remove a byte at the given offset. See VecBuffer::remove.
Sourcepub fn push(&mut self, byte: u8)
pub fn push(&mut self, byte: u8)
Push a byte onto the end of the VecPE buffer. See VecBuffer::push.
Sourcepub fn pop(&mut self) -> Option<u8>
pub fn pop(&mut self) -> Option<u8>
Pop a byte from the end of the VecPE buffer. See VecBuffer::pop.
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clear the VecPE buffer. See VecBuffer::clear.
Sourcepub fn resize_with<F>(&mut self, new_len: usize, f: F)
pub fn resize_with<F>(&mut self, new_len: usize, f: F)
Resize the buffer and fill with the given closure. See VecBuffer::resize_with.
Sourcepub fn resize(&mut self, new_len: usize, value: u8)
pub fn resize(&mut self, new_len: usize, value: u8)
Resize the given VecPE buffer. See VecBuffer::resize.
Sourcepub fn truncate(&mut self, len: usize)
pub fn truncate(&mut self, len: usize)
Truncate the given VecPE buffer. See VecBuffer::truncate.
Sourcepub fn pad_to_file_alignment(&mut self) -> Result<(), Error>
pub fn pad_to_file_alignment(&mut self) -> Result<(), Error>
Pad the backing vector with 0 to the PE’s file_alignment specification.
Sourcepub fn pad_to_section_alignment(&mut self) -> Result<(), Error>
pub fn pad_to_section_alignment(&mut self) -> Result<(), Error>
Pad the backing vector with 0 to the PE’s section_alignment specification.
Sourcepub fn pad_to_alignment(&mut self) -> Result<(), Error>
pub fn pad_to_alignment(&mut self) -> Result<(), Error>
Pad with 0 to either file_alignment or
section_alignment, depending on what the PEType of the image is.
Trait Implementations§
Source§impl Buffer for VecPE
impl Buffer for VecPE
Source§fn as_mut_ptr(&mut self) -> *mut u8
fn as_mut_ptr(&mut self) -> *mut u8
Buffer object as a mutable pointer.Source§fn as_mut_slice(&mut self) -> &mut [u8] ⓘ
fn as_mut_slice(&mut self) -> &mut [u8] ⓘ
Buffer object as a mutable slice.Source§fn as_ptr_range(&self) -> Range<*const u8>
fn as_ptr_range(&self) -> Range<*const u8>
Source§fn as_mut_ptr_range(&mut self) -> Range<*mut u8>
fn as_mut_ptr_range(&mut self) -> Range<*mut u8>
Source§fn validate_ptr(&self, ptr: *const u8) -> bool
fn validate_ptr(&self, ptr: *const u8) -> bool
Source§fn ptr_to_offset(&self, ptr: *const u8) -> Result<usize, Error>
fn ptr_to_offset(&self, ptr: *const u8) -> Result<usize, Error>
Source§fn ref_to_offset<T>(&self, data: &T) -> Result<usize, Error>
fn ref_to_offset<T>(&self, data: &T) -> Result<usize, Error>
Source§fn swap(&mut self, a: usize, b: usize)
fn swap(&mut self, a: usize, b: usize)
slice::swap
for more details.Source§fn reverse(&mut self)
fn reverse(&mut self)
slice::reverse for more details.Source§fn iter(&self) -> BufferIter<'_>
fn iter(&self) -> BufferIter<'_>
BufferIter) into the buffer.Source§fn iter_mut(&mut self) -> BufferIterMut<'_>
fn iter_mut(&mut self) -> BufferIterMut<'_>
BufferIterMut) into the buffer.Source§fn get<I>(&self, index: I) -> Option<&<I as SliceIndex<[u8]>>::Output>where
I: SliceIndex<[u8]>,
fn get<I>(&self, index: I) -> Option<&<I as SliceIndex<[u8]>>::Output>where
I: SliceIndex<[u8]>,
slice::get for more details.Source§fn get_mut<I>(
&mut self,
index: I,
) -> Option<&mut <I as SliceIndex<[u8]>>::Output>where
I: SliceIndex<[u8]>,
fn get_mut<I>(
&mut self,
index: I,
) -> Option<&mut <I as SliceIndex<[u8]>>::Output>where
I: SliceIndex<[u8]>,
slice::get_mut for more details.Source§fn get_ref<T>(&self, offset: usize) -> Result<&T, Error>where
T: Castable,
fn get_ref<T>(&self, offset: usize) -> Result<&T, Error>where
T: Castable,
Source§unsafe fn get_ref_unaligned<T>(&self, offset: usize) -> Result<&T, Error>
unsafe fn get_ref_unaligned<T>(&self, offset: usize) -> Result<&T, Error>
Source§unsafe fn force_get_ref<T>(&self, offset: usize) -> Result<&T, Error>where
T: Castable,
unsafe fn force_get_ref<T>(&self, offset: usize) -> Result<&T, Error>where
T: Castable,
Source§fn get_mut_ref<T>(&mut self, offset: usize) -> Result<&mut T, Error>where
T: Castable,
fn get_mut_ref<T>(&mut self, offset: usize) -> Result<&mut T, Error>where
T: Castable,
Buffer::get_ref.Source§unsafe fn get_mut_ref_unaligned<T>(
&mut self,
offset: usize,
) -> Result<&mut T, Error>
unsafe fn get_mut_ref_unaligned<T>( &mut self, offset: usize, ) -> Result<&mut T, Error>
Source§unsafe fn force_get_mut_ref<T>(
&mut self,
offset: usize,
) -> Result<&mut T, Error>where
T: Castable,
unsafe fn force_get_mut_ref<T>(
&mut self,
offset: usize,
) -> Result<&mut T, Error>where
T: Castable,
Source§fn make_mut_ref<T>(&mut self, data: &T) -> Result<&mut T, Error>where
T: Castable,
fn make_mut_ref<T>(&mut self, data: &T) -> Result<&mut T, Error>where
T: Castable,
Source§unsafe fn make_mut_ref_unaligned<T>(
&mut self,
data: &T,
) -> Result<&mut T, Error>
unsafe fn make_mut_ref_unaligned<T>( &mut self, data: &T, ) -> Result<&mut T, Error>
Source§unsafe fn force_make_mut_ref<T>(&mut self, data: &T) -> Result<&mut T, Error>where
T: Castable,
unsafe fn force_make_mut_ref<T>(&mut self, data: &T) -> Result<&mut T, Error>where
T: Castable,
Source§fn get_slice_ref<T>(&self, offset: usize, size: usize) -> Result<&[T], Error>where
T: Castable,
fn get_slice_ref<T>(&self, offset: usize, size: usize) -> Result<&[T], Error>where
T: Castable,
Source§unsafe fn get_slice_ref_unaligned<T>(
&self,
offset: usize,
size: usize,
) -> Result<&[T], Error>
unsafe fn get_slice_ref_unaligned<T>( &self, offset: usize, size: usize, ) -> Result<&[T], Error>
Source§unsafe fn force_get_slice_ref<T>(
&self,
offset: usize,
size: usize,
) -> Result<&[T], Error>where
T: Castable,
unsafe fn force_get_slice_ref<T>(
&self,
offset: usize,
size: usize,
) -> Result<&[T], Error>where
T: Castable,
Source§fn get_mut_slice_ref<T>(
&mut self,
offset: usize,
size: usize,
) -> Result<&mut [T], Error>where
T: Castable,
fn get_mut_slice_ref<T>(
&mut self,
offset: usize,
size: usize,
) -> Result<&mut [T], Error>where
T: Castable,
Buffer::get_slice_ref.Source§unsafe fn get_mut_slice_ref_unaligned<T>(
&mut self,
offset: usize,
size: usize,
) -> Result<&mut [T], Error>
unsafe fn get_mut_slice_ref_unaligned<T>( &mut self, offset: usize, size: usize, ) -> Result<&mut [T], Error>
Buffer::get_slice_ref_unaligned.Source§unsafe fn force_get_mut_slice_ref<T>(
&mut self,
offset: usize,
size: usize,
) -> Result<&mut [T], Error>where
T: Castable,
unsafe fn force_get_mut_slice_ref<T>(
&mut self,
offset: usize,
size: usize,
) -> Result<&mut [T], Error>where
T: Castable,
Source§unsafe fn make_mut_slice_ref_unaligned<T>(
&mut self,
data: &[T],
) -> Result<&mut [T], Error>
unsafe fn make_mut_slice_ref_unaligned<T>( &mut self, data: &[T], ) -> Result<&mut [T], Error>
Source§unsafe fn force_make_mut_slice_ref<T>(
&mut self,
data: &[T],
) -> Result<&mut [T], Error>where
T: Castable,
unsafe fn force_make_mut_slice_ref<T>(
&mut self,
data: &[T],
) -> Result<&mut [T], Error>where
T: Castable,
Source§fn read(&self, offset: usize, size: usize) -> Result<&[u8], Error>
fn read(&self, offset: usize, size: usize) -> Result<&[u8], Error>
Source§fn read_mut(&mut self, offset: usize, size: usize) -> Result<&mut [u8], Error>
fn read_mut(&mut self, offset: usize, size: usize) -> Result<&mut [u8], Error>
Source§fn write_ref<T>(&mut self, offset: usize, data: &T) -> Result<(), Error>where
T: Castable,
fn write_ref<T>(&mut self, offset: usize, data: &T) -> Result<(), Error>where
T: Castable,
Source§fn write_slice_ref<T>(&mut self, offset: usize, data: &[T]) -> Result<(), Error>where
T: Castable,
fn write_slice_ref<T>(&mut self, offset: usize, data: &[T]) -> Result<(), Error>where
T: Castable,
Source§fn start_with<B>(&mut self, data: B) -> Result<(), Error>
fn start_with<B>(&mut self, data: B) -> Result<(), Error>
Source§fn start_with_ref<T>(&mut self, data: &T) -> Result<(), Error>where
T: Castable,
fn start_with_ref<T>(&mut self, data: &T) -> Result<(), Error>where
T: Castable,
Source§fn start_with_slice_ref<T>(&mut self, data: &[T]) -> Result<(), Error>where
T: Castable,
fn start_with_slice_ref<T>(&mut self, data: &[T]) -> Result<(), Error>where
T: Castable,
Source§fn end_with<B>(&mut self, data: B) -> Result<(), Error>
fn end_with<B>(&mut self, data: B) -> Result<(), Error>
Source§fn end_with_ref<T>(&mut self, data: &T) -> Result<(), Error>where
T: Castable,
fn end_with_ref<T>(&mut self, data: &T) -> Result<(), Error>where
T: Castable,
Source§fn end_with_slice_ref<T>(&mut self, data: &[T]) -> Result<(), Error>where
T: Castable,
fn end_with_slice_ref<T>(&mut self, data: &[T]) -> Result<(), Error>where
T: Castable,
Source§fn search_ref<T>(&self, data: &T) -> Result<BufferSearchIter, Error>where
T: Castable,
fn search_ref<T>(&self, data: &T) -> Result<BufferSearchIter, Error>where
T: Castable,
u8 slice.
See Buffer::search.Source§fn search_slice_ref<T>(&self, data: &[T]) -> Result<BufferSearchIter, Error>where
T: Castable,
fn search_slice_ref<T>(&self, data: &[T]) -> Result<BufferSearchIter, Error>where
T: Castable,
u8 slice.
See Buffer::search.Source§fn search_dynamic<'a, B>(
&'a self,
data: B,
) -> Result<BufferSearchDynamicIter<'a>, Error>
fn search_dynamic<'a, B>( &'a self, data: B, ) -> Result<BufferSearchDynamicIter<'a>, Error>
Source§fn contains_ref<T>(&self, data: &T) -> Result<bool, Error>where
T: Castable,
fn contains_ref<T>(&self, data: &T) -> Result<bool, Error>where
T: Castable,
Source§fn contains_slice_ref<T>(&self, data: &[T]) -> Result<bool, Error>where
T: Castable,
fn contains_slice_ref<T>(&self, data: &[T]) -> Result<bool, Error>where
T: Castable,
Source§fn starts_with<B>(&self, needle: B) -> bool
fn starts_with<B>(&self, needle: B) -> bool
slice::starts_with.Source§fn ends_with<B>(&self, needle: B) -> bool
fn ends_with<B>(&self, needle: B) -> bool
slice::ends_with.Source§fn rotate_left(&mut self, mid: usize)
fn rotate_left(&mut self, mid: usize)
slice::rotate_left.Source§fn rotate_right(&mut self, mid: usize)
fn rotate_right(&mut self, mid: usize)
slice::rotate_right.Source§fn fill(&mut self, value: u8)
fn fill(&mut self, value: u8)
slice::fill.Source§fn fill_with<F>(&mut self, f: F)
fn fill_with<F>(&mut self, f: F)
slice::fill_with.Source§fn clone_from_data<B>(&mut self, src: B)
fn clone_from_data<B>(&mut self, src: B)
Source§fn copy_from_data<B>(&mut self, src: B)
fn copy_from_data<B>(&mut self, src: B)
Source§fn copy_within<R>(&mut self, src: R, dest: usize)where
R: RangeBounds<usize>,
fn copy_within<R>(&mut self, src: R, dest: usize)where
R: RangeBounds<usize>,
slice::copy_within.Source§fn swap_with_data<B>(&mut self, other: B)
fn swap_with_data<B>(&mut self, other: B)
Source§fn is_ascii(&self) -> bool
fn is_ascii(&self) -> bool
slice::is_ascii.Source§fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool
fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool
slice::eq_ignore_ascii_case.Source§fn make_ascii_uppercase(&mut self)
fn make_ascii_uppercase(&mut self)
slice::make_ascii_uppercase.Source§fn make_ascii_lowercase(&mut self)
fn make_ascii_lowercase(&mut self)
slice::make_ascii_lowercase.Source§fn sort(&mut self)
fn sort(&mut self)
slice::sort.Source§fn sort_by<F>(&mut self, compare: F)
fn sort_by<F>(&mut self, compare: F)
slice::sort_by.Source§fn sort_by_key<K, F>(&mut self, f: F)
fn sort_by_key<K, F>(&mut self, f: F)
slice::sort_by_key.Source§impl PE for VecPE
impl PE for VecPE
Source§fn is_allocated(&self) -> bool
fn is_allocated(&self) -> bool
PE has been allocated by VirtualAlloc.Source§fn get_cstring_size(
&self,
offset: usize,
thunk: bool,
max_size: Option<usize>,
) -> Result<usize, Error>
fn get_cstring_size( &self, offset: usize, thunk: bool, max_size: Option<usize>, ) -> Result<usize, Error>
Source§fn get_widestring_size(
&self,
offset: usize,
max_size: Option<usize>,
) -> Result<usize, Error>
fn get_widestring_size( &self, offset: usize, max_size: Option<usize>, ) -> Result<usize, Error>
Source§fn get_cstring(
&self,
offset: usize,
thunk: bool,
max_size: Option<usize>,
) -> Result<&[CChar], Error>
fn get_cstring( &self, offset: usize, thunk: bool, max_size: Option<usize>, ) -> Result<&[CChar], Error>
Source§fn get_mut_cstring(
&mut self,
offset: usize,
thunk: bool,
max_size: Option<usize>,
) -> Result<&mut [CChar], Error>
fn get_mut_cstring( &mut self, offset: usize, thunk: bool, max_size: Option<usize>, ) -> Result<&mut [CChar], Error>
Source§fn get_widestring(
&self,
offset: usize,
max_size: Option<usize>,
) -> Result<&[WChar], Error>
fn get_widestring( &self, offset: usize, max_size: Option<usize>, ) -> Result<&[WChar], Error>
Source§fn get_mut_widestring(
&mut self,
offset: usize,
max_size: Option<usize>,
) -> Result<&mut [WChar], Error>
fn get_mut_widestring( &mut self, offset: usize, max_size: Option<usize>, ) -> Result<&mut [WChar], Error>
Source§fn translate(&self, addr: PETranslation) -> Result<usize, Error>
fn translate(&self, addr: PETranslation) -> Result<usize, Error>
Buffer trait based on the PE object’s
type (i.e., the result of PE::get_type). Read moreSource§fn get_dos_header(&self) -> Result<&ImageDOSHeader, Error>
fn get_dos_header(&self) -> Result<&ImageDOSHeader, Error>
Source§fn get_mut_dos_header(&mut self) -> Result<&mut ImageDOSHeader, Error>
fn get_mut_dos_header(&mut self) -> Result<&mut ImageDOSHeader, Error>
Source§fn get_valid_dos_header(&self) -> Result<&ImageDOSHeader, Error>
fn get_valid_dos_header(&self) -> Result<&ImageDOSHeader, Error>
Source§fn get_valid_mut_dos_header(&mut self) -> Result<&mut ImageDOSHeader, Error>
fn get_valid_mut_dos_header(&mut self) -> Result<&mut ImageDOSHeader, Error>
Source§fn get_dos_stub(&self) -> Result<&[u8], Error>
fn get_dos_stub(&self) -> Result<&[u8], Error>
Source§fn get_nt_headers_32(&self) -> Result<&ImageNTHeaders32, Error>
fn get_nt_headers_32(&self) -> Result<&ImageNTHeaders32, Error>
Source§fn get_mut_nt_headers_32(&mut self) -> Result<&mut ImageNTHeaders32, Error>
fn get_mut_nt_headers_32(&mut self) -> Result<&mut ImageNTHeaders32, Error>
Source§fn get_valid_nt_headers_32(&self) -> Result<&ImageNTHeaders32, Error>
fn get_valid_nt_headers_32(&self) -> Result<&ImageNTHeaders32, Error>
Source§fn get_valid_mut_nt_headers_32(
&mut self,
) -> Result<&mut ImageNTHeaders32, Error>
fn get_valid_mut_nt_headers_32( &mut self, ) -> Result<&mut ImageNTHeaders32, Error>
Source§fn get_nt_headers_64(&self) -> Result<&ImageNTHeaders64, Error>
fn get_nt_headers_64(&self) -> Result<&ImageNTHeaders64, Error>
Source§fn get_mut_nt_headers_64(&mut self) -> Result<&mut ImageNTHeaders64, Error>
fn get_mut_nt_headers_64(&mut self) -> Result<&mut ImageNTHeaders64, Error>
Source§fn get_valid_nt_headers_64(&self) -> Result<&ImageNTHeaders64, Error>
fn get_valid_nt_headers_64(&self) -> Result<&ImageNTHeaders64, Error>
Source§fn get_valid_mut_nt_headers_64(
&mut self,
) -> Result<&mut ImageNTHeaders64, Error>
fn get_valid_mut_nt_headers_64( &mut self, ) -> Result<&mut ImageNTHeaders64, Error>
Source§fn get_nt_magic(&self) -> Result<u16, Error>
fn get_nt_magic(&self) -> Result<u16, Error>
Source§fn get_valid_nt_headers(&self) -> Result<NTHeaders<'_>, Error>
fn get_valid_nt_headers(&self) -> Result<NTHeaders<'_>, Error>
Source§fn get_valid_mut_nt_headers(&mut self) -> Result<NTHeadersMut<'_>, Error>
fn get_valid_mut_nt_headers(&mut self) -> Result<NTHeadersMut<'_>, Error>
Source§fn validate_checksum(&self) -> Result<bool, Error>
fn validate_checksum(&self) -> Result<bool, Error>
Source§fn get_data_directory_offset(&self) -> Result<Offset, Error>
fn get_data_directory_offset(&self) -> Result<Offset, Error>
Source§fn get_data_directory_size(&self) -> Result<usize, Error>
fn get_data_directory_size(&self) -> Result<usize, Error>
number_of_rva_and_sizes to 16, which is what
the Windows loader does.Source§fn get_data_directory_table(&self) -> Result<&[ImageDataDirectory], Error>
fn get_data_directory_table(&self) -> Result<&[ImageDataDirectory], Error>
Source§fn get_mut_data_directory_table(
&mut self,
) -> Result<&mut [ImageDataDirectory], Error>
fn get_mut_data_directory_table( &mut self, ) -> Result<&mut [ImageDataDirectory], Error>
Source§fn get_data_directory(
&self,
dir: ImageDirectoryEntry,
) -> Result<&ImageDataDirectory, Error>
fn get_data_directory( &self, dir: ImageDirectoryEntry, ) -> Result<&ImageDataDirectory, Error>
ImageDirectoryEntry enum.
Returns Error::BadDirectory if the given directory is inaccessible due to the directory
size.Source§fn get_mut_data_directory(
&mut self,
dir: ImageDirectoryEntry,
) -> Result<&mut ImageDataDirectory, Error>
fn get_mut_data_directory( &mut self, dir: ImageDirectoryEntry, ) -> Result<&mut ImageDataDirectory, Error>
ImageDirectoryEntry enum.Source§fn has_data_directory(&self, dir: ImageDirectoryEntry) -> bool
fn has_data_directory(&self, dir: ImageDirectoryEntry) -> bool
Source§fn cast_directory<T: Castable>(
&self,
dir: ImageDirectoryEntry,
) -> Result<&T, Error>
fn cast_directory<T: Castable>( &self, dir: ImageDirectoryEntry, ) -> Result<&T, Error>
ImageDirectoryEntry.Source§fn cast_directory_mut<T: Castable>(
&mut self,
dir: ImageDirectoryEntry,
) -> Result<&mut T, Error>
fn cast_directory_mut<T: Castable>( &mut self, dir: ImageDirectoryEntry, ) -> Result<&mut T, Error>
ImageDirectoryEntry.Source§fn get_section_table_offset(&self) -> Result<Offset, Error>
fn get_section_table_offset(&self) -> Result<Offset, Error>
Source§fn get_section_table(&self) -> Result<&[ImageSectionHeader], Error>
fn get_section_table(&self) -> Result<&[ImageSectionHeader], Error>
Source§fn get_mut_section_table(&mut self) -> Result<&mut [ImageSectionHeader], Error>
fn get_mut_section_table(&mut self) -> Result<&mut [ImageSectionHeader], Error>
Source§fn get_section_by_offset(
&self,
offset: Offset,
) -> Result<&ImageSectionHeader, Error>
fn get_section_by_offset( &self, offset: Offset, ) -> Result<&ImageSectionHeader, Error>
Error::SectionNotFound error if the offset wasn’t found to be in a section.Source§fn get_mut_section_by_offset(
&mut self,
offset: Offset,
) -> Result<&mut ImageSectionHeader, Error>
fn get_mut_section_by_offset( &mut self, offset: Offset, ) -> Result<&mut ImageSectionHeader, Error>
Error::SectionNotFound error if the offset wasn’t found to be in a section.Source§fn get_section_by_rva(&self, rva: RVA) -> Result<&ImageSectionHeader, Error>
fn get_section_by_rva(&self, rva: RVA) -> Result<&ImageSectionHeader, Error>
Error::SectionNotFound error if the RVA wasn’t found to be in a section.Source§fn get_mut_section_by_rva(
&mut self,
rva: RVA,
) -> Result<&mut ImageSectionHeader, Error>
fn get_mut_section_by_rva( &mut self, rva: RVA, ) -> Result<&mut ImageSectionHeader, Error>
Error::SectionNotFound error if the RVA wasn’t found to be in a section.Source§fn get_section_by_name<S: AsRef<str>>(
&self,
name: S,
) -> Result<&ImageSectionHeader, Error>
fn get_section_by_name<S: AsRef<str>>( &self, name: S, ) -> Result<&ImageSectionHeader, Error>
Error::SectionNotFound error if the name wasn’t found in the section table.Source§fn get_mut_section_by_name(
&mut self,
name: String,
) -> Result<&mut ImageSectionHeader, Error>
fn get_mut_section_by_name( &mut self, name: String, ) -> Result<&mut ImageSectionHeader, Error>
Error::SectionNotFound error if the name wasn’t found in the section table.Source§fn add_section(
&mut self,
section: &ImageSectionHeader,
) -> Result<&mut ImageSectionHeader, Error>
fn add_section( &mut self, section: &ImageSectionHeader, ) -> Result<&mut ImageSectionHeader, Error>
Source§fn append_section(
&mut self,
section: &ImageSectionHeader,
) -> Result<&mut ImageSectionHeader, Error>
fn append_section( &mut self, section: &ImageSectionHeader, ) -> Result<&mut ImageSectionHeader, Error>
add_section by setting the
new section’s pointer_to_raw_data and virtual_address
to the end of the previous section’s boundaries. Read moreSource§fn validate_offset(&self, offset: Offset) -> bool
fn validate_offset(&self, offset: Offset) -> bool
Source§fn validate_va(&self, va: VA) -> bool
fn validate_va(&self, va: VA) -> bool
Source§fn is_aligned_to_file(&self, offset: Offset) -> bool
fn is_aligned_to_file(&self, offset: Offset) -> bool
Source§fn is_aligned_to_section(&self, rva: RVA) -> bool
fn is_aligned_to_section(&self, rva: RVA) -> bool
Source§fn offset_to_rva(&self, offset: Offset) -> Result<RVA, Error>
fn offset_to_rva(&self, offset: Offset) -> Result<RVA, Error>
Error::InvalidRVA if the produced
RVA is invalid or if the section it was transposed from no longer contains it.Source§fn offset_to_va(&self, offset: Offset) -> Result<VA, Error>
fn offset_to_va(&self, offset: Offset) -> Result<VA, Error>
Source§fn rva_to_offset(&self, rva: RVA) -> Result<Offset, Error>
fn rva_to_offset(&self, rva: RVA) -> Result<Offset, Error>
Error::InvalidOffset error if
the produced offset is invalid or if the section it was transposed from no longer contains it.Source§fn rva_to_va(&self, rva: RVA) -> Result<VA, Error>
fn rva_to_va(&self, rva: RVA) -> Result<VA, Error>
Error::InvalidVA error if the produced
VA is invalid.Source§fn va_to_rva(&self, va: VA) -> Result<RVA, Error>
fn va_to_rva(&self, va: VA) -> Result<RVA, Error>
Error::InvalidRVA error if the produced RVA
is invalid.Source§fn get_resource_address(&self, offset: ResourceOffset) -> Result<RVA, Error>
fn get_resource_address(&self, offset: ResourceOffset) -> Result<RVA, Error>
Source§fn calculate_header_size(&self) -> Result<usize, Error>
fn calculate_header_size(&self) -> Result<usize, Error>
Source§fn calculate_disk_size(&self) -> Result<usize, Error>
fn calculate_disk_size(&self) -> Result<usize, Error>
Source§fn calculate_memory_size(&self) -> Result<usize, Error>
fn calculate_memory_size(&self) -> Result<usize, Error>
Source§fn recreate_image(&self, pe_type: PEType) -> Result<Vec<u8>, Error>
fn recreate_image(&self, pe_type: PEType) -> Result<Vec<u8>, Error>
PEType::Disk image)
or what the image looks like in memory (i.e., a PEType::Memory image). Read moreSource§fn fix_image_size(&mut self) -> Result<(), Error>
fn fix_image_size(&mut self) -> Result<(), Error>
PE’s memory size with calculate_memory_size and set this value as the
header’s size_of_image value.