Disassmblieren



  • Hallo,
    ich wollte fragen wie ich mit gcc ein Programm unter Linux disassamblieren
    und dann in C/C++ Code konvertiere?
    Ich hab dies hier und dies gefunden. Wie kann ich das Ergebniss in Assembler nun zu C/C++ umwandeln?

    0x0ERROR


  • Mod

    Du suchst einen Decompiler. Erwarte aber nicht zu viel von dem Ergebnis, insbesondere nichts lesbares.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • SeppJ schrieb:

    Du suchst einen Decompiler. Erwarte aber nicht zu viel von dem Ergebnis, insbesondere nichts lesbares.

    Wo finde ich einen Decompiler bzw. geht es nicht auch mit gcc?

    0x0ERROR



  • 0x0ERROR schrieb:

    SeppJ schrieb:

    Du suchst einen Decompiler. Erwarte aber nicht zu viel von dem Ergebnis, insbesondere nichts lesbares.

    Wo finde ich einen Decompiler bzw. geht es nicht auch mit gcc?

    0x0ERROR

    gcc ist ein Compiler, kein Decompiler!


  • Mod

    0x0ERROR schrieb:

    Wo finde ich einen Decompiler

    Wie findest du denn andere Sachen?

    Ich vermute übrigens mal ganz stark, dass das sowieso nichts wird, was immer du überhaupt vor hast. Deine Fragen lassen erkennen, dass du nicht die Hintergrundkenntnisse hast, die jemand haben müsste, um einen sinnvoll einsetzen zu können. Das fängt damit an, dass du Fachbegriffe reihenweise falsch benutzt und endet darin, dass du mit einem gegebenen Stichwort nicht in der Lage warst, dir deine Frage selber zu beantworten. Klingt hart, aber solche Fragen kommen hier oft, man kann daher gut einschätzen, ob das was wird oder nicht. Daher: Was hast du überhaupt vor? Dir kann sicherlich anders besser geholfen werden, wenn wir dies wüssten.



  • Programmierfachprofi schrieb:

    gcc ist ein Compiler, kein Decompiler!

    Ich weiß.
    Allerdings lässt sich der Code über GCC zurück in
    Assemblercode deassemblieren.(Siehe hier)
    Und da man beim Compillern auch den Code in Assembler anzeigen kann
    müsste man auch Assembler zu C/C++ konvertieren.

    0x0ERROR


  • Mod

    0x0ERROR schrieb:

    Und da man beim Compillern auch den Code in Assembler anzeigen kann
    müsste man auch Assembler zu C/C++ konvertieren.

    Schwerer Logikfehler. Teilweise Ähnlichkeit zwischen verschiedenen Vorgängen impliziert keine Gleichheit. Einzelne Brötchen kann man in einen Brötchenstapel umwandeln; einen Brötchenstapel kann man in einzelne Brötchen umwandeln; Wasser und Mehl kann man in einzelne Brötchen umwandeln. Folgt nicht: Einzelne Brötchen kann man in Wasser und Mehl umwandeln.



  • 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! 🤡


  • Mod

    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.


  • Mod

    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. 🙂

    http://www.hex-rays.com/products/decompiler/index.shtml



  • 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-gcc

    Btw. 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 program

    Should 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.


  • Mod

    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).


Anmelden zum Antworten