Question

Quelqu'un vient de m'envoyer le fichier décompilé d'un programme en C. Il s'agissait d'un très bon fichier décompilé produisant un code C agréable et principalement lisible (si vous oubliez le fait qu'aucune des variables ou fonctions ne porte de nom lisible par l'homme), ressemblait le plus souvent à compiler.

Il y avait cependant un gros problème. Il se trouve que je sais que le programme qu'il a décompilé 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, ce qui m'a émerveillé. Est-ce que quelque chose peut 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'essaye même pas de produire du code Object Pascal, et il n'a pas été mis à jour depuis Delphi 6. Y a-t-il quelque chose de mieux là-bas?

Était-ce utile?

La solution

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

Autres conseils

Vous pouvez utiliser IDR , c’est un excellent programme pour décompiler delphi, c’est une mise à jour vers la version actuelle. versions de Delphi et il a beaucoup de fonctionnalités.

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

J'ai utilisé DeDe à l'occasion, mais ce n'est pas vraiment puissant, et il n'est pas à jour avec les versions actuelles de Delphi (la dernière version supportée est Delphi 7, je crois)

Des langages tels que Delphi, C et C ++ sont compilés en code machine natif du processeur, et les exécutables en sortie contiennent peu ou pas de métadonnées. Ceci est en contraste avec Java ou .Net, qui compile en un bytecode indépendant de la plateforme et orienté objet, qui conserve les noms des méthodes, des paramètres de méthode, des classes et des espaces de noms, ainsi que d'autres métadonnées.

Il y a donc beaucoup moins utile de décompilation qui peut être effectuée sur du code Delphi ou C. Cependant, Delphi a généralement des données de formulaire incorporées pour tout formulaire du projet (généré par la ligne $ R * .dfm), ainsi que des métadonnées sur toutes les propriétés publiées. Ainsi, un outil spécifique à Delphi serait capable d'extraire ces informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top