Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » FAQ C / C++ (ANSI-Standard) » decompilieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.02.2003, 12:37 Uhr
KaizerQuint89



Gibt es eine Möglichkeit .exe Dateien in .cpp oder .dll oder sonstwas zurückzukompilieren?
--
C++ ist geil
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.02.2003, 13:05 Uhr
void*
Generic Pointer
(Operator)


FAQ:
Q.: Wo bekomme ich einen C/C++ - Decompiler?

A.: Nirgends! Einmal compilierte Dateien lassen sich nicht wieder decompilieren. Das Prinzip der Open Source wäre überflüssig wenn es einen Decompiler geben würde , weil sonst fast alles z.B. Windows, Word, Quake usw. um Quellcode verfügbar wäre. Es ist nur möglich ausführbare Dateien zu disassemblieren, wodurch man aber "nur" Assemblercode erhält.
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.02.2003, 14:38 Uhr
~DocJunioR
Gast


Ändert mal bitte die FAQ ab!

Es gibt durchaus decompiler. Leider keine perfekten.
geht es nur um Schleifenkonstrukte, etc, ist das auch kein Problem. Hat man aber einfache Textein- oder ausgeben, hat man ein Problem. Je nach Compiler und Optimierung kann einiges anders aussehen, da ANSI den Befehlsumfang definiert, nicht aber die Art der Durchführung.
Man müsste eine riesige Datenbank erstellen, um das zu machen.
Eigentlich reichen zuerst kleine Programme, deren Assemblercode man sich anschaut. (Textein/ausgabe, Variablenberechnungen, Schleifen,...) und das für jeden gängigen Compiler...

Es ist nicht unmöglich.. nur hochgradig aufwendig.
Wenn ich etwas lesen kann, kann ich auch herausfinden, wie es Funktioniert.

cYa
DjR
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.02.2003, 15:01 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja: Nenne mir ein Produkt, welches mit Hilfe von gestrippten Binaries (also solchen ohne Debuginfos) den entsprechenden C/C++ code generiert, und ich wäre bereit die FAQ zu ändern.
Selbst wenn es möglich sein sollte, eine von Dir angesprochene Datenbank zu füllen, die quasi alle Optimierungschritte eines Compilers umkehrt, und so irgendeinen C/C++ Code herausspuckt, der bei erneutem Compilieren exakt das gleiche Binary ergibt (was ich erstmal als ein hochgradig kompliziertes, eher unmögliches Ding ansehen würde): Der Code wäre vermutlich alles andere als leicht lesbar: nichtssagende Variablennamen sind da vermutlich schon eher das geringste Übel:
1. Wie sollen zB Klassenvariablen eindeutig einer Klasse zugeordnet werden (die werden nämlich alle als globale Variablen gespeichert)?
2. Wie sollen überhaupt Klassen gefunden werden? - bei virtuellen methoden mag das ja noch irgendwie gehen (anhand der Aufrufsweise kann man entsprechende Heuristiken anwenden), aber eine nicht virtuelle Methode wirst Du kaum von einer normalen C Routine unterscheiden können?
3. Wie sollen die Protectionlevels (public/protected/private) rekonstruiert werden?
4. Was soll mit Templatespezialisierungen geschehen?
....

Also ich glaub da schon eher void*
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 05.02.2003 um 15:02 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.02.2003, 15:59 Uhr
~DocJunioR
Gast


Es gibt sogar Leute, die objektorientiert Assembler programmieren.
Dann wird das auch anders herum gehen. (Ich will's ehrlich gesagt nicht probieren)
Klar wird der Code unübersichtlich, aber das war ja nicht die frage.
Ein C - Decompiler heißt DCC (einfach mal googlen)
Man braucht ne Menge Zusatzpakete, aber er funktioniert.
Optimierungen müssen ja nicht mal zurückverfolgt werden. man muss einfach bestimmte Codeabfolgen als printf, scanf, or whatever interpretieren.

cYa
DjR
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.02.2003, 16:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich denke, die Tests hier geben einen ganz guten Eindruck von den Fähigkeiten vom dcc. Überzeuegn tuts mich nicht. Auf der Site findet man auch einige weitere Infos zu dem Themadecompiler.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.02.2003, 16:45 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Dieser "Decompiler" beweist nicht viel...niemand behauptet es wäre unmöglich aus Maschinencode oder Assembler äquivalenten C-Code zu produzieren. Der Punkt ist doch, dass wenn ich was decompiliere ich (annähernd) den C-Code bekomme, den ich (oder sonst wer) reingesteckt habe (hat).
Und wie schon auf die Tests zeigen, die virtual angesprochen hat, klappt das mit sehr einfachen Beispielen schon nicht mehr gut.
Also ich würde das nicht Decompiler nennen sondern Assembler-to-C-converter oder so.
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.02.2003, 17:28 Uhr
~DocJunioR
Gast


Dass es unmöglich ist, einen Originalcode wiederherzustellen, sollte jedem klar sein. Aber dekompilieren heißt nicht, den Programmierer nachmachen, sondern das Kompilat wieder in einer Hochsprache lesbar zu machen und das tut der DCC mehr oder weniger gut. Ergo: es ist ein Decompiler.
Er ist nicht perfekt, aber auch einer der wenigen, die mal von einem Coder ausgerückt wurden. (wer sowas bastelt, hütet es wie seinen Augapfel)

Ändert die FAQ!
Es wäre zumindest praktischer zu sagen, dass es welche gibt, diese aber aufgrund der Architektur der Maschinenprogramme nicht besondes gute Leistungen vollbringen können.


cYa
DjR
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.02.2003, 17:47 Uhr
virtual
Sexiest Bit alive
(Operator)


Da ich in der FAQ noch keinen Eintrag gefunden habe, wandert der Thread hiermit dahin
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ FAQ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: