cantador ->
Bin voilà le genre de truc que l'on peut récupérer :
De ça on peut en comprendre l'algo général. On voit facilement 5 "call", qui sont des appels à des fonctions. En traçant les appels avec ntsd et les valeurs de retour, on détermine facilement que le premier appel renvoie le contenu d'un champ de texte, que le deuxième compare deux chaînes, que les deux suivant affichent une boite de dialogue, et que le dernier est sans intérêt. Après, au choix, on peut récupérer le mot de passe, "password", en regardant le deuxième argument passé à la fonction de comparaison, ou on peut supprimer le jne directement en le noppant (En écrasant le jne par des instructions no-operation).
Donc à la main, on peut retrouver ça :
si RecupContenu(ChampDeText) = 'password' alors
Affiche('ok');
sinon
Affiche('erreur');
fsi;
Mais ce n'est en aucun cas le vrai source qui est le suivant :
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = 'password' then
ShowMessage('ok')
else
ShowMessage('erreur');
end;
Donc on ne récupère jamais le vrai source, et on ne le récupérera jamais vraiment, car des informations ont disparues à la compilation. On ne récupère que de l'assembleur que l'on peut traduire en source ou en pseudo source. Cela peut être exploité pour une étude limité d'un secteur de code ("Waouh ! Classe ! Comment ont ils fait ça ? Aaaaah, ils ont utilisé XXXX.") ou pour faire sauter une protection, mais de là à reconstituer un logiciel entier sous forme de source, il y a un boulot très long et plus ou moins proportionnel à la taille du logiciel.
Conclusion, livrer un .exe globalement sûr en ce qui concerne la récupération du source. Par contre si le logiciel a besoin d'une protection en lui même, il faut alors crypter le code machine.
Après, en plus, si on connaît le langage utilisé pour créer le .exe (Les désassembleur avancés détectent automatiquement le compilateur utilisé avec plus ou moins de précision), on peut en tirer plus facilement des informations. Pour le Delphi, on utilisera par exemple DeDe. Je ne l'ai jamais essayé, mais il a l'air capable de produire des .dfm, voir un projet Delphi complet, bien qu'avec de l'assembleur, et incompilable.