Willi Ballenthin 39f5c9cd12 Follow the __stdio_common_vsprintf options
The handler ignored Options, wrote a terminator one byte past the buffer,
and returned the length with the terminator. Apply the UCRT rules: with
_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, truncate and return the full
length; with _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, follow
_vsnprintf; else terminate the truncated text and return -1. A NULL buffer
with a count of 0 returns the length.
2026-10-08 19:39:24 +01:00
2026-10-08 19:39:24 +01:00
2026-10-08 19:39:24 +01:00
2020-08-21 17:05:28 -04:00
2026-03-02 19:29:35 +01:00

Speakeasy

Speakeasy is a Windows malware emulation framework that executes binaries, drivers, and shellcode in a modeled Windows runtime instead of a full VM. It emulates APIs, process/thread behavior, filesystem, registry, and network activity so samples can keep moving through realistic execution paths. You can run it from the speakeasy CLI for fast triage or embed it as a Python library and consume structured JSON reports.

Background context: Mandiant's overview post.

Quick start

Install from PyPI:

python3 -m pip install speakeasy-emulator

Run a sample and inspect high-level report fields (replace sample.dll with your target):

speakeasy -t sample.dll --no-mp -o report.json 2>/dev/null
jq '{sha256, arch, filetype, entry_points: (.entry_points | length)}' report.json
{
  "sha256": "30ec092d122a90441a2560f6778ef8233c98079cd34b7633f7bbc2874c8d7a45",
  "arch": "x86",
  "filetype": "dll",
  "entry_points": 3
}

Executable proof for this snippet: doc/readme-quickstart-showboat.md.

Documentation map

Start here

CLI usage

Reports, configuration, and runtime behavior

Debugging and extension

Questions and help

Start with doc/help.md.

If you still need help, open an issue at github.com/mandiant/speakeasy/issues.

S
Description
Windows kernel and user mode emulation.
Readme
4.2 MiB
Languages
Python 99.8%
C 0.1%