
Framework di esecuzione simbolica dinamica e analisi binaria con analisi delle macchie, risoluzione di vincoli, emulazione multi-architettura tramite Ghidra Sleigh e binding Python per la scoperta automatizzata di vulnerabilità.
Maat è un framework open-source per l'esecuzione simbolica dinamica e l'analisi binaria. Fornisce varie funzionalità come esecuzione simbolica, analisi delle macchie (taint analysis), risoluzione di vincoli, caricamento binario, simulazione dell'ambiente e sfrutta la libreria sleigh di Ghidra per il lifting dell'assembly: https://maat.re
Caratteristiche principali:
Per installare il modulo python di Maat:
python3 -m pip install pymaat
Per installare l'SDK nativo di Maat e utilizzare l'API C++, consultare BUILDING.md
from maat import *
# Create a symbolic engine for Linux X86-32bits
engine = MaatEngine(ARCH.X86, OS.LINUX)
# Load a binary with one command line argument
engine.load("./some_binary", BIN.ELF32, args=[engine.vars.new_symbolic_buffer("some_arg", 20)])
# Get current eax value
engine.cpu.eax
# Read 4 bytes at the top of the stack
engine.mem.read(engine.cpu.esp, 4)
# Set a callback displaying every memory read
def show_mem_access(engine):
mem_access = engine.info.mem_access
print(f"Instruction at {engine.info.addr} reads {mem_access.size} bytes at {mem_access.addr}")
engine.hooks.add(EVENT.MEM_R, WHEN.BEFORE, callbacks=[show_mem_access])
# Take and restore snapshots
snap = engine.take_snapshot()
engine.restore_snapshot(snap)
# Run the binary
engine.run()
Per discussioni generali, domande e suggerimenti, usiamo Discussioni su Github
Per segnalare problemi e bug, si prega di usare Issue su Github
Per qualsiasi altra cosa, invia un'email a [email protected]