bzexe sur Ubuntu : compression et auto-exécution

Présentation générale de l’outil

Sous les systèmes GNU/Linux, l’utilitaire bzexe permet de compacter des exécutables via l’algorithme bzip2 tout en préservant leur capacité à être lancés directement, sans aucune étape préalable de décompression manuelle par l’utilisateur. Cet article détaille le fonctionnement de cet outil méconnu, depuis la mise en place d’un environnement d’expérimentation jusqu’à l’analyse structurelle des fichiers générés et l’étude des mécanismes de restauration.

1. Installation des prérequis et création d’un script de test

Avant de manipuler l’utilitaire, installez le paquet bzip2 (qui embarque bzexe) ainsi que la commande file pour inspecter la nature des binaires manipulés.

Installation des paquets bzip2 et file avec apt-get

Créez ensuite un dossier isolé dédié à nos essais via la commande mkdir -p ~/bzexe_demo.

Création du répertoire de travail pour les tests

Afin d’observer clairement l’impact de la compression, générez un script shell nommé demo_app.sh produisant un volume suffisant de texte pseudo-aléatoire encodé en base64.

Génération du script bash de démonstration contenant des données volumineuses

Attribuez les droits d’exécution requis au script nouvellement créé à l’aide de l’utilitaire chmod +x.

Attribution des autorisations d’exécution avec chmod

Assurez-vous du bon fonctionnement initial du programme en exécutant le script et en limitant l’affichage aux trois premières lignes.

Vérification du fonctionnement initial du script via head

2. Compression d’un binaire à l’aide de bzexe

Relevez d’abord l’empreinte disque et les métadonnées de notre exécutable original avec ls -lh ~/bzexe_demo/demo_app.sh.

Affichage de la taille initiale du fichier avant traitement

Lancez la compression en invoquant bzexe ~/bzexe_demo/demo_app.sh. Cette opération intègre directement un mécanisme d’auto-extraction au sein du binaire. L’exécution s’opère silencieusement et remplace le fichier source sur place.

Exécution de la commande bzexe sur le script cible

Listez à présent le contenu du répertoire à l’aide de ls -lh ~/bzexe_demo/ pour observer les modifications apportées par le processus.
Le programme original se trouve désormais sauvegardé avec un suffixe tilde (demo_app.sh~), tandis que le nouvel exécutable demo_app.sh intègre l’en-tête de décompression autonome.

Contrôle de l’apparition de l’archive et de la sauvegarde

3. Analyse de l’architecture du fichier compressé et exécution

Examinez la structure interne du fichier résultant en lançant file ~/bzexe_demo/demo_app.sh.
L’analyse révèle que l’exécutable est devenu un POSIX shell script executable hybride : il encapsule à la fois une routine de décompression automatique en shell et la charge utile compressée.

Inspection du type MIME et de la structure du binaire compressé

À titre de comparaison, vérifiez la nature du fichier de secours en saisissant file ~/bzexe_demo/demo_app.sh~.
La sortie confirme que la sauvegarde conserve son statut d’origine, à savoir un script texte Bourne-Again shell script, ASCII text executable parfaitement intact.

Vérification du format du script de sauvegarde original

Validez la capacité du binaire compacté à s’exécuter de façon transparente en lançant ~/bzexe_demo/demo_app.sh | head -n 3.
Le wrapper extrait temporairement les données au moment de l’appel système et restitue une sortie rigoureusement identique à la version native.

Validation de l’exécution directe du script compressé

4. Tentative de restauration avec l’option bzexe -d et nettoyage

Pour tenter de rétablir l’exécutable dans sa forme initiale, appliquez l’option de décompression via bzexe -d ~/bzexe_demo/demo_app.sh.
Dans ce cas précis, le programme renvoie une notification indiquant que le format interne n’a pas été modifié.

Tentative d’inversion du processus avec l’option -d

Contrôlez l’état et le volume du fichier cible au moyen de ls -lh ~/bzexe_demo/demo_app.sh.
La taille restant figée à 788 octets, l’exécutable demeure sous sa forme encapsulée sans retour à la volumétrie initiale.

Contrôle du volume du fichier après la tentative de décompression

Confirmez à nouveau la signature du fichier avec file ~/bzexe_demo/demo_app.sh.
Le rapport confirme que le fichier conserve son statut de wrapper POSIX shell script executable.

Seconde vérification du format confirmant le maintien du wrapper

Une fois l’expérimentation terminée, supprimez l’espace de démonstration en exécutant rm -rf ~/bzexe_demo.

Suppression intégrale du répertoire de test

La commande bzexe constitue une solution pratique pour réduire l’empreinte disque de programmes peu sollicités tout en conservant une exécution transparente. Elle s’avère particulièrement pertinente sur des environnements contraints où le gain d’espace prime sans vouloir sacrifier l’immédiateté d’usage des binaires.