Ich habe ein Programm, in dem ich den C ++ - Quellcode verloren habe. Gibt es da draußen gute C ++ - Dekompilierer?
Ich bin schon auf Boomerang gestoßen .
c++
reverse-engineering
decompiling
Bryan Denny
quelle
quelle
objdump
für LinuxAntworten:
Sie können IDA Pro von Hex-Rays verwenden . Normalerweise erhalten Sie aus einer Binärdatei kein gutes C ++, es sei denn, Sie haben Debugging-Informationen kompiliert. Bereiten Sie sich darauf vor, viel Handarbeit zu leisten, um den Code umzukehren.
Wenn Sie die Binärdateien nicht entfernt haben, besteht Hoffnung, dass IDA Pro C-ähnlichen Code für Sie erstellen kann. Normalerweise ist es aber sehr rau, zumindest als ich es vor ein paar Jahren benutzt habe.
quelle
Informationen werden beim Kompilieren verworfen. Selbst wenn ein Dekompiler den logisch äquivalenten Code mit Klassen und allem erzeugen könnte (was wahrscheinlich nicht möglich ist), ist der selbstdokumentierende Teil im optimierten Release-Code verschwunden. Keine Variablennamen, keine Routinennamen, keine Klassennamen - nur Adressen.
quelle
Ja, aber keiner von ihnen wird es schaffen, lesbaren Code zu erstellen, der die Mühe wert ist. Sie werden mehr Zeit damit verbringen, die dekompilierte Quelle mit Assembler-Blöcken zu lesen, als Ihre alte App von Grund auf neu zu schreiben.
quelle
Ich habe keine Dekompilierer gesehen, die C ++ - Code generieren. Ich habe einige experimentelle gesehen, die einen vernünftigen Versuch zur Generierung von C-Code unternehmen, aber sie waren in der Regel davon abhängig, dass sie den Codegenerierungsmustern eines bestimmten Compilers entsprechen (das hat sich möglicherweise geändert, es ist eine Weile her, seit ich dies das letzte Mal untersucht habe ). Natürlich werden alle symbolischen Informationen verschwunden sein. Google für "Dekompiler".
quelle
Je nachdem, wie groß und wie gut der ursprüngliche Code geschrieben war, kann es sich lohnen, erneut in Ihrer Lieblingssprache (die möglicherweise noch C ++ ist) zu beginnen und aus Fehlern zu lernen, die in der letzten Version gemacht wurden. Hat nicht jemand einmal darüber gesprochen, einen zu schreiben, um ihn wegzuwerfen?
nb Wenn es sich um ein riesiges Produkt handelt, ist es möglicherweise nicht die Zeit wert.
quelle