
Фреймворк динамического символьного выполнения и анализа бинарного кода с анализом помеченных данных, решением ограничений, многоплатформенной эмуляцией через Sleigh от Ghidra и привязками к Python для автоматизированного поиска уязвимостей.
Maat — это фреймворк с открытым исходным кодом для динамического символьного выполнения и анализа бинарных файлов. Он предоставляет различные функции, такие как символьное выполнение, анализ потока данных (taint analysis), решение ограничений, загрузка бинарных файлов, симуляция окружения, и использует библиотеку Sleigh от Ghidra для подъема ассемблерного кода: https://maat.re
Ключевые особенности:
Чтобы установить модуль Maat для Python:
python3 -m pip install pymaat
Чтобы установить нативный SDK Maat и использовать C++ API, обратитесь к 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()
Для общих обсуждений, вопросов и предложений используйте Обсуждения на GitHub
Для сообщения о проблемах и ошибках используйте Проблемы на GitHub
По всем остальным вопросам пишите на почту [email protected]