IMG_REF
🕹️ Decompilación N64 con LLMs: El Problema de la Larga Cola
🛡️ Contexto Técnico y Clasificación de Funciones
La decompilación de binarios de legado, como los de la arquitectura MIPS en la Nintendo 64, ha dado un salto cualitativo mediante el uso de LLMs (específicamente Claude). Sin embargo, la eficiencia del proceso tiende a degradarse a medida que las funciones se vuelven más complejas y únicas, lo que se conoce como el problema de la “larga cola”.
- Priorización por Regresión Logística: Se ha implementado un modelo estadístico para rankear funciones basándose en su “facilidad” de decompilación, utilizando como métricas el conteo de instrucciones y la complejidad del grafo de flujo de control (CFG).
- Agotamiento del Enfoque Directo: Mientras que las funciones pequeñas son resueltas con alta fidelidad, las funciones más extensas presentan optimizaciones de compilador que confunden a los modelos de lenguaje estándar sin un contexto adicional.
💻 Innovaciones: Embeddings de Assembly y Similitud Semántica
Para superar el estancamiento en las funciones más difíciles, la investigación de Chris Lewis y Macabeus introduce una capa de inteligencia de datos sobre el binario:
- Espacio Latente de Instrucciones: El uso de text embeddings aplicados directamente al assembly permite proyectar las funciones en un espacio vectorial. Esto facilita la búsqueda de funciones similares dentro de un repositorio de código ya decompilado.
- Inferencia por Patrones: Al proporcionar al LLM ejemplos de funciones similares (técnica few-shot), el modelo logra identificar cómo bloques específicos de assembly MIPS se mapean a estructuras idiomáticas en C, reduciendo significativamente las alucinaciones de lógica.
🚀 Optimización del Flujo de Trabajo y Agentes
La arquitectura del sistema no se limita a un simple prompt; se comporta como un agente guiado que interactúa con el binario:
- Implementación de Hooks: Se utilizan puntos de anclaje para guiar al agente de IA, evitando que repita errores sistémicos y permitiendo correcciones manuales que se propagan semánticamente.
- Validación de Estructuras: El sistema integra herramientas de análisis estático tradicionales para verificar que las firmas de las funciones y los accesos a memoria sean consistentes con el hardware original.
- Impacto en la Preservación: Este enfoque reduce drásticamente el tiempo de ingeniería inversa para proyectos de preservación de software, permitiendo abordar bases de código que antes se consideraban inalcanzables por su complejidad técnica.