À retenir
- Un fichier décompilable permet de passer du langage machine au langage humain.
- Le code obtenu n'est jamais identique à 100 % (les commentaires et souvent les noms de variables sont perdus).
- Les langages dits de "haut niveau" (Java, C#, Python) sont plus simples à décompiler que les langages proches du matériel (C, C++).
Se dit d'un programme informatique dont on peut inverser la transformation pour retrouver son code source d'origine. C'est l'équivalent de tenter de retrouver la recette d'un plat cuisiné en analysant les ingrédients et la texture du résultat final.
Étymologie
Composé du préfixe privatif dé- et de l'adjectif compilable (du latin compilare, signifiant piller ou rassembler). Il désigne la capacité technique à effectuer l'opération inverse de la compilation.
Exemples d'usage
- Les fichiers
.classissus du langage Java sont très facilement décompilables. - Les applications Android (fichiers APK) sont souvent décompilables pour vérifier leur sécurité.
- Le bytecode Python (fichiers
.pyc) peut être décompilé pour retrouver les scripts d'origine.
Cas d'usage
Ce concept est central en rétro-ingénierie. Il est utilisé par les experts en cybersécurité pour analyser le fonctionnement d'un virus, ou par des développeurs qui ont perdu le code source original de leur propre logiciel.
Bonnes pratiques
Si vous souhaitez empêcher qu'un logiciel soit trop facilement décompilable (pour protéger un secret industriel), il est recommandé d'utiliser des outils d'obfuscation. Ces derniers rendent le code résultant illisible pour un humain, même s'il reste techniquement décompilable.
Synonymes
Antonymes
Conseil
Gardez à l'esprit que la décompilation ne redonne pas le projet d'origine avec toute sa structure. Si vous débutez, utilisez des outils comme JD-GUI (pour Java) ou dnSpy (pour .NET) pour explorer comment sont faits vos logiciels préférés et apprendre de leur structure.
Questions fréquentes
Est-il possible de tout décompiler ?
Techniquement, presque tout peut être décompilé, mais le résultat est parfois si complexe (proche du langage assembleur) qu'il est quasiment impossible à comprendre pour un humain.
Est-ce légal ?
La décompilation est strictement encadrée par la loi. Elle est généralement autorisée à des fins d'interopérabilité ou de sécurité, mais peut être interdite par le contrat de licence (EULA) d'un logiciel commercial.