
El aplanamiento del flujo de control es una técnica de ofuscación común utilizada por OLLVM (OBFUSCATOR-LLVM) que convierte la lógica ejecutable en estructuras complejas impulsadas por el estado.
La herramienta OLLVM-Unflattener aborda este desafío a través del análisis basado en Python y la integración del marco de miasma, proporcionando así un enfoque sistemático para la ofuscación de la ingeniería inversa de los archivos binarios.
Esta herramienta se especializa en diagramas de flujo de control originales (CFGS):
- Ejecución de símbolos Características planas del motor de Miasm
- Análisis de variables de estado Determinar el mecanismo de programación y las relaciones de bloqueo
- Desdopado de múltiples capas Llamada a través de la función de búsqueda de amplitud (BFS)
- Parche binario Recuperar la lógica ejecutable
Características clave
- Soporte de arquitectura: Actualmente centrándose en la arquitectura x86 (Prueba en Linux Sprite Binary)
- Análisis dinámico: Ejecutar con símbolos en lugar de coincidencia de patrones estáticos
- Procesamiento por lotes:
--allLas banderas pueden hacer la desobfuscación recursiva de las funciones relacionadas - Verificación visual: Genere gráficos GraphViz para encontrar la comparación delantera/posterior
bash# Installation
git clone https://github.com/cdong1012/ollvm-unflattener.git
pip install -r requirements.txtFlujo de trabajo operativo
- Reconocimiento objetivo: Dirección funcional requerida (
-talcance) - Realizar el seguimiento: El mapa se ejecuta por símbolos
- Reconstrucción CFG: Reconstruya la conexión de bloque original utilizando la lógica restaurada
- Modificación binaria: El parche aplana la estructura y reconstruye el flujo
| CFG confundido | CFG recuperado |
|---|---|
| Estructura de casos de interruptor complejo | Rama condicional simplificada |
| Una transición impulsada por el estado | Conexión de bloque directo |
límite
- Restricciones arquitectónicas: No hay soporte de brazo nativo/x64 (se requiere modificación del código)
- Especificidad de la plataforma: Principalmente probado en archivos binarios de Linux
- Profundidad de la capa: La ofuscación multi-universal debe procesarse secuencialmente
La herramienta mostró una tasa de éxito del 83% en los casos de prueba, aunque la ofuscación compleja de múltiples capas puede requerir una intervención manual.
Los planes de desarrollo futuros incluyen la integración de IDA Pro y el soporte de arquitectura extendida, que es el concepto del método de análisis estático de Modeflattener.









