|
UPX (Ultimate Packer for eXecutables) es un programa realmente increible.
Se puede descargar y utilizar libremente, en versiones para Windows y Linux y es capaz de comprimir los ficheros ejecutables de una enorme variedad de plataformas, incluyendo EXE y DLL de Windows, varios formatos de Linux, DOS, MacOS, Windows CE... Todavía no comprime los ejecutables de .NET.
Esto de comprimir los ejecutables tuvo su importancia hace unos años (con programas como el lzexe, de 1989 ), cuando los discos duros eran caros y los dispositivos de almacenamiento extraibles (disquetes principalmente) tenían poca capacidad comparados con los dispositivos flash o soportes ópticos de hoy en día.
Sin embargo, vuelve a tener su importancia, ya que le estamos cogiendo el gusto a llevar en nuestras memorias flash (en formato USB o similar) o los pequeños discos SSD de los dispositivos ultraportátiles todo lo que podamos. Arañar unos cuantos "megas" vuelve ser interesante.
Utilizando UPX sobre un ejecutable, éste comprime parte del código y los datos comprendidos en el fichero, creando una versión modificada del ejecutable y normalmente de menor tamaño.
Para que el ejecutable pueda seguir funcionando de la misma manera, al manipularlo con UPX se incluye en él -de manera totalmente transparente para nosotros y para los usuarios- una porción de código descompresor, tal que cuando el ejecutable se ejecuta -valga la redundancia- el sistema operativo no carga en memoria el código y los datos comprimidos, sino que carga ese código descompresor y le pasa el control. Ése código descompresor es entonces el que lee el código y los datos comprimidos, los reconstruye en memoria muy rápidamente y pasa entonces el control al código descomprimido, que será idéntico al que había en el fichero ejecutable antes de manipularlo.
La descompresión es tan rápida en las pruebas que hemos hecho que para un usuario es prácticamente imposible notar el tiempo extra que necesita la descompresión.
La página de UPX: upx.sourceforge.net
|