:confused: Disassemblierten Code verstehen,...



  • Hallo,

    ich habe da so eine Frage, bei der man mir vielleicht helfen kann.
    Ich programmiere nun schon einige Jahre(C/C++,.NET, etc) und verstehe auch
    Sprachen sehr schnell, aber mit dem Assembler habe ich immer so meine Probleme.
    Ich weiss, was Stacks, Heaps, Frames, Register und All das Zeug sind,
    aber was ich mal gerne lernen würde, wäre es disassemblierten code
    zu verstehen. Ich habe da keine Ahnung, wo ich ansetzten soll! Was
    ist der beste Weg, das disassemblieren zu lernen? Ok, ich kann mir
    den einen Teil schon beantworten: Ich muss Assemblieren lernen um mit
    dem Disassmebler arbeiten zu können. Aber wo soll ich auch hier anfangen?
    Warum ich das Frage. Meistens habe ich keine Debug-Symbole für Programme,
    die mir abstürzen, oder irgendwo eingesetzt werden und dann stehe ich immer
    vor lauter Assembler Code, den ich von z.B. drwtsn32.exe agezeigt bekomme,
    oder einem anderen Debugger. Ich will den Fehler finden, muss es ja auch
    meistens, aber wie kann ich das am besten lernen? Puffer überläufe und der
    ganze Kram ind mir alle geläufig, aber wie "lese" ich das in asm?

    Grüße

    UDC Member No.4



  • Weis nicht, ob ich das so laut sagen darf, aber versuch dich daoch erst mal an ein paar freien CrackMes/KnackMichen, davon lernt man schon was.



  • Hrmpf! schrieb:

    Weis nicht, ob ich das so laut sagen darf, aber versuch dich daoch erst mal an ein paar freien CrackMes/KnackMichen, davon lernt man schon was.

    Hallo Unbekannter,

    das war eigentlich nicht damit gemeint. Es geht hier um die Fehleranalyse
    nicht um das "cracken" von Code mit Schlüsseln, ID, Codes, etc. Ich will
    richtig "disassemblieren" lernen und gleich den assembler mit dazu. Es geht
    mir aber vorrangig um das verstehen von disassembliertem Code bei
    Fehlern in Programmen,...

    Grüße,...



  • Keine Ahnung, was du genau vor hast, aber ich koennte mir vorstellen, dass es dir darum geht, allgemein irgendwie Stellen in deinem Hochsprachencode mit Hilfe von irgendwelchen Disassemblerauszuegen wieder zu finden.
    Leider muss ich dich da enttaeuschen - AFAIK gibt es dafuer kein Patentrezept, das man lernen koennte. Du kannst dich an Systemaufrufen orientieren und mit viel Erfahrung koenntest du gewisse Hochsprachenkonstrukte wiedererkennen (in optimiertem Code wird das nochmal 'ne Ecke schwieriger), aber sehr viel mehr ist mit einem toten Stueck dump nicht anzufangen. In einem Debugger koenntest du vielleicht noch Schluesse aus der call-history, und gespeicherten Daten ziehen, und ein bisschen umher browsen, aber das war's dann eigentlich auch schon.
    Ansonsten kann ich dich allgemein zum Assembler lernen erstmal nur auf die FAQ verweisen und dir empfehlen, bei Gelegenheit deine Debugging-Methoden zu ueberdenken.



  • hi

    Ich denk du solltest zuerst Assembler perfekt können und die Syscalls des Betriebsystems. Linux syscalls, windows winapi. Als nächtes solltest auch die amd und intel specifications lernen. Dann kleine apps in hochsprachen entwickeln, assembler code anschauen und dann lernen wie diverse compiler ein problem lösen. Mit sehr viel Erfahrung, kannst du so mal gut werden. Was denkt ihr, bzw. nuobu t.?

    smalltip


Anmelden zum Antworten