Speakeasy layers a memory manager on top of the emulator engine and tracks each mapped region with tags and metadata that can be exported in reports.
Each allocation is tagged with this namespace format:
<origin>.<object_type>.<object_name>.<base_address>
Typical origins:
emu: memory mapped by emulator internals (images, stacks, core runtime structures)api: memory allocated via API handlers (for exampleVirtualAllocpaths)
Set keep_memory_on_free (or --keep-memory-on-free) to keep mappings after free operations. This is useful when samples allocate, populate, and free buffers quickly but you still need to inspect resulting artifacts.
In-report snapshots:
--snapshot-memory-regionsstores region payload refs in the report- resolve those refs through the top-level
datasection, which storesbase64(zlib(raw_bytes))keyed by SHA-256
This keeps memory snapshots self-contained while deduplicating repeated regions across runs.
Set analysis.memory_tracing (or --analysis-memory-tracing) to track per-region read/write/execute counters and symbol access summaries.
This adds overhead, especially on memory-heavy samples.