Memory module

Modeling a process's main memory.

Contents

This module contains classes that simulates the main memory of a process. The main relevant class to use as a user is MemEngine. It basically models a flattened memory address space (0x0 to 0xffffffffffffffff) in which we can map/delete memory segments, and perform read/write operations.

❱   Classes

class maat::MemStatusBitmap

class maat::MemConcreteBuffer

class maat::MemAbstractBuffer

class maat::MemSegment

class maat::SymbolicMemWrite
Represents a symbolic pointer memory write.

class maat::SimpleInterval
Class used internally for symbolic memory management.

class maat::IntervalTree
Class used internally for symbolic memory management.

class maat::SymbolicMemEngine
Dedicated memory engine handling the 'symbolic' memory state resulting from symbolic pointer writes.

class maat::MemEngine

class maat::PageSet
A set of contiguous memory pages.

class maat::MemPageManager
Basic manager for page permissions.

class maat::MemMap
A memory mapping.

class maat::MemMapManager
Basic manager for page permissions.

❱   Typedefs

using offset_t = addr_t
Type used internally by Maat's memory engine.

using addr_t = uint64_t
Concrete memory address.

❱   Functions

auto reserved_memory(MemEngine& mem) -> addr_t
This helper function returns the start address of a segment of size 0x1000 with RW permission named "Reserved". This segment is used internally to emulate some instructions/syscalls. If the segment doesn't yet exist it is created.