Décompilable

Définition, exemples et bonnes pratiques

À 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 .class issus 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

réversible analysable par rétro-ingénierie

Antonymes

indécompilable obfusqué

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.