PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler zu C++???



C++
05-02-2005, 16:49
Gibt es irgentwelche Programme mit denen man Assemblercode
in einen C++-Code umwandeln kann???
Ich hab da nähmlich schon eins das BASIC in C/C++ umwandeln kann.
:confused: :confused: :confused:

panzi
05-02-2005, 18:53
wohl kaum. da zum einen assambler != assembler ist und da es GANZ anders aufgebaut ist. assembler zu C vieleicht, aber sicher nicht zu C++, wie sollen die Klassen aus dem asm code ermittelt werden?

navi
06-02-2005, 01:05
assembler zu c gibt es auch nicht. Die ganzen schleifen (for while) und Verzwigungen (if else switch) Funktionen und structs sind zu kompliziert als dass sie aus dem Assembler Code wieder rekonstruiert werden koennen. Dass ist ja gerade der Vor/Nachteil von C/C++

hackbert
06-02-2005, 12:45
assembler zu c gibt es auch nicht. Die ganzen schleifen (for while) und Verzwigungen (if else switch) Funktionen und structs sind zu kompliziert als dass sie aus dem Assembler Code wieder rekonstruiert werden koennen. Dass ist ja gerade der Vor/Nachteil von C/C++
Das kann ich nur unterstützen. Das wäre auch zu schön, wenn es einen ASM -> C++ Cross-Compiler gäbe. Dann würde man ja superschnell an den Quellcode von sämtlichen Anwendungen kommen. Es geht einfach nicht, da die sauberen C/C++-Konstrukte in tausende von Assembleranweisungen bzw. direkt in Maschinencode übersetzt werden. Da gibt es dann auch keine Variablen- oder Funktionsnamen, sondern eigentlich nur noch Adressen und Register.

Pingu
06-02-2005, 14:29
assembler zu c gibt es auch nicht. Die ganzen schleifen (for while) und Verzwigungen (if else switch) Funktionen und structs sind zu kompliziert als dass sie aus dem Assembler Code wieder rekonstruiert werden koennen.
Das ganze faßt sich unter dem Begriff "Code guessing" zusammen.

Das kann ich nur unterstützen. Das wäre auch zu schön, wenn es einen ASM -> C++ Cross-Compiler gäbe.
Das Ganze nennt sich Decompiler und nicht Cross-Compiler. Ein Cross-Compiler ist ein Compiler den man nutzt, um auf einer Plattform zu entwickeln aber für eine andere Plattform zu übersetzen. Hauptanwendungsgebiet ist die gesamte Entwicklung im Bereich des embedded programming.

Dann würde man ja superschnell an den Quellcode von sämtlichen Anwendungen kommen.
Was ist Quellcode? Auch Assembler ist Quellcode. In diesem Sinne gibt es Disassembler schon lange. Selbst zum Lieferumfang von DOS gehörte früher debug. C ist Quellcode. In diesem Sinne gibt es Decompiler auch schon seit Jahren. C++ ist Quellcode. In diesem Sinne könnte ich mir vorstellen, daß es auch Decomplier gibt.
Also an Quellcode einer Anwendung zu kommen ist nicht schwer. Dies ist aber nicht DER Quellcode einer Anwendung. Ein kleiner aber feiner Unterschied.

Es geht einfach nicht, da die sauberen C/C++-Konstrukte in tausende von Assembleranweisungen bzw. direkt in Maschinencode übersetzt werden.
Genau das ist der springende Punkt: sauberen C/C++-Konstrukte

Da gibt es dann auch keine Variablen- oder Funktionsnamen, sondern eigentlich nur noch Adressen und Register.
Das ist nicht schwer. Entweder man hat Glück und es ist mit den Symboltabellen übersetzt worden (denn der Debugger muß die Informationen ja auch irgendwo her haben). Oder ganz pragmatisch: Var1, Var2, Var3, Var4, ... und Func1, Func2, Func3, Func4, ...

Um nicht nur zu kritisieren: Im Google-Directory gibt es einen eigenen Abschnitt dazu: http://directory.google.com/Top/Computers/Programming/Disassemblers/
Auf die Schnelle habe ich sogar ein Wiki dazu gefunden: http://catamaran.labs.cs.uu.nl/twiki/pt/bin/view/Transform/DeCompilation

Ich selbst kenne mich zur Zeit nicht mehr ganz sogut damit aus, da ich eigentlich seit 5 Jahren aus dem Thema heraus bin. Ich denke 5 Jahre sind in diesem Bereich eine sehr lange Zeit, so daß sich da viel getan hat. Deshlab kann ich leider kein konkretes Werkzeug empfehlen.

Pingu