Gibt es einen C ++ – Decompiler?

Ich habe ein Programm, in dem ich den C ++ Quellcode verloren habe. Gibt es irgendwelche guten C ++ – Decompiler?

Ich bin schon auf Boomerang gestoßen .

   

Sie können IDA Pro von Hex-Rays verwenden . Normalerweise werden Sie kein gutes C ++ aus einer Binärdatei erhalten, wenn Sie nicht in Debugging-Informationen kompiliert haben. Bereiten Sie sich darauf vor, viel manuelle Arbeit zu investieren, um den Code umzukehren.

Wenn Sie die Binärdateien nicht entfernen, gibt es einige Hoffnung, da IDA Pro C-ähnlichen Code produzieren kann, mit dem Sie arbeiten können. Normalerweise ist es jedoch sehr unruhig, zumindest wenn ich es vor ein paar Jahren benutzt habe.

Informationen werden im Kompilierprozess verworfen. Selbst wenn ein Decompiler den logischen äquivalenten Code mit classn und allem erzeugen könnte (wahrscheinlich nicht), ist der selbst-dokumentierende Teil im optimierten Freigabe-Code verschwunden. Keine Variablennamen, keine Routinenamen, keine classnnamen – nur Adressen.

Ja, aber keiner von ihnen wird es schaffen, ausreichend lesbaren Code zu produzieren, um die Mühe wert zu sein. Sie werden mehr Zeit damit verbringen, die dekompilierte Quelle mit Assembler-Blöcken im Inneren zu lesen, als Ihre alte App von Grund auf neu zu schreiben.

Ich habe keine Decompiler gesehen, die C ++ – Code generieren. Ich habe ein paar experimentelle gesehen, die einen vernünftigen Versuch machen, C-Code zu erzeugen, aber sie neigten dazu, abhängig zu sein von den Code-Erzeugungsmustern eines bestimmten Compilers (die sich vielleicht geändert haben, es ist eine Weile her, seit ich mich das zuletzt angesehen habe) ). Natürlich wird jegliche symbolische Information weg sein. Google für “Dekompiler”.

Abhängig davon, wie groß und wie gut der ursprüngliche Code geschrieben war, könnte es sich lohnen, wieder in Ihrer Lieblingssprache (die vielleicht immer noch C ++ ist) zu beginnen und von Fehlern in der letzten Version zu lernen. Hat nicht jemand einmal gesagt, dass man einen wegcasting soll?

nb Klar, wenn das ein riesiges Produkt ist, dann ist es vielleicht nicht die Zeit wert.