Accueil🇫🇷Chercher

UPX

UPX (sigle de l'anglais Ultimate Packer for eXecutables) est un logiciel libre permettant de compresser des fichiers exécutables.

Le programme utilise la technologie de compression sans perte UCL, de sorte qu'une fois lancé, il se décompresse lui-même. La version 3.00 a introduit le support de la compression LZMA.

C’est un programme gratuit, distribué sous licence GNU GPL, et l’un des plus utilisés de sa catégorie.

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

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 CPU 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 qui intègres des composants de bas niveau peuvent ĂŞtre moins stables (principalement sur des VM) ;

É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, bien que de faux-positifs d'analyse peuvent être retrournés parfois, du fait que certains antivirus considèrent les executables compréssé comme potentiellement malicieux, car vu comme une tentative de "cacher" du code binaire directement lisible.

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.

Notes et références

  1. « Release 4.0.2 », (consulté le )

Annexes

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.