À retenir
- C'est l'outil de l'ingénierie inverse (reverse engineering).
- Il permet de comprendre comment fonctionne un logiciel fermé.
- Le code source résultant est une approximation, souvent plus difficile à lire que l'original.
Un décompilateur est un outil informatique qui réalise l'opération inverse d'un compilateur : il transforme un programme déjà traduit pour la machine (langage binaire ou bytecode) en un langage compréhensible par un être humain (code source). On peut comparer cela à un critique culinaire qui, en goûtant un plat fini, essaierait d'en déduire la recette et les étapes de préparation.
Étymologie
Formé du préfixe dé- (exprimant l'inversion ou la suppression) et du mot compilateur (du latin compilare, signifiant « piller » puis « assembler »). Ce terme est apparu avec le besoin de l'ingénierie inverse pour analyser des logiciels dont les plans originaux n'étaient pas disponibles.
Exemples d'usage
- JD-GUI ou Fernflower : utilisés pour transformer des fichiers
.classJava en code source Java lisible. - dnSpy ou ILSpy : outils très populaires pour explorer et décompiler des applications développées en .NET (C#, VB.NET).
- Ghidra ou IDA Pro : logiciels avancés utilisés en cybersécurité pour analyser des programmes complexes (C, C++) en reconstruisant leur logique.
Cas d'usage
Le décompilateur intervient principalement en cybersécurité pour analyser le fonctionnement d'un virus (malware), lors d'audits de sécurité pour vérifier l'absence de failles, ou en maintenance informatique pour récupérer la logique d'un vieux logiciel dont le code source original a été perdu.
Bonnes pratiques
Il faut garder à l'esprit que le code produit par un décompilateur est rarement parfait : les noms de variables originaux et les commentaires sont généralement perdus. Il ne faut pas utiliser ces outils pour copier illégalement des logiciels protégés par le droit d'auteur, mais privilégier leur usage pour l'apprentissage, l'interopérabilité ou la sécurité.
Synonymes
Antonymes
Conseil
Si vous débutez, essayez de décompiler de petits programmes que vous avez vous-même écrits en Java ou en C#. Comparez votre code original avec le résultat du décompilateur : c'est un excellent moyen de comprendre comment l'ordinateur interprète réellement vos instructions.
Questions fréquentes
Le code décompilé est-il le même que celui écrit par le développeur ?
Non. La logique mathématique est identique, mais les noms des variables (remplacés par des noms génériques comme 'var1') et tous les commentaires explicatifs disparaissent lors de la compilation.
Peut-on décompiler n'importe quel logiciel ?
Techniquement oui, mais c'est beaucoup plus facile pour des langages comme Java ou C# que pour du C ou du C++, où le résultat est souvent très complexe à interpréter.
Est-ce que décompiler est illégal ?
L'usage est réglementé par les licences d'utilisation (CLUF) et les lois locales. C'est souvent toléré pour des raisons de sécurité ou de compatibilité entre systèmes, mais interdit pour le piratage.