Skip to main content

MemoryReader

Trait MemoryReader 

Source
pub trait MemoryReader {
    // Required method
    fn read_memory(&self, address: u64, size: usize) -> Option<Vec<u8>>;

    // Provided methods
    fn read_u8(&self, address: u64) -> Option<u8> { ... }
    fn read_u16(&self, address: u64) -> Option<u16> { ... }
    fn read_u32(&self, address: u64) -> Option<u32> { ... }
    fn read_u64(&self, address: u64) -> Option<u64> { ... }
    fn read_i32(&self, address: u64) -> Option<i32> { ... }
    fn read_i64(&self, address: u64) -> Option<i64> { ... }
    fn read_pointer(&self, address: u64, is_64_bit: bool) -> Option<u64> { ... }
}
Expand description

Trait for reading memory from a target process.

The library crate contains all unwinding algorithms but needs to read target process memory. The binary crate implements this trait using mach_vm_read().

Required Methods§

Source

fn read_memory(&self, address: u64, size: usize) -> Option<Vec<u8>>

Reads size bytes from the given virtual address. Returns None if the read fails.

Provided Methods§

Source

fn read_u8(&self, address: u64) -> Option<u8>

Reads a single byte.

Source

fn read_u16(&self, address: u64) -> Option<u16>

Reads a little-endian u16.

Source

fn read_u32(&self, address: u64) -> Option<u32>

Reads a little-endian u32.

Source

fn read_u64(&self, address: u64) -> Option<u64>

Reads a little-endian u64.

Source

fn read_i32(&self, address: u64) -> Option<i32>

Reads a little-endian i32.

Source

fn read_i64(&self, address: u64) -> Option<i64>

Reads a little-endian i64.

Source

fn read_pointer(&self, address: u64, is_64_bit: bool) -> Option<u64>

Reads a pointer-sized value (4 or 8 bytes depending on is_64_bit).

Implementors§

Source§

impl MemoryReader for MappedMemory

MemoryReader implementation for MappedMemory (for testing).

Source§

impl MemoryReader for SliceMemoryReader