Concept

Décompilateur

Résumé
thumb|Exemple d'écran d'un décompilateur Java Un décompilateur est un outil servant à reconstituer, partiellement ou totalement, le code source d’un logiciel à partir d’un programme exécutable alors dans un format binaire. La décompilation est une technique de rétro-ingénierie ou d'ingénierie inverse. Elle peut servir au portage et à l'adaptation d'une application dont le code source n'est pas disponible, à la réalisation de l'interopérabilité, à la traduction, à l'analyse et la vérification du fonctionnement d'un programme, et encore au débogage du programme. Le principe du décompilateur est donc d'étudier ou tester le fonctionnement de ce logiciel afin de déterminer les idées et principes qui sont à la base de n'importe quel élément du logiciel lorsqu'on effectue toute opération de chargement, d'affichage, d'exécution, de transmission ou de stockage du logiciel. Les logiciels dont le code source est disponible ne nécessitent pas l'utilisation d'un décompilateur. La décompilation est un problème difficile, et d'un strict point de vue théorique, impossible. La décompilation correspond à la fonction réciproque de la fonction de compilation (généralement) d'un langage de haut niveau vers un langage machine. Le problème de la décompilation est de pouvoir associer un code machine à une forme sémantiquement équivalente dans un langage de haut niveau. L'impossibilité mathématique du problème dépend du langage choisi. Dans le langage assembleur des machines x86, on dispose d'une instruction permettant de décider si un dépassement de tampon s'est produit. En langage C dans lequel on a retiré les appels assembleur, il est impossible d'avoir une instruction équivalente. Il faudrait alors écrire un code spécifique mais cela revient alors à changer le fonctionnement du programme. Pour la plupart des langages de programmation, il est cependant possible de retrouver un certain nombre d'informations sur le code source initial à partir du code compilé. La décompilation est un outil assisté d'aide à la rétro-ingénierie.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.