exe in .c

Ich würde mal sagen: Gar nicht.

Es geht immer nur andersherum: Quellcode (.c-Datei) wird kompiliert usw. bis daraus ein ausführbares Programm (.exe-Datei) entsteht.

Es gibt zwar Disassembler, aber ich vermute nicht, dass die dir weiterhelfen würden.
 
hab so einen decompiler mal ausprobiert, weil es mich interessiert hat, wie der code nach dem hin und her compelieren ausschaut => man sieht, das er zweimal compeliert wurde => er is 2 mal so lang, 2 mal so unverständlich und ich rate 2 mal davon ab
 
Es ist halt einfach so, dass der Compiler einen logisch aufgebauten Quelltext (mit Texteinrückungen usw.) in Binäres übersetzen kann, aber dem Compiler ist ja jegliche Leerzeile (abgesehen jetzt zwischen Tokens) egal.
Außerdem wird der C/C++ Quelltext ja erst einmal in einen Assembler Code übersetzt, das geht auch umgekehrt (da Assembler eine wirklich einfache Sprache ist, jeder Befehl nimmt eine Zeile ein). Aber aus Assembler sinnvollen C/C++ Code zu erzeugen ist, möglich aber nicht ratsam.

1. Ist es auch bei bestimmten Anwendungen illegal.
2. Kommt kein Sinnvoll verständlicher Quelltext raus. (Zum Beispiel könnte alles in eine Zeile geschrieben sein)
3. Es gibt zu jedem halbwegs öffentlichen Programm SDKs und APIs, die man auch benutzen kann, um Abläufe eines Programms (oder was auch immer) teilweise (!) zu steuern.
 
Original geschrieben von met
hallo,
kann man eine exe in eine .c konvertieren?

Oder zumindest lesbaren code bekommen?

Jein - es gibt Anstrengungen für Decompiler-Projekte. Aber in c/c++ geht das im Allgemeinen nicht. Man bekommt Assemblercode (das auch nicht immer -> Selfmodifying Code verhindert das z.B., siehe auch Kopierschutz von Spielen) und dieser kann mittels Analysen sehr gut aufbereitet werden und einem so bei der Analyse helfen (->IDA, der Interactive Disassembler von http://www.datarescue.com wäre dann das Tool deiner Wahl).
Problem sind die Optimierungen. Sprich aus einem Befehl (z.B. cout) wird nicht immer die gleiche Bytefolge generiert. Das lesen von Assemblercode muss man lernen, aber es geht.

Zu dem Thema findest du auf der universitas virtualis was (google) bzw. wenn du üben willst, such dir ein paar Crackmes und versuch zu verstehen was die tun.

Crackmes sind eine einfache und legale Art so etwas zu üben. Oder sebst geschriebene Programme Disassemblieren.
 
Zurück