Bonjour
SVP c'est quoi compiler et decompiler ?
je rencontre toujours dans les langage de programmation sans rien comprendre.
Merci
-----
16/12/2005, 13h43
#2
JPL
Responsable des forums
Date d'inscription
septembre 2003
Messages
63 850
Re : compiler décompiler
On écrit les programmes dans des langages compréhensibles aux humains (quoiqu'assez abstraits) mais le processeur ne comprend pas ce langage. Il possède simplement un jeu d'instructions qui sont désignées par des numéros (qui, en plus, doivent lui être présentés en binaire). Un compilateur est un programme traduisant le langage de programmation en langage machine, c'est à dire en une suite de 0 et 1, seuls compréhensibles par le processeur.
La décompilation est, théoriquement, l'opération inverse. Mais en fait il n'est pas possible de revenir entièrement du langage machine vers le langage de programmation qui en est à l'origine car le compilateur effectue toute une série de transformations et d'optimisations qui ne sont pas réversibles.
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
17/12/2005, 18h17
#3
invite597d4991
Date d'inscription
janvier 1970
Messages
883
Re : compiler décompiler
En fait on désassemble plus souvent qu'on ne décompile.
Attention tout de même, si par malheur tu as devant les yeux un fichier binaire propriétaire et que tu sais lire le binaire, tu est en infraction... tu n'as pas non plus le droit de décompiler/debugger/desassembler ce qui est closed source.
25/01/2006, 09h35
#4
invite3fc70366
Date d'inscription
janvier 1970
Messages
50
Re : compiler décompiler
Bonjour,
Une autre question, quand on ouvre un exécutable dans un éditeur de texte, ce n'est pas du binaire apparamment.
Aujourd'hui
A voir en vidéo sur Futura
25/01/2006, 20h52
#5
invite597d4991
Date d'inscription
janvier 1970
Messages
883
Re : compiler décompiler
Un éditeur de texte interprete le code binaire d'une certaine façon, quand il voit 0x41 il met A, mais cet octet peut très bien représenter autre chose, comme une partie d'une adresse ou une instruction processeur, ou encore l'intégral 61.
Un "strings" sur n'importe quel executable donne des résultats parfois surprenants.
Sous UNIX, il y a des "executables" qui sont des scripts, (commencés par #!/usr/bin/XXX, programme interpreteur) ceux là évidemment ne sont pas en "binaire" au sens ou tu l'entend.
Une autre chose à savoir est que les executables peuvent contenir des variables, ainsi:
Code:
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
Donnera, après passage à la compilation, un fichier binaire que contiendra bien sûr la chaine "Hello World!" .
Tout ça pour dire que les executables sont bien en binaire.