Decompilando Winamp con IA: Usando REA para crear un clon web desde el ejecutable original

El fin de semana, mirando archivos y proyectos viejos en mi PC, me encontré con la instalación de Winamp 5.9.2 en C:\Program Files (x86)\Winamp\winamp.exe.

Me puse a pensar qué tan viable era que una IA no solo me dijera “cómo programar un reproductor parecido”, sino que fuera capaz de abrir el .exe real, ver cómo está hecho por dentro y recrearlo tal cual para la web.

Para hacer esto utilicé una herramienta llamada REA (Reverse Engineer Anything) conectada como servidor MCP a mi asistente de código.

¿Qué es REA y para qué sirve?

En simple: es un servidor MCP que le da a los modelos de lenguaje herramientas reales de ingeniería inversa (como Ghidra, Rizin, depuradores y analizadores de binarios PE/ELF).

En vez de que la IA invente o suponga cosas, REA inspecciona el archivo binario compilado y extrae datos reales con evidencia: librerías que utiliza, funciones exportadas, recursos internos y llamadas del sistema. Es ideal para auditar ejecutables cerrados o rescatar lógica de sistemas legacy cuando ya no tienes el código fuente a mano.

La radiografía de winamp.exe

Le pedí que analizara el ejecutable de Winamp en mi disco y en un par de minutos me arrojó la arquitectura real:

  • Gestor de memoria de cadenas: El .exe actúa como un núcleo liviano que maneja su propia tabla de strings con conteo de referencias mediante funciones exportadas (plstring_malloc, plstring_retain, plstring_release).
  • Bus de servicios Wasabi (System/*.w5s): Los módulos desacoplados con los que Winamp carga codecs, plugins y skins. Además del modo seguro clásico (/SAFE=1 y /SAFE=2) para iniciar sin plugins de terceros.
  • Base de datos NDE (nde.dll): El motor propietario (Nullsoft Database Engine) que hace volar las búsquedas en la Media Library sin requerir bases de datos pesadas.
  • Formato de títulos ATF (tagz.w5s): Encontró en los recursos embebidos del binario la documentación de su motor de títulos, que procesa variables como %artist% - %title% y funciones lógicas ($if2, $upper, etc.) para la marquesina.
  • Comandos IPC: La lista completa de mensajes de ventana de la clase Winamp v1.x (/WA_IPC, /PLAY, /STOPFADE, /VOL=).

Reconstruyendo el reproductor en la web

Con la estructura clara, armé un flujo de trabajo con agentes especializados (utilizando Agency-Agents) para repartir las tareas:

  1. Motor de Audio: Implementado con la Web Audio API nativa. Se armó la cadena exacta de Winamp: ganancia de preamplificador (-12 a +12 dB), ecualizador de 10 bandas con filtros biquad en las mismas frecuencias (desde 60 Hz hasta 16 kHz), control de balance estéreo y un nodo analizador FFT para el espectro. Para probarlo de inmediato sin cargar MP3s externos, el script genera 5 pistas de audio WAV sintetizadas directamente en memoria.
  2. Interfaz y Skins: CSS puro con los biseles 3D metálicos, las pantallas LCD con efecto de matriz LED verde, el modo Windowshade (doble clic en la barra para achicar la ventana a una tira delgada) y soporte para cambiar entre 4 pieles: Classic 2.91, Bento, Amber y Cyber.
  3. Las 5 ventanas clásicas: Ventana principal con timer y vúmetro de 76 bandas, ecualizador gráfico con dibujo de la curva spline en tiempo real, editor de playlist, la Media Library con búsqueda instantánea y el visualizador estilo MilkDrop / AVS corriendo a 60 FPS sobre un <canvas>.
  4. Control por teclado y CLI: Atajos clásicos funcionales (Z, X, C, V, B, J para Jump to File) y una consola interactiva para probar los comandos de línea de comandos /WA_IPC.

Para verificar que todo funcionara bien, el mismo REA abrió el navegador de forma desatendida, probó la reproducción y revisó que no hubiera ningún error en consola ni enlaces caídos.

Aquí una captura de cómo quedó funcionando en local:

Simple, nostálgico y bastante entretenido de armar. Me parece una excelente muestra de cómo las herramientas MCP para IA ya no son solo para autocompletar código, sino para interactuar y entender software real compilado.

Si les interesa el tema de ingeniería inversa con LLMs o servidores MCP, me dejan un comentario y les comparto más detalles.

Agregar un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos están marcados *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.