
동적 기호 실행 및 바이너리 분석 프레임워크로, 오염 분석, 제약 조건 해결, Ghidra의 Sleigh를 통한 다중 아키텍처 에뮬레이션, 그리고 자동 취약점 발견을 위한 Python 바인딩을 제공합니다
Maat는 오픈소스 동적 기호 실행(Dynamic Symbolic Execution) 및 바이너리 분석 프레임워크입니다. 기호 실행, 오염 분석, 제약 조건 해결, 바이너리 로딩, 환경 시뮬레이션 등 다양한 기능을 제공하며, Ghidra의 sleigh 라이브러리를 활용하여 어셈블리를 리프팅합니다: https://maat.re
주요 기능:
Maat의 Python 모듈을 설치하려면:
python3 -m pip install pymaat
Maat의 네이티브 SDK를 설치하고 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 Discussions를 사용해 주세요.
문제 및 버그 보고는 Github Issues를 이용해 주세요.
기타 문의는 [email protected]으로 이메일을 보내 주세요.