- UPX
-
UPX Dernière version 3.04 (27 septembre 2009) [+/-] Environnements Multiplate-forme Type Compression de données Licence GNU GPL Site web upx.sourceforge.net modifier UPX (sigle de l'anglais Ultimate Packer for eXecutables) est un logiciel libre permettant de compresser des fichiers exécutables. C’est un programme gratuit, distribué sous licence GNU GPL.
Le programme permet de compresser un exécutable, utilisant la technologie de compression sans pertes UCL, de sorte que le programme une fois lancé se décompresse lui-même. La version 3.00 a introduit le support de la compression LZMA. C’est l’un des logiciels les plus utilisés de sa catégorie.
Sommaire
Compactage d’exécutables
Ce processus permet de compresser un fichier exécutable, capable quand il est lancé de se décompresser lui-même. Il n’y a pour l’utilisateur aucune différence entre le programme compressé et l’original.
Cette technologie permet de se passer, pour les programmes, de méthodes plus générales mais nécessitant l’utilisation de bibliothèques et de logiciels spécialisés et/ou payants, comme gzip, zip ou bzip2.
Sur des programmes imposants, la technologie de compactage permet de réduire le temps de téléchargement si le programme est diffusé via Internet.
UPX lui-même permet la décompression d'un exécutable compressé.
La technologie UCL
La technologie UCL est une bibliothèque de compression spécialisée, dérivée de la technologie propriétaire NRV (Not Really Vanished). La bibliothèque UCL a été écrite en ANSI C.
Les programmes compressés avec UPX sont dotés, dans l’amorce (stub) de l’exécutable, d’une partie du code de la bibliothèque UCL, permettant au programme de se décompresser. Cette amorce tient sur moins de 200 octets.
UPX utilisait autrefois la compression LZO (Lempel-Ziv-Oberhumer, le logiciel s’appelait alors lzop), dérivée de la méthode LZ (Lempel-Ziv) et de la méthode LZW (Lempel-Ziv-Welch), moins performante, dont les concepteurs se sont inspirés pour adapter NRV. UCL est disponible sous licence GPL et licence UPX.
Formats supportés
- arm/pe
- atari/tos
- djgpp2/coff
- dos/com
- dos/exe
- dos/sys
- linux/i386
- linux elf/amd64
- linux elf/ppc32
- mach/ppc32
- ps1/exe
- rtm32/pe
- tmt/adam
- vmlinuz/386
- watcom/le
- win32/pe
Limitations techniques
Les programmes compressés avec UPX peuvent s’extraire dans un fichier temporaire, ce qui fait que :
- les permissions spéciales, telles que le suid, sont ignorées ;
- les arguments passés aux programmes peuvent être altérés ;
- les applications ne pourront pas partager des segments communs.
Autrement et plus généralement, ils se chargent en mémoire (in-place) :
- Les ordinateurs ne possédant que peu de mémoire vive (RAM) peuvent être ralentis ;
- Certains programmes peuvent être moins stables ;
Étant donné la modification du code effectuée par UPX :
- On ne peut pas identifier facilement les dépendances d’un programme compressé ;
- Les applications compressées peuvent démarrer plus lentement (si le processeur est lent) ou plus rapidement (exécution depuis un partage réseau, une clef USB, un fichier du disque dur non caché…) ;
Les programmes compressés par UPX sont tous facilement décompressés par les logiciels antivirus. Toutefois, certains virus sont compressés avec des versions modifiées d’UPX ce qui complique légèrement la tâche des logiciels de protection.
Voir aussi
Article connexe
Liens externes
- (en) Site officiel
- (en) Accueil du projet UPX sur SourceForge.net
- (en) Le projet lzop
- (en) Une comparaisons entre UPX et d’autres programmes similaires
- (en) La licence UPX
- (en) La compression UCL
- (en) La compression LZO
Catégories :- Logiciel de compression de données
- Logiciel libre sous licence GPL
Wikimedia Foundation. 2010.