UPX - UPX

UPX
Ultimate Packer para eXecutebles.png
Versión inicial 26 de mayo de 1998 ; Hace 22 años  ( 26 de mayo de 1998 )
Lanzamiento estable
3,96 / 23 de enero de 2020 ; hace 11 meses  ( 2020-01-23 )
Repositorio Edita esto en Wikidata
Escrito en C ++ , ensamblado
Sistema operativo Microsoft Windows , Linux , macOS , DOS , Atari TOS
Plataforma i386 , MIPS , AMD64 , ARM , PowerPC , m68k
Disponible en Inglés
Tipo Compresión ejecutable
Licencia GPL con excepción de los ejecutables comprimidos, propiedad del algoritmo de compresión en distribuciones binarias
Sitio web upx .github .io

UPX ( Ultimate Packer for Executables ) es un empaquetador ejecutable de código abierto que admite varios formatos de archivo de diferentes sistemas operativos.

Compresión

UPX utiliza un algoritmo de compresión de datos llamado UCL, que es una implementación de código abierto de partes del algoritmo patentado NRV ( Not Really Vanished ).

UCL ha sido diseñado para ser lo suficientemente simple como para que un descompresor se pueda implementar en solo unos pocos cientos de bytes de código. UCL no requiere que se asigne memoria adicional para la descompresión, una ventaja considerable que significa que un ejecutable empaquetado UPX generalmente no requiere memoria adicional.

UPX (desde 2.90 beta) puede usar LZMA en la mayoría de las plataformas; sin embargo, esto está deshabilitado de manera predeterminada para 16 bits debido a la baja velocidad de descompresión en computadoras más antiguas (se usa --lzma para forzarlo).

A partir de la versión 3.91, UPX también admite archivos ejecutables de 64 bits (x64) en la plataforma Windows . Actualmente, esta función está declarada como experimental .

Descompresión

UPX admite dos mecanismos de descompresión: una técnica in situ y extracción a un archivo temporal .

La técnica in situ, que descomprime el ejecutable en la memoria, no es posible en todas las plataformas compatibles. Tiene la ventaja de ser más eficiente en términos de memoria y de que el entorno configurado por el sistema operativo sigue siendo el correcto.

El resto usa extracción para archivo temporal. Este procedimiento implica gastos generales adicionales y otras desventajas; sin embargo, permite empaquetar cualquier formato de archivo ejecutable. El método de extracción a archivo temporal tiene varias desventajas:

  • Se ignoran los permisos especiales, como suid .
  • argv[0] no será significativo.
  • Varias instancias en ejecución del ejecutable no pueden compartir segmentos comunes.

Los escáneres de software antivirus a menudo detectan y descomprimen el empaquetado UPX sin modificar . UPX también tiene una función incorporada para descomprimir ejecutables no modificados empaquetados consigo mismo.

Formatos admitidos

UPX admite los siguientes formatos:

UPX actualmente no admite archivos PE que contengan código CIL destinado a ejecutarse en .NET Framework .

Notas

Referencias

enlaces externos