¿Qué hace herramientas-de-ejecucion-simbolica?
Manual de ejecución simbólica y resolución de restricciones. Úselo al resolver desafíos de ingeniería inversa de CTF, recuperar claves, eludir verificaciones o automatizar el análisis binario con angr, Z3 o Unicorn Engine.
Introducción
La ejecución simbólica es una técnica de análisis de programas que trata las entradas como símbolos en lugar de valores concretos. Esto permite explorar múltiples caminos de ejecución simultáneamente y encontrar valores de entrada que satisfagan ciertas condiciones.
Herramientas principales
- angr: Marco de análisis binario de código abierto que facilita la ejecución simbólica.
- Z3: Solucionador de restricciones de Microsoft Research, utilizado para resolver ecuaciones lógicas.
- Unicorn Engine: Emulador de CPU ligero y multiplataforma para ejecución de código binario.
Instalación
pip install angr z3-solver unicorn
Ejemplo de uso
Resolver una restricción simple con Z3
from z3 import *
x = BitVec('x', 32)
s = Solver()
s.add(x * 2 == 10)
print(s.check())
print(s.model())
Análisis simbólico con angr
import angr
proj = angr.Project('binario', auto_load_libs=False)
state = proj.factory.entry_state()
simgr = proj.factory.simulation_manager(state)
simgr.explore(find=0x400000)
print(simgr.found[0].posix.dumps(0))
Notas importantes
- Asegúrese de que el binario sea compatible con la arquitectura de la herramienta.
- La ejecución simbólica puede ser costosa en términos de recursos; considere limitar el espacio de búsqueda.
- Para problemas complejos, combine Z3 con angr para mayor eficiencia.