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).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl MemoryReader for MappedMemory

MemoryReader implementation for MappedMemory (for testing).

Source§

impl MemoryReader for SliceMemoryReader