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.
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.
Explore le langage d'assemblage MIPS, couvrant les appels de fonctions, la gestion de la mémoire et les structures de données, y compris les fonctions récursives, les constructions de programmation, les tableaux et les listes liées.
A translator or programming language processor is a generic term that can refer to a compiler, assembler, or interpreter—anything that converts code from one computer language into another. These include translations between high-level and human-readable computer languages such as C++ and Java, intermediate-level languages such as Java bytecode, low-level languages such as the assembly language and machine code, and between similar levels of language on different computing platforms, as well as from any of these to any other of these.
Le .NET Framework (abr. NetFx) est un cadriciel (framework) pouvant être utilisé par un système d'exploitation Microsoft Windows et Microsoft Windows Mobile depuis la version 5 (.NET Compact Framework). Une version légère et limitée fournie avec un moteur d'exécution fonctionnant à l'intérieur d'un navigateur ou d'un périphérique mobile est disponible sous le nom de Silverlight. La version 3.0 du framework est intégrée à Windows Vista et à la plupart des versions de Windows Server 2008 ou téléchargeable depuis le site de l'éditeur Microsoft.
Un désassembleur est un programme informatique qui traduit du langage machine (un fichier exécutable) en langage assembleur (aussi désigné sous le nom de langage « bas niveau »). Cette opération, le désassemblage, est l'inverse de celle effectuée par un programme assembleur, l'assemblage. Il est possible de désassembler le code machine généré par un compilateur de langage haut-niveau (C/C++, Delphi, etc.), mais on n'obtiendra pas le code source du langage d'origine, juste la correspondance en assembleur du code machine.