web-dev-qa-db-fra.com

Existe-t-il un programme pour décompiler Delphi?

Quelqu'un vient de m'envoyer une décompilation d'un programme en C. C'était une très bonne décompilation, produisant du code C agréable et surtout lisible (si vous négligez le fait qu'aucune des variables ou des fonctions n'avait un nom lisible par l'homme) qui ressemblait le plus souvent à il compilerait en fait.

Il y avait cependant un gros problème. Il se trouve que je sais que le programme qu'il décompilait a été écrit en Delphi, qui regorge de concepts difficiles à traduire en C. Mais j'ai été vraiment impressionné par la sortie du décompilateur, et cela m'a fait me demander. Y a-t-il quelque chose qui puisse faire cela pour Delphi?

Le meilleur outil de décompilation que j'ai vu pour Delphi est DeDe. Il peut faire beaucoup de choses, mais il n'essaie même pas de produire du code Object Pascal en tant que sortie, et il n'a pas été mis à jour depuis Delphi 6. Y a-t-il quelque chose de mieux là-bas?

22
Mason Wheeler

Je ne pense pas qu'il existe des décompilateurs de code machine qui produisent du code Pascal. La plupart des "décompilateurs Delphi" analysent le formulaire et les données RTTI, mais ne décompilent pas réellement le code machine. Je ne peux que recommander d'utiliser quelque chose comme DeDe (ou logiciel similaire ) pour extraire les informations de symbole en combinaison avec un décompilateur C, puis traduire le code C décompilé en Delphi (il existe de nombreux convertisseurs de code source).

12
Vladimir Panteleev

Vous pouvez utiliser IDR c'est un excellent programme pour décompiler delphi, il est mis à jour vers les versions delphi actuelles et il a beaucoup de fonctionnalités.

8
Hanan N.

Voici une liste: http://delphi.about.com/od/devutilities/a/decompiling_3.htm (et cette page en mentionne plus: http: //www.program- transformation.org/Transform/DelphiDecompilers )

J'ai utilisé DeDe à l'occasion, mais ce n'est pas vraiment très puissant, et ce n'est pas à jour avec les versions Delphi actuelles (la dernière version qu'il prend en charge est Delphi 7 je crois)

6
PatrickvL

Des langages tels que Delphi, C et C++ compilent en code machine natif du processeur, et les exécutables de sortie contiennent peu ou pas de métadonnées. Cela contraste avec Java ou .Net, qui compile en bytecode indépendant de la plate-forme orienté objet, qui conserve les noms des méthodes, les paramètres des méthodes, les classes et les espaces de noms et autres métadonnées.

Il existe donc une décompilation beaucoup moins utile qui peut être effectuée sur du code Delphi ou C. Cependant, Delphi a généralement des données de formulaire intégrées pour tout formulaire du projet (généré par la ligne $ R * .dfm), et il a également des métadonnées sur toutes les propriétés publiées, donc un outil spécifique à Delphi pourrait extraire ces informations.

1
Anthony