Disassmblieren
-
SeppJ schrieb:
... Folgt nicht: Einzelne Brötchen kann man in Wasser und Mehl umwandeln.
Glaube ich nicht. Unter Hitze Brötchen verdampfen, Dampf kondensieren lassen zu Wasser, übrig gebliebene Trockenmasse gleich Mehl? Geht doch alles!
-
berniebutt schrieb:
SeppJ schrieb:
... Folgt nicht: Einzelne Brötchen kann man in Wasser und Mehl umwandeln.
Glaube ich nicht. Unter Hitze Brötchen verdampfen, Dampf kondensieren lassen zu Wasser, übrig gebliebene Trockenmasse gleich Mehl? Geht doch alles!
Dann setz zu allem ein "einfach" dazu. Assembler kann man schließlich auch in C umwandeln, es ist, wie gesagt, bloß nicht so einfach.
-
SeppJ schrieb:
berniebutt schrieb:
SeppJ schrieb:
... Folgt nicht: Einzelne Brötchen kann man in Wasser und Mehl umwandeln.
Glaube ich nicht. Unter Hitze Brötchen verdampfen, Dampf kondensieren lassen zu Wasser, übrig gebliebene Trockenmasse gleich Mehl? Geht doch alles!
Dann setz zu allem ein "einfach" dazu. Assembler kann man schließlich auch in C umwandeln, es ist, wie gesagt, bloß nicht so einfach.
Vor allem kommt nicht mehr das gleiche Wasser raus.
Die Mineralien bleiben im Brötchen, trotz verdampfen!
Und das Mehl verliert an Vitamine.
-
Das war bei dem Beispiel sogar bewusst so gewählt. Der C-Code ist nach einem Hin und Zurück auch nicht mehr wiederzuerkennen.
-
IDApro bietet mit Hexrays einen verdammt guten Decompiler.
Kostet eben 1500€, ich hoffe stark du bist keiner von den bösen Jungs, die sich das einfach so irgendwo runterladen.
-
Ahoi !
@0x0ERROR das hier könnte für dich interessant sein:
http://stackoverflow.com/questions/137038/how-do-you-get-assembler-output-from-c-c-source-in-gccBtw. ist bei Linux nicht immer gdb standardmäßig vorinstalliert?
Ja, ich weiss Debugger != Disassembler
Hier noch ein Link:
http://stackoverflow.com/questions/1237489/how-can-i-force-gdb-to-disassemble
Das hab ich gerade in dem 2ten Link gefunden:
Falaina schrieb:
This isn't the direct answer to your questoin but since you seem to just want to disassemble the binary, perhaps you could just use objdump:
objump -d programShould give you the dissassembly of it. You can add -S if you want it source-annotated.
Ethon schrieb:
IDApro bietet mit Hexrays einen verdammt guten Decompiler.
Den hab ich auch.
Ethon schrieb:
Kostet eben 1500€
0x0ERROR bald ist ja Weihnachten.
Falls der Weihnachtsmann knapp bei Kasse ist frag halt Googel.^^
:xmas1: :xmas2:
-
berniebutt schrieb:
Glaube ich nicht. Unter Hitze Brötchen verdampfen, Dampf kondensieren lassen zu Wasser, übrig gebliebene Trockenmasse gleich Mehl? Geht doch alles!
Ich denke, dass Broetchen backen ein irreversibler Vorgang ist.
-
Irgendwie kam mir beim letzten Beitrag sofort das hier in den Kopf:
http://answers.yahoo.com/question/index?qid=20100623180655AAnBJFJ
(siehe erste Antwort von "Other answers")
-
Backen ist ein Informationsverlust, compilieren ist das auch.
-
Bassmaster schrieb:
Ethon schrieb:
Kostet eben 1500€
0x0ERROR bald ist ja Weihnachten.
Falls der Weihnachtsmann knapp bei Kasse ist frag halt Googel.^^
:xmas1: :xmas2:
Problem ist dass man den als Privatperson praktisch nicht bekommt. Man versucht verzweifelt Leaks zu vermeiden und deswegen kann man ihn praktisch nur kaufen wenn man gewisses Gewerbe betreibt, zb Antivirus-Hersteller.
Dabei ist auch noch jede einzelne Kopie watermarked.Denkww die letzten Leaks stammen vonm Schulungen.
-
Ethon schrieb:
Problem ist dass man den als Privatperson praktisch nicht bekommt.
Bloß braucht man ihn als Privatperson praktisch nicht. Ich wette der Threadersteller will auch nicht wirklich einen Decompiler, er weiß nur nicht recht, was er überhaupt will.
-
SeppJ schrieb:
Ethon schrieb:
Problem ist dass man den als Privatperson praktisch nicht bekommt.
Bloß braucht man ihn als Privatperson praktisch nicht. Ich wette der Threadersteller will auch nicht wirklich einen Decompiler, er weiß nur nicht recht, was er überhaupt will.
Doch, wenn man gerne mal Programme crackt oder Hacks für Spiele schreiben möchte ist das eine gewaltige Erleichterung.
-
dekompilierten code anzuschauen ist oft verwirrender als einfach nur den assembler. ich glaube fuers cracken und hacks sind die guten stellen auch ausreichend obfuscated sodass du im dekompilat nur gruetze siehst (z.b. weil ueber verschiedene register auf denselben speicher zugegriffen wird, das dekompilat dir dann aber eventuel zwei variablen draus macht, oder du siehst halt einfach nur assembler mit c syntax).
-
Ich habe da das kommerzielle Tool 'Shrinker Win32' aus den 1990er Jahren. Das komprimiert Win32-Executables drastisch (ca. 40%) und dekompromiert wärend der Laufzeit ohne erkennbaren Laufzeitverlust. Das Tool funktioniert auch heute noch für Win32-Anwendungen. Die komprimierte exe sollte angeblich jede Decompilierung unmöglich machen. Von den Entwicklern BlincInc hat man schon lange nichts mehr gehört.
offtopic: Wer aus den Brötchen von SeppJ nahezu reines C haben will, der verbrennt sie einfach und kriegt C als chemisch Carbon = Kohlenstoff.
-
Erklären wir doch mal, warum das nicht gehen kann. Mal 2 einfache Beispiele:
Ein Programm hat Variablennamen. Diese werden vom Compiler grob gesprochen auf Speicheradressen gemappt. Im Compilat sind die Variablennamen dann nur noch Adressen. Wie die Variable ursprünglich hieß, steht im compilat nicht drin.
Weiter wird die decompilation erschwert, dass der Compiler Optimierungen vor nimmt und verschiedener Sourcecode den gleichen Binärcode erzeugen kann. Beispielsweise kann ich schreiben:
if (a > 5) b = 12; else b = 35;
oder
b = (a > 5 ? 12 : 35);
Nach dem Compiler kommt höchstwahrscheinlich das selbe raus. Der Decompiler kann nicht wissen aus was der Binärcode erzeugt wurde.
Das ist sehr vereinfacht ausgedrückt, aber soll das Problem erläutern.
Es ist so wie mit den Brötchen. Wenn ich 2 unbekannte Komponenten zusammen mische, dann kann ich nicht wissen, aus welcher der 2 Komponenten ein bestimmtes Teilchen gekommen ist.
-
Dann Frag ich anders:
Gibt es irgendwo ein Tools was Assembler in
C/C++ konvertiert?0x0ERROR
-
Das sind Decompiler. Was ist daran so schwer zu verstehen?
-
Es sagt ja keiner dass der Originalcode dabei herauskommt. Aber eben etwas logisch Äquivalentes.
Und wer mal mit Hexrays etwas dekompiliert hat weiß dass es in vielen Fällen sogar recht sauber ist.Ein Programm hat Variablennamen. Diese werden vom Compiler grob gesprochen auf Speicheradressen gemappt. Im Compilat sind die Variablennamen dann nur noch Adressen. Wie die Variable ursprünglich hieß, steht im compilat nicht drin.
Wenn der Decompiler gewisse Funktion kennt (zb C/C++ Standardbibliothek, WinAPI, POSIX etc ...) kann er da einiges sinnvoll erraten. Natürlich ist das nur ein Bruchteil, der reicht aber meistens zum Verständnis.
-
Ethon schrieb:
Wenn der Decompiler gewisse Funktion kennt (zb C/C++ Standardbibliothek, WinAPI, POSIX etc ...) kann er da einiges sinnvoll erraten. Natürlich ist das nur ein Bruchteil, der reicht aber meistens zum Verständnis.
Und wo bekomme ich einen? Ohne 1500€
0x0ERROR
-
Garnicht.
Boomerang ist kostenlos aber nicht wirklich leistungsfähig: http://boomerang.sourceforge.net/
Alternativ kann man mit Google bezüglich Hexrays etwas erreichen ...