upx

  • Posted on: 19 March 2024
  • By: ReYDeS

UPX es un empaquetador ejecutable gratuito, seguro, portátil, ampliable, y de alto rendimiento, para varios formatos ejecutables.

UPX es un compresor avanzado de archivos ejecutables. UPX típicamente reducirá el tamaño de los programas y DLL entre un 50% y un 70%, reduciendo así el espacio en disco, tiempos de carga de la red, tiempos de descarga, y otros costos de distribución y almacenamiento.

Los programas y librerías comprimidos por UPX son completamente autónomos, y se ejecutan exactamente como antes, sin penalización en tiempo de ejecución ni memoria para la mayoría de los formatos compatibles.

UPX soporta un número de diferentes formatos ejecutables, incluyendo programas y DLL Windows, aplicaciones macOS, y ejecutables Linux.

UPX es software libre distribuido bajo los términos de la Licencia Pública General GNU. El código fuente completo está disponible.

UPX puede ser distribuido y utilizado libremente, incluso con aplicaciones comerciales.

Descripción General

Los puntos fuertes de UPX en pocas palabras:

  • Seguro: como UPX está documentado como Fuente Abierta desde hace muchos años, cualquier software relevante de Seguridad/Antivirus, puede mirar dentro de las aplicaciones comprimidas UPX para verificarlas.
  • Excelente relación de compresión: típicamente comprime mejor comparado con Zip, ¡Utilizar UPX para disminuir el tamaño de su distribución!
  • Descompresión muy rápida: más de 500 MB/s en cualquier máquina razonablemente moderna.
  • Sin sobrecarga de memoria para los ejecutables comprimidos, debido a la descompresión en el lugar
  • Fiable: se puede listar, probar, y descomprimir los ejecutables. Además se mantiene internamente un “checksum”, tanto del archivo comprimido como del descomprimido.
  • Universal: UPX puede empaquetar varios formatos ejecutables, incluidos programas y DLL Windows, aplicaciones macOS y ejecutables Linux.
  • Portátil: UPX está escrito en C++ portátil endian neutral
  • Extensible: debido al diseño de clases es muy fácil agregar nuevos formatos ejecutables o nuevos algoritmos para compresión
  • Libre: UPX se distribuye con el código fuente completo según los términos de la Licencia Pública General GNU v2+; ya sea bajo GPLv2+ puro o (a su elección) bajo GPLv+2 con excepciones y restricciones especiales para garantizar el uso gratuito de todos los binarios, incluidos los programas comerciales, como se indica en el Acuerdo de licencia UPX.

Al ejecutar la herramienta con la opción “-h” se muestra una ayuda bastante detallada.

$ upx -h

La definición para el nivel de comprensión es dictado por “-1” para una compresión más veloz, y un “-9” para una mejor compresión.

$ upx -9 /tmp/rv1.exe

Se resalta el hecho el tamaño del archivo disminuyó. Así mismo al ejecutar el comando “file” sobre el archivo se presenta el texto “UPX compressed.”

Al ejecutar upx con la opción “-t” se prueba el archivo comprimido.

$ upx -t /tmp/rv1.exe

La opción “-d” descomprime el archivo.

$ upx -d /tmp/rv1.exe

También es factible utilizar la opción “-l”, para listar el archivo comprimido.

$ upx -l /tmp/rv1.exe

upx incluye también diversas opciones para afinar la compresión, como también opciones específicas para watcom/le, win32/pe, win64/pe, rtm32/pe, y arm/pe, linux/elf.

Probablemente ahora se comprende la razón del nombre UPX, "Ultimate Packer for eXecutables".

Fuentes:

https://upx.github.io/
https://github.com/upx/upx

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense