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 .
c++
reverse-engineering
decompiling
Bryan Denny
la source
la source
objdump
pour LinuxRéponses:
Vous pouvez utiliser IDA Pro par Hex-Rays . Vous n'obtiendrez généralement pas un bon C ++ d'un binaire à moins d'avoir compilé dans les informations de débogage. Préparez-vous à passer beaucoup de travail manuel à inverser le code.
Si vous n'avez pas supprimé les binaires, il y a de l'espoir car IDA Pro peut produire du code C-alike avec lequel vous pourrez travailler. Habituellement, c'est très difficile, du moins quand je l'ai utilisé il y a quelques années.
la source
les informations sont supprimées lors du processus de compilation. Même si un décompilateur pouvait produire le code logique équivalent avec des classes et tout (il ne peut probablement pas), la partie auto-documentée a disparu dans le code de version optimisé. Pas de nom de variable, pas de nom de routine, pas de nom de classe - juste des adresses.
la source
Oui, mais aucun d'entre eux ne parviendra à produire un code suffisamment lisible pour en valoir la peine. Vous passerez plus de temps à essayer de lire la source décompilée avec des blocs assembleurs à l'intérieur, qu'à réécrire votre ancienne application à partir de zéro.
la source
Je n'ai vu aucun décompilateur qui génère du code C ++. J'en ai vu quelques-uns expérimentaux qui tentent raisonnablement de générer du code C, mais ils avaient tendance à dépendre de la correspondance avec les modèles de génération de code d'un compilateur particulier (cela peut avoir changé, cela fait un moment que je n'ai pas regardé cela pour la dernière fois. ). Bien sûr, toute information symbolique aura disparu. Google pour "décompilateur".
la source
En fonction de la taille et de la qualité du code d'origine, il peut être utile de recommencer dans votre langage préféré (qui peut encore être C ++) et d'apprendre de toutes les erreurs commises dans la dernière version. Est-ce que quelqu'un n'a pas dit une fois d'en écrire un à jeter?
nb Clairement s'il s'agit d'un produit énorme, alors cela ne vaut peut-être pas la peine.
la source