Shell Script Compiler
Pour les articles homonymes, voir SHC.
| Créateur | Francisco Javier Rosales García |
|---|---|
| Développé par |
Francisco Javier Rosales García Md Jahidul Hamid |
| Première version | 2.4 ()[1] |
| Dernière version | 4.0.3 ()[2] |
| Dépôt | www.datsi.fi.upm.es/~frosal/sources et github.com/neurobin/shc |
| État du projet | à l'arrêt |
| Écrit en | C |
| Supporte les langages | ash, bash, bsh, csh, dash, ksh, Perl, Rsh, rc (en), Tcsh, tsh (en), zsh |
| Environnement | Unix, Linux, macOS |
| Type |
Compilateur Code impénétrable |
| Licence | Licence publique générale GNU version 3 |
| Site web | neurobin.org/projects/softwares/unix/shc |
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[3].
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[3].
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[4].
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[4].
Versions
| Version | date de sortie | Changements |
|---|---|---|
| shc-4.0.3 | 1er juillet 2019 |
|
| shc-4.0.2 | 1er juillet 2019 |
|
| shc-4.0.1 | 20 novembre 2018 | Ajout de la variable d'environnement LDFLAGS |
| shc-4.0.0 | 17 novembre 2018 |
|
| shc-3.9.8 | 12 novembre 2018 | Ajout de l'option setuid -S |
| shc-3.9.7 | 12 novembre 2018 | Correction du problème de l'option -U qui ne fonctionne pas sous macOS (10.13.6 High Sierra) |
| shc-3.9.6 | 5 juin 2017 | Correction de shc provoquant une sortie exec (null) et interrompant le traitement des scripts bash. |
| shc-3.9.5 | 31 mai 2017 | Correction de l'exécution du binaire compilé shc dans un shell différent |
| shc-3.9.4 | 17 mai 2017 | Correction d'un problème d'exécutable ne fonctionnant pas sous Debian (bogue Debian n° 861180) |
| shc-3.9.3 | 31 juillet 2016 |
|
| shc-3.9.2 | 25 août 2015 | Ajout de la prise en charge de BusyBox avec un correctif (option -B pour compiler pour Busybox[4]). |
| shc-3.9.1 | 3 avril 2015 | L'option -T a été renommée -U et sa logique a été inversée. |
| shc-3.9.0 | 2 avril 2015 | Ajout 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.9 | 4 décembre 2013 | Correction d'un bug persistant qui empêchait de masquer le code source. |
| shc-3.8.7 | 10 février 2010 | Bug sur les systèmes 64 bits avec dates d'expiration. |
| shc-3.8.5 | 10 février 2010 | Correction des problèmes liés à la fonction untraceable() sur FreeBSD. |
| shc-3.8.3 | 10 juillet 2006 | Correction d'un bug : « vfork » échoue sur les systèmes multiprocesseurs. |
| shc-3.8.2 | 6 juillet 2006 |
|
| shc-3.7 | 28 juin 2005 |
|
| shc-3.6 | 16 juin 2005 | Deux nouvelles options :
|
| shc-3.4 | 19 juin 2003 | Ré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.3 | 21 avril 2003 | Empêche de retracer le processus. |
| shc-3.2 | 5 août 2002 | Trouve un ancien pclose qui doit être fclose. |
| shc-3.1 | 5 août 2002 | Correction 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.4 | 5 août 2002 |
Alternatives
Références
- ↑ « https://www.datsi.fi.upm.es/~frosal/sources/shc-2.4.tgz », (consulté le )
- ↑ « Release 4.0.3 », (consulté le )
- Günther, « SHC Shell Compiler », www.linux-magazine.com, Linux Magazine (consulté le )
- « Man page of shc », GitHub (consulté le )
- ↑ Francisco Javier Rosales García, « Index of /~frosal/sources », www.datsi.fi.upm.es, Université polytechnique de Madrid (consulté le )
- ↑ Jahidul Hamid, « neurobin/shc/ChangeLog », GitHub (consulté le )
Liens externes
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.