Shell Script Compiler, abrégé en SHC, est un compilateur de scripts shell pour les systèmes d'exploitation de type Unix écrit en langage C. SHC encode et chiffre les scripts shell en fichiers binaires exécutables. La compilation des scripts shell en fichiers binaires offre une protection contre les modifications accidentelles et l'altération du code source, et permet de masquer ce dernier.
Fonctionnement shc prend un script shell spécifié en ligne de commande par l'option -f et génère un code source C de ce script avec l'ajout d'un chiffrement. Ce code source est ensuite compilé et lié pour produire un exécutable binaire. Le processus se déroule en deux étapes : premièrement, un fichier filename.xc est créé à partir du script shell filename. Deuxièmement, ce fichier est compilé avec cc -$CFLAGS filename.xc afin de créer le binaire à partir du code source C, en utilisant le compilateur C par défaut.
Le binaire compilé dépendra toujours du shell spécifié dans le shebang (par exemple #!/bin/sh), shc ne crée donc pas de binaires complètement indépendants.
shc n'est pas un compilateur comme les compilateurs C, à la place, il encode et chiffre un script shell, puis génère du code source C avec une gestion de l'expiration. Il utilise ensuite le compilateur C du système pour compiler le script source et créer un binaire allégé qui se comporte exactement comme le script original. À l'exécution, le binaire compilé déchiffre et exécute le code avec l'option -c du shell.
Versions +Versions disponiblesVersiondate de sortieChangementsshc-4.0.3 juillet 2019 Amélioration de l'option -H (masquer les arguments des commandes dans ps et la ligne de commande) Suppression de l'option -s (fonctionnalité expérimentale ne fonctionnant pas comme prévu)shc-4.0.2 juillet 2019 Correction d'une faute de frappe Correction du déréférencement de pointeur NULL dans la chaîne shllshc-4.0.120 novembre 2018Ajout de la variable d'environnement LDFLAGSshc-4.0.017 novembre 2018 Ajout de l'option -H pour une sécurité renforcée sans privilèges root. Elle protège contre les extractions de données, les injections de code, l'exécution de `cat /proc/pid/cmdline`, ptrace, etc. (fonctionne uniquement avec les scripts Bourne shell (sh) sans paramètre). Ajout de l'option -s pour forcer l'exécution sur un seul processus lors du renforcement de la sécurité (nécessite l'option -H). (Fonctionne uniquement avec les scripts Bourne shell (sh) sans paramètre) Support du shc-3.9.812 novembre 2018Ajout de l'option setuid -Sshc-3.9.712 novembre 2018Correction du problème de l'option -U qui ne fonctionne pas sous macOS (10.13.6 High Sierra)shc-3.9.65 juin 2017Correction de shc provoquant une sortie exec (null) et interrompant le traitement des scripts bash.shc-3.9.531 mai 2017Correction de l'exécution du binaire compilé shc dans un shell différentshc-3.9.417 mai 2017Correction d'un problème d'exécutable ne fonctionnant pas sous Debian (bogue Debian n° 861180)shc-3.9.331 juillet 2016 Prise en charge de zsh Correction du problème de fonctionnement de shc avec ksh 93u+shc-3.9.225 août 2015Ajout de la prise en charge de BusyBox avec un correctif (option -B pour compiler pour Busybox).shc-3.9.13 avril 2015L'option -T a été renommée -U et sa logique a été inversée.shc-3.9.02 avril 2015Ajout d'une option de fichier de sortie avec [-o nom_de_fichier] et correction d'un bug lors de l'installation manuelle (échec de l'installation manuelle).shc-3.8.94 décembre 2013Correction d'un bug persistant qui empêchait de masquer le code source.shc-3.8.710 février 2010Bug sur les systèmes 64 bits avec dates d'expiration.shc-3.8.510 février 2010Correction des problèmes liés à la fonction untraceable() sur FreeBSD.shc-3.8.310 juillet 2006Correction d'un bug : « vfork » échoue sur les systèmes multiprocesseurs.shc-3.8.26 juillet 2006 Correction d'un bug : « rlax » était utilisé après le chiffrement. L'autorisation de lecture du script.x l'expose à un désassemblage. L'autorisation de lecture pour le groupe et les autres utilisateurs est désormais supprimée par défaut.shc-3.728 juin 2005 Suppression de toutes les chaînes de caractères dans le script compilé. Amélioration des résultats du programme et des messages d'erreur. L'option -m permet de définir le message d'expiration *complet*. Page de manuel mise à jour shc.1. Corriger l'erreur de $0 sur ksh.shc-3.616 juin 2005Deux nouvelles options :
-D active les appels d'exécution de débogage. -T désactiver le traçage.shc-3.419 juin 2003Résolution du problème de « mauvais alignement » sur AIX et autres systèmes. Là où cela existe, utilisez /proc/<pid>/as dans untraceable.shc-3.321 avril 2003Empêche de retracer le processus.shc-3.25 août 2002Trouve un ancien pclose qui doit être fclose.shc-3.15 août 2002Correction d'un comportement anormal sur les scripts comportant une option en première ligne égale à « fin des options » (c.-à-d. #!/bin/sh -- ) Suppression de l'avertissement GCC « le type de retour de `main' n'est pas `int' ».shc-2.45 août 2002
Alternatives
shellcrypt
Références
Liens externes
github.com
Catégorie:Logiciel pour Unix