Leider habe ich meinen Quellcode verloren und ich habe nur die Ausgabedatei, die mit gcc unter Linux erstellt wurde, und ich habe jetzt keinen Zugriff auf meinen PC. Gibt es eine Möglichkeit, die Ausgabedatei in eine Quelldatei zu konvertieren (in c unter Linux)?
14
Antworten:
Sie hatten also eine Kuh, aber Sie haben sie versehentlich in einen Hamburger umgewandelt, und jetzt möchten Sie Ihre Kuh zurück.
Entschuldigung, so funktioniert es einfach nicht.
Stellen Sie einfach die Quelldatei aus Ihren Backups wieder her.
Ah, Sie hatten keine Backups. Leider gibt Ihnen das Universum dafür keine Pause.
Sie können die Binärdatei dekompilieren . Das gibt Ihnen nicht Ihren Quellcode, aber es gibt Ihnen einen Quellcode mit dem gleichen Verhalten. Sie erhalten die Variablennamen nur, wenn es sich um eine Debug-Binärdatei handelt. Sie erhalten nicht genau die gleiche Logik, wenn Sie nicht ohne Optimierungen kompiliert haben. Offensichtlich erhalten Sie keine Kommentare.
Ich habe Boomerang verwendet, um einige Programme zu dekompilieren, und das Ergebnis war besser lesbar als der Maschinencode. Ich weiß nicht, ob es das beste Werkzeug da draußen ist. Erwarten Sie auf keinen Fall Wunder.
quelle
Beim Reverse Engineering einer ausführbaren Datei sind mehrere Tools üblich.
In den meisten Fällen musste der Code von Grund auf neu geschrieben, als Assembler-Programm verwaltet oder durch erneutes Anwenden von Änderungsanforderungen auf eine ältere Version wiederhergestellt werden.
quelle
Was Sie tun möchten, heißt "Dekompilieren". Es gibt viele Dekompilierer und es ist nicht praktisch, sie alle hier zu behandeln.
Als allgemeine Bemerkung: Die Konvertierung von C-Quelle in ausführbaren Maschinencode ist verlustbehaftet. Zum Beispiel:
Es ist selten, dass Code so geschrieben wird, wie er geschrieben wurde. Die meisten Compiler ändern heutzutage Ihren Code drastisch, um ihn zu optimieren. Wenn Sie also dekompilieren, kann der Compiler nur erraten, wie der Quellcode ausgesehen haben muss. Er kann nicht wissen, was Ihr Code war, da dieser weg ist. Wenn der Dekompiler gut ist, kann der Code, den Sie erhalten, zumindest wieder in eine entsprechende ausführbare Datei kompiliert werden. Anschließend können Sie ihn langsam umgestalten, damit er lesbar ist. Aber höchstwahrscheinlich wird der Dekompiler absolut unlesbaren Spaghetti-Code erzeugen, und es wird große Kopfschmerzen bereiten, ihn zu entschlüsseln. Manchmal ist es weniger aufwendig, das Programm von Grund auf neu zu schreiben.
quelle