web-dev-qa-db-fra.com

Existe-t-il un décompilateur C ++?

J'ai un programme dans lequel j'ai perdu le code source C++. Existe-t-il de bons décompilateurs C++?

J'ai déjà rencontré Boomerang .

105
Bryan Denny

Vous pouvez utiliser IDA Pro par Hex-Rays . En général, vous ne tirerez pas un bon C++ d’un binaire, à moins d’être compilé dans les informations de débogage. Préparez-vous à dépenser un lot de travail manuel pour inverser le code.

Si vous ne supprimez pas les fichiers binaires, il y a de l'espoir, car IDA Pro peut produire un code de type C avec lequel vous pouvez travailler. Habituellement, c'est très dur, du moins quand je l'ai utilisé il y a quelques années.

77
David Holm

les informations sont supprimées lors de la compilation. Même si un décompilateur pouvait produire le code équivalent logique avec des classes et tout le reste (ce qui est probablement impossible), la partie auto-documentée a disparu dans du code de version optimisé. Pas de nom de variable, pas de nom de routine, pas de nom de classe - juste des adresses.

24
Dustin Getz

Oui, mais aucun d’entre eux ne réussira à produire suffisamment de code lisible pour en valoir la peine. Vous passerez plus de temps à essayer de lire la source décompilée avec des blocs d'assembleur à l'intérieur qu'à réécrire votre ancienne application à partir de zéro.

19
m_pGladiator

Je n'ai pas vu de décompilateur générant du code C++. J'ai vu quelques expériences expérimentales qui tentaient raisonnablement de générer du code C, mais elles avaient tendance à dépendre de la correspondance des modèles de génération de code d'un compilateur particulier (cela peut avoir changé, cela fait longtemps que je n'ai pas examiné ce ). Bien sûr, toute information symbolique aura disparu. Google pour "decompiler".

6
Ferruccio

En fonction de la taille et de la qualité de l'écriture du code d'origine, il peut être intéressant de recommencer dans votre langue préférée (qui peut encore être le C++) et de tirer des leçons des erreurs éventuelles commises dans la dernière version. Quelqu'un n'a-t-il pas dit une fois d'écrire quelqu'un à jeter?

nb Clairement, s’il s’agit d’un produit énorme, il ne vaut peut-être pas la peine.

2
harriyott