Disassmblieren



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



  • 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


  • Mod

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



  • Und wer mal mit Hexrays etwas dekompiliert hat weiß dass es in vielen Fällen sogar recht sauber ist.

    Ich würde gerne noch was wissen. Weil ich den Beitrag als unregistrierter Verfasst habe, nicht mehr finde und es grade passend finde: Wie funktionieren vereinfacht ausgedrückt, in dem Zusammenhang, Web Anwendungen mit Zugriff auf passwortgeschützte Datenbanken ?



  • Numel9 schrieb:

    Und wer mal mit Hexrays etwas dekompiliert hat weiß dass es in vielen Fällen sogar recht sauber ist.

    Ich würde gerne noch was wissen. Weil ich den Beitrag als unregistrierter Verfasst habe, nicht mehr finde und es grade passend finde: Wie funktionieren vereinfacht ausgedrückt, in dem Zusammenhang, Web Anwendungen mit Zugriff auf passwortgeschützte Datenbanken ?

    Höh? Was für Webanwendungen?



  • @Ethon mit ner Datenbank verbinden die nicht zuhause ist.
    Vermute ich richtig? Der für mich entscheidende Teil davon liegt sozusagen schon auf einem Server also wird auf jedenfall da ausgeführt?? Dann wär's sozusagen vorstellbar, zumindest die Art und Weise (Verbindung) würde mir einleuchten. Im Gegensatz, wenn ein Programm, das sozusagen die Verbindung mit Passwörtern aus der (fast) zugänglichen Quelle herstellt auf jedenfall zumindest doch ein großes Sicherheitsrisiko ist :s 🙂 😕



  • Vermute ich richtig? Der für mich entscheidende Teil davon liegt sozusagen schon auf einem Server also wird auf jedenfall da ausgeführt??

    Ja. Wenn du über Javascript-Webanwendungen redest, dann sieht das in der Regel so aus, dass die Webanwendung eine Anfrage über HTTP an den Server stellt und auf diesem ein PHP-Skript, eine Java-Servlet oder sonstiges anspringt, welches dann eine passende Antwort generiert (von mir aus das Ergebnis einer Datenbankabfrage).



  • ne, Javascript war nicht gemeint. Lg


Anmelden zum Antworten