Wie findet man heraus wo der stackpointer gesetzt wird? HELP!



  • Hallo,
    Ist vieleicht nicht der passenste Header, sorry.

    Also ich habe da mal ein Problem, ich benutze OllyDbg v 1.10 um ein bisschen Code eines Spieles nach zu vollziehen( suche eine statische Adresse ), mit Schema F:

    mov [eax+24], value
          |
          v
          mov eax, [ecx+8]
                     |
                     v
                     and ecx, ebx
                               |
                               v
                               ...
    

    Letzt endlich komme ich dann auf folgenden Ausdruck:
    // Funktion xy
    sub esp, 1C
    mov edi, [esp+24]
    ...

    ESP wird gesucht, hm... wie aber finde ich heraus wo esp gesetzt wird?
    Hoffe ihr könnt mir da helfen.

    Gruß Tobi.



  • Hallo,

    ESP wird gesucht, hm... wie aber finde ich heraus wo esp gesetzt wird?

    ESP wird von Windows gesetzt, sobald du die ausführbare Datei startest.
    Und dieses Stück Code von dir

    sub esp, 1C 
    mov edi, [esp+24]
    

    scheint genau die Stelle zu sein, wo die Funktion lokal einen Stackframe von 1Ch Bytes reserviert (sub esp, 1C). In der zweiten Zeile (mov edi, [esp+24]) wird auf einen der Parameter der Funktion zugegriefen.

    suche eine statische Adresse

    Welche statische Adresse suchst du denn, nur so aus reiner Neugier? Und wozu?
    Das mit dem Stackframe ist die falsche Stelle, denn am Ende der Funktion wird er sicherlich freigegeben.

    Hoffe ihr könnt mir da helfen.

    Ich denke, keiner kann dir da bei der Suche helfen. Das ja auch Zeitverschwendung. Mein Rat, lass es sein, geniesse die Ferien, und spiel lieber das Spiel zu Ende...;)



  • Naaa....
    1. Das Spiel heisst Warcraft3
    2. Spiel ich es kaum
    3. meine interessen liegen in Richtung Software Engineering

    Muss doch irgendwo im Code ne Stelle geben die so aus sieht:
    mov esp, eax
    oder so?

    Gruß Tobi.



  • Hm, das hat nicht zufaellig etwas hiermit (oder hiermit) zu tun?
    Wie kommst du darauf, dass du eine andere Antwort bekommst, wenn du einfach mal ein halbes Jahr spaeter das gleiche nochmal fragst? 😕

    Achja, hierauf

    T0bi schrieb:

    Muss doch irgendwo im Code ne Stelle geben die so aus sieht:
    mov esp, eax
    oder so?

    hat abc.w schon geantwortet.



  • Nunja anders, als vorm halben Jahr, weiß ich zumindest nun das ich eine "complexe adresse" suche und ich bin mir ziemlich sicher das dieser Weg:
    [[[[ESP]+0x28]+0x14]+0x78]+0x04
    nicht falsch sein kann, denn jedes mal, wenn der Weg da genommen wurde, änderte sich auch der Wert im Speicher, oder hat das damit nix zu tun?

    Gruß Tobi.



  • Ich weiß ja nicht ob es evtl. hilft, aber der Inhalt von ESP verändert sich an dieser stelle nicht er bleibt immer 0x0012FAF0. Wenn ich aber jetzt mit einem Memory Editor danach suche findet er nix.


Anmelden zum Antworten