UPX ( Ultimate Packer for eXecutables ) es un empaquetador de ejecutables gratuito y de código abierto que admite varios formatos de archivo de diferentes sistemas operativos. [ 3 ] [ 4 ]
Compresión
UPX utiliza un algoritmo de compresión de datos llamado UCL, [ 5 ] que es una implementación de código abierto de partes del algoritmo propietario NRV ( Not Really Vanished ) [ 6 ] . [ 2 ]
UCL se ha diseñado para ser lo suficientemente simple como para que un descompresor pueda implementarse en tan solo unos 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 con UPX generalmente no requiere memoria adicional.
UPX (desde la versión beta 2.90) puede usar LZMA en la mayoría de las plataformas; sin embargo, esto está deshabilitado de forma predeterminada para 16 bits debido a la lenta velocidad de descompresión en computadoras más antiguas (use --lzmapara forzarlo).
A partir de la versión 3.91, UPX también admite archivos PE de 64 bits (x64) en la plataforma Windows . [ 7 ] Esta característica se declara actualmente como experimental .
Descompresión
UPX admite dos mecanismos para la descompresión: una técnica in situ y la extracción a un archivo temporal .
La técnica de descompresión in situ, que descomprime el ejecutable en 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 se mantiene correcto.
El resto utiliza la extracción a un archivo temporal. Este procedimiento implica una sobrecarga adicional y otras desventajas; sin embargo, permite comprimir cualquier formato de archivo ejecutable. El método de extracción a un archivo temporal tiene varias desventajas:
- Los permisos especiales, como suid, se ignoran .
argv[0]no tendrá sentido.- Varias instancias en ejecución del mismo programa no pueden compartir segmentos comunes.
Los programas antivirus suelen detectar y descomprimir los paquetes UPX sin modificar . UPX también cuenta con una función integrada para descomprimir los archivos ejecutables sin modificar que contiene.
Formatos compatibles
UPX admite los siguientes formatos: [ 8 ]
- Archivos ejecutables portátiles (PE, EXE y DLL ):
- Archivos ejecutables COFF , utilizados por DJGPP2
- Formato a.out , BSD i386 (eliminado)
- Archivos 8086/DOS sin procesar: [ nb 1 ]
- Watcom / LE (utilizado por DOS4G , PMODE/W, DOS32A y CauseWay )
- TMT/adam (generado por el compilador TMT Pascal)
- Atari/TOS
- Núcleo de Linux , i386, x86-64 y ARM
- Formato ejecutable y enlazable de Linux , i386, x86-64 , ARM , PowerPC , MIPS
- PlayStation 1 /EXE (MIPS R3000)
- Darwin Mach-O , ppc32, i386 y x86-64
UPX actualmente no admite archivos PE que contengan código CIL destinado a ejecutarse en .NET Framework .
Notas
- 1 2 3 Para los objetivos DOS, UPX admite una opción especial
-8086para forzar al descompresor integrado a ser compatible con los procesadores 8088 / 8086 , de modo que los archivos comprimidos puedan ejecutarse y descomprimirse incluso en los primeros PC que ejecutan DOS. - ↑ La función para comprimir archivos .COM de DOS también puede utilizarse para comprimir otros archivos ejecutables binarios. Se sabe que algunos archivos del núcleo de FreeDOS y EDR-DOS se pueden comprimir mediante UPX de esta manera.
- ↑ La función para comprimir archivos .COM de DOS también puede utilizarse para comprimir archivos de datos binarios no ejecutables, siempre que el controlador o la aplicación que los utiliza se haya optimizado para detectar archivos comprimidos con UPX y acceder al descompresor integrado en el archivo. Se sabe que FreeDOS utiliza esta función para archivos .CPX y archivos de fuentes .CPI comprimidos con UPX.
Referencias
- ↑ "Acuerdo de licencia UPX" . Archivado del original el 12 de marzo de 2016. Consultado el 14 de septiembre de 2016 .
- 1 2 "The UPX Hacker's Guide" . GitHub . 19 de febrero de 2022. Archivado del original el 14 de mayo de 2022. Recuperado el 14 de septiembre de 2016 .
- ↑ Marak, Victor (2015). Fundamentos del análisis de malware en Windows . Packt Publishing. pág. 188. ISBN 978-1-78528-151-8Archivado del original el 14 de mayo de 2022. Consultado el 22 de noviembre de 2015. Los empaquetadores como Ultimate Packer for Executables (UPX) son más bien compresores de ejecutables ,
ya que la reducción de tamaño es el objetivo principal, no la ofuscación, que puede ser un efecto secundario...
- ↑ Blunden, Bill (2013). The Rootkit Arsenal (Segunda edición). Jones & Bartlett Learning. págs. 353–355 . ISBN 978-1-4496-2636-5Archivado del original el 14 de mayo de 2022. Recuperado el 22 de noviembre de 2015. Uno de los empaquetadores de ejecutables más prolíficos es UPX (Ultimate Packer for executables) .
No solo maneja docenas de formatos de ejecutables diferentes, sino que su código fuente también está disponible en línea.
- ↑ Markus Oberhumer. "Biblioteca de compresión de datos UCL" . oberhumer.com . Archivado del original el 28 de junio de 2024. Consultado el 11 de enero de 2022 .
- ↑ Markus Oberhumer. "Biblioteca de compresión NRV" .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Noticias de UPX" . Archivado del original el 4 de enero de 2018. Consultado el 14 de septiembre de 2016 .
- ↑ – Manual de comandos generales de Linux de ManKier.com
- ↑ "dos extensor rtm32 - ¿formato de archivo del stub? \ VOGONS" . Archivado del original el 11/01/2022 . Recuperado el 11/01/2022 .
Enlaces externos
- Software gratuito de compresión de datos
- Software libre programado en C++
- Empaquetadores EXE
- Software de 1998
- Software programado en lenguaje ensamblador
- Software que utiliza la Licencia Pública General de GNU.