Kann man eine .exe Datei dekompilieren?

5 Antworten

Disassemblieren geht "automatisch".

Dann bekommst Du Assemblercode.

Verstehen und in ein äquivalentes Hochsprachenprogramm umsetzen musst Du ihn selbst. Das benötigt viel Fachwissen, insbesondere über die jeweilige Prozessorarchitektur und das jeweilige Betriebssystem.

In der Regel nicht.

Jein, Du kannst sie maximal disassemblieren. Hierbei können gute Disassembler z.B. System-Calls etc. erkennen und entsprechend hervorheben.

Sofern Debugsymbole im Binary sind, ist deutlich mehr möglich.

Aber echtes dekompilieren, sodaß Du den Originalsource erhälst ist faktisch unmöglich.


Das ist selbstverständlich möglich. Wie leserlich das ganze dann noch ist steht auf einem anderen Blatt (wenn das Kompilat mit Debug Flags kompiliert und veröffentlicht wurde, dann stehen die Chancen gut noch was zu erkennen).

Wie das nun geht brauchst du nicht zu wissen. Mit welchem Programm du da jetzt weiter kommst hängt davon ab, in welcher Programmsprache das Programm geschrieben wurde. Zum Beispiel wäre es ja schade sich die Mühe zu machen ein C# Progrämmchen in Assembler anzuschauen, wenn C# doch auch möglich wäre.


NoHumanBeing  20.04.2018, 12:45
Zum Beispiel wäre es ja schade sich die Mühe zu machen ein C# Progrämmchen in Assembler anzuschauen, wenn C# doch auch möglich wäre.

Das ist auch nicht möglich.

C-Sharp wird nämlich nicht in Maschinensprache übersetzt, sondern in einen Zwischencode für eine stackbasierte virtuelle Maschine namens Common Intermediate Language (CIL). Dieser wird dann von der Common Language Infrastructure (CLI) zur Laufzeit interpretiert (ggf. unter Verwendung von "Just-in-Time-Compilation").

Die CIL ist zwar auch so eine Art "Assemblersprache", allerdings ist die entsprechende Architektur noch immer sehr viel "abstrakter", als die des "echten" Prozessors.

Das ganze ist sehr vergleichbar mit dem, was Java macht. Dort heißt die virtuelle Maschine eben Java Virtual Machine (JVM) und der Zwischencode wird als Bytecode bezeichnet. Hier kommt ebenfalls eine stackbasierte (virtuelle) Architektur und ein JIT-Compiler ("Hotspot") zum Einsatz.

Android macht auch etwas ähnliches. Dort heißt die virtuelle Maschine Dalvik Virtual Machine oder inzwischen Android Runtime (ART). Allerdings ist die virtuelle Architektur hier nicht stackbasiert, sondern registerbasiert.

1

Ja, man kann sie mit bestimmten Tools dekompilieren. Dabei ensteht aber nicht der originale Quellcode, sondern unleserlicher Kauderwelsch ohne Kommentare oder Formatierung.