¿Qué hace code-obfuscation-deobfuscation?
Manual de análisis y desofuscación de código. Útil al invertir binarios protegidos con código basura, predicados opacos, código automodificable, aplanamiento de flujo de control, protección de máquinas virtuales o cifrado de cadenas.
Introducción
Este manual cubre técnicas comunes de ofuscación de código y métodos para desofuscarlas. Está diseñado para ingenieros inversos, analistas de seguridad y desarrolladores que trabajan con binarios protegidos.
Técnicas de Ofuscación Cubiertas
- Código Basura: Instrucciones inútiles insertadas para dificultar el análisis.
- Predicados Opacos: Condiciones siempre verdaderas o falsas que confunden a los descompiladores.
- Código Automodificable: Código que se modifica a sí mismo en tiempo de ejecución.
- Aplanamiento de Flujo de Control: Reestructuración del flujo de control para eliminar estructuras de bucle y condicionales claras.
- Protección de Máquinas Virtuales: Ofuscación mediante la ejecución de código en una máquina virtual personalizada.
- Cifrado de Cadenas: Cadenas de texto almacenadas de forma cifrada y descifradas en tiempo de ejecución.
Herramientas Recomendadas
- Descompiladores: IDA Pro, Ghidra, Binary Ninja
- Depuradores: x64dbg, OllyDbg, GDB
- Analizadores Estáticos: radare2, angr, Triton
- Scripting: Python con bibliotecas como
capstone,unicorn,z3
Ejemplo de Desofuscación
Identificar Predicados Opacos
import capstone
# Código de ejemplo con predicado opaco
code = b"\x55\x48\x89\xe5\xb8\x01\x00\x00\x00\x83\xf8\x01\x74\x0c\xb8\x02\x00\x00\x00\xeb\x0a\xb8\x03\x00\x00\x00"
md = capstone.Cs(capstone.CS_ARCH_X86, capstone.CS_MODE_64)
for insn in md.disasm(code, 0x1000):
print(f"0x{insn.address:x}: {insn.mnemonic} {insn.op_str}")
Eliminar Código Basura
- Ejecutar el binario en un depurador y registrar cada instrucción ejecutada.
- Filtrar instrucciones que no afectan registros utilizados posteriormente.
- Utilizar análisis de flujo de datos para eliminar bloques muertos.
Referencias
Nota: Algunas ofuscaciones avanzadas (como VMProtect o Themida) pueden requerir técnicas específicas fuera del alcance de este manual básico.