Desde joven que me entusiasma la informática. Especialmente admiro los compresores y los antivirus. La idea de comprimir no es nueva en absoluto. Recuerdo ya en los tiempos del Spectrum utilizar RLE… Pero es un mercado que ha evolucionado tremendamente rápido.

Probablemente una de las cosas que más me sorprendió fue descubrir los compresores de EXEs.

Todo empezó hace más de 15 años, Fabrice Bellard, un por aquel entonces estudiante de informática francés, crea un programa llamado LZEXE.

LZEXE era lo que después se englobó en la categoría genérica de compresores de ejecutables. A diferencia de los compresores tradicionales, LZEXE no requería expandir el archivo antes de ejecutarlo, sino que incluía un pequeño descompresor, que descomprimía el contenido directamente en memoria, y lo ejecutaba.

Es cierto que lo que hacía LZEXE, ya existía en el enlazador de Microsoft, y como utilidad separada llamada EXEPACK. Pero su relación de compresión era irrisoria.

La operativa de LZEXE no tenía nada que ver con los compresores que podían crear archivos autoextraíbles (SFX). Éstos descomprimían a disco los archivos, mientras que LZEXE lo hacía directamente.

De esta forma, los programas quedaban reducidos de tamaño, y hacía que en ocasiones, cargaran más rápido. Al mismo tiempo que se dificultaba su posterior manipulación por ingeniería inversa. Para el usuario final, todo ocurría de forma transparente.

PKWare adoptó la idea en su PKLite, que ofrecía un ratio de compresión similar a los archivos .ZIP, y su uso se extendió a multitud de software, fuera éste comercial o no. La ristra de herramientas no paró de crecer: Diet, Megalite, UCEXE, Pro-Pack, XPack, AXE, AINEXE, EXELite, Tinyprog, LGLZ, Optilink… A los que luego se les unieron descompresores, identificadores, modificadores, …

Luego llegaron WWPack, y finalmente UPX, que además de excelentes grados de compresión, era gratuito y soportaba diferentes tipos de ejecutables.

Una vez el entorno Windows se popularizó, las cosas siguieron evolucionando a gran velocidad, quedando el antiguo UPX relegado del liderazgo. ASPack primero, luego PECompact, posteriormente nSpack, y por último UPack, fueron poco a poco mejorando los procesos de compresión, para reducir más si cabe, el tamaño de archivo resultante.

En cualquier caso, con el progresivo incremento del espacio disponible en disco, la utilidad de estas herramientas es hoy en día marginal. Se utilizan actualmente para necesidades de ahorro de espacio muy concretas (sistemas embedidos, stubs, …). El nivel de protección anti-hacking que ofrecen, es mejor que el del ejecutable plano, pero queda lejos de productos específicos (Armadillo, ASProtect, …). Como contrapartida, suelen dar algún que otro programa con antivirus mal programados (lentitud al escanearlos, falsos positivos, …).

Personalmente sigo usando UPX para lidiar con aplicaciones DOS; PKLite para Win16; y nSpack o UPack para Win32.

Ya podemos vislumbrar la evolución a medio plazo: Soporte de ejecutables de 64 bits, compresión .NET, mayores relaciones de compresión, …