Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

EXE-Dateien decompilieren

Maybe / 6 Antworten / Baumansicht Nickles

Moin,

meine Programmierkenntnisse sind inzwischen veraltet und waren auch bestenfalls rudimentär.

Daher stelle ich Euch die Frage! ;-)

Es gab doch mal sogenannte Decompiler, mit denen man EXE-Dateien wieder zerlegen konnte, oder? Allerdings war das wohl noch zu DOS-Zeiten, wenn ich mich richtig erinnere.

Gibt es so etwas noch? Oder muss man sogar für die evtl. genutzte Sprache einen eigenen Decompiler?

Das hier soll kein Hacker-Threat werden, es ist reine Neugier.

Gruß

Maybe

"Es gibt nur eine falsche Sicht der Dinge: der Glaube, meine Sicht sei die einzig Richtige!" (Nagarjuna, buddhistischer Philosoph)
bei Antwort benachrichtigen
Borlander Maybe „EXE-Dateien decompilieren“
Optionen

Gibt es natürlich noch, aber wenn Du das auf eine Anwendung mit GUI loslässt und durch ggf. stärkere Optimierung wird es tendenziell schwieriger als früher. Es gibt keine eindeutige Transformation von Maschienencode in eine Hochsprache. Im Zweifelsfall muss man wissen mit welcher Sprache und welchem Compiler das Programm erzeugt wurde und noch halbwegs sinnvoll lesbaren Code herauszubekommen.

Erstaunlich gut - aber weit entfernt von perfekt - funktioniert das ganze mit Java-Anwendungen. Da bleibt die Klassenstruktur grundsätzlich schon mal vorhanden und beim Compilieren in ByteCode (Maschinencode für die Java Virtual Maschine) werden in Standardkonfiguration sehr viele Informationen aus dem Quellcode übernommen (Variablennamen, Zeilennummern, Klassen und Methodennamen sowieso, Kommentare allerdings nicht).

Gruß
bor

bei Antwort benachrichtigen
torsten40 Maybe „EXE-Dateien decompilieren“
Optionen

Du kannst versuchen, die *.exe mit einem Disassembler zu decompelieren, aber mehr wie Assembler wird da nicht bei rum kommen. Dennoch lässt sich von aus auch eine Menge anstellen.

OllyDbg, IDA, oder PE-Explorer

Freigeist
bei Antwort benachrichtigen
gelöscht_265507 Maybe „EXE-Dateien decompilieren“
Optionen

Da hast du aber Großes vor.

Dazu muss man mal bemerken, dass es exe-Dateien gibt, die sich nicht mehr decompilieren lassen, weil sie mir einem Compiler compiliert wurden, die die EXE noch packen.

Wenn du es tatsächlich kannst, dann hast du einen Haufen Maschinencode, den man sicherlich auch lesen kann.
Aber das musst du dann mit deiner Restlebenszeit abklären. ;O))

Wenn du was in exe-Dateien verändern willst, dann probiere es mit einem Ressourcen-Tool.

http://www.angusj.com/resourcehacker/

bei Antwort benachrichtigen
Alpha13 Maybe „EXE-Dateien decompilieren“
Optionen

Die Rückübersetzung kannst du AFAIK schon lange knicken (für wirklich lauffähigen Orginalcode)  und sich damit auseinandersetzen ist vergebene Liebesmüh...

Außerdem müßte man sich da mit Hochsprachen und auch Assembler richtig gut auskennen!

bei Antwort benachrichtigen
Maybe Nachtrag zu: „EXE-Dateien decompilieren“
Optionen

Moin,

ich danke Euch allen erst einmal für die Antworten. Ich hatte mir schon gedacht, dass die Sache nicht wirklich einfach ist.

Ich frage mich dann allerdings doch, wie es findige Programmieren immer wieder schaffen, Crack-EXE oder NOCD zu erstellen. Natürlich können wir das hier nicht genau erläutern.

Gruß

Maybe

"Es gibt nur eine falsche Sicht der Dinge: der Glaube, meine Sicht sei die einzig Richtige!" (Nagarjuna, buddhistischer Philosoph)
bei Antwort benachrichtigen
gelöscht_137978 Maybe „Moin, ich danke Euch allen erst einmal für die Antworten. ...“
Optionen
Ich frage mich dann allerdings doch, wie es findige Programmieren immer wieder schaffen, Crack-EXE oder NOCD zu erstellen.

Das ist einfach.

Wenn du z.B. mit Wdasm oder Softice ein Programm, das du knacken möchtest, im Debugger lädst, dann lauft das Programm in einer Debuggerumgebung, die dir es erlaubt Breakpoints zu setzen. Tust du das Sinnvoll, dann siehst du, wo was passiert, also Key abfrage, Test auf Medium, Seriennummerneingabe usw.

Da in der Umgebung dann auch die Zeile lesbar steht, kannst du auch ein Patchprogramm schreiben, die dir dann 90 NOP oder jmp oder jne oder was auch immer du brauchst ;) reinpatcht.

Der unterschied zu deinem ursprünglich angefragten, eine Reverse Übersetzung ist schwer, siehe oben (Programmcryptic usw.). Ein Programm, das aufgerufen wird, in einer "Sandbox" zu überwachen, ist leichter.

bei Antwort benachrichtigen