arg_4 rückwertsrechnen..



  • Versteh ich nicht. Der Wert von arg_4 ist 0x0C, wozu das mit dem SP, was hat SP-0x0C damit zu tun?



  • @Bashar Dann habe ich IDA und die Anzeige falsch verstanden. Kann auch gut sein.



  • Es kann ja auch sein, dass ich es falsch verstehe, ich kenn ja IDA nicht näher, allerdings ergibt es doch auch nur so Sinn, oder? 🙂



  • thx all,
    ok klingt ihrgendwie logisch,
    Im ersten Block der Funktion wird als erstes...

    arg_0 dword ptr 8
    arg_4 dword ptr 0Ch
    arg_8 dword ptr 10h

    ... angelegt, sprich einfach auf den Stafel geschissen. mit esp -0Ch sehe ich arg_4. usw

    Aber die Klammer macht mir noch Kummer 😞
    mov esi, [ebp+arg_4]

    Zitat aus Assembler Lowlevel:
    Speicherzugriffe werden mit eckigen Klammern angedeutet. <asm>mov ax, [ebp] ; lädt ein word (2 Byte Zahl) von der Adresse in ebp nach ax
    Zitat Ende

    ebp Adresse + arg_4 Adresse wird Addiert?! ähhh Das macht doch keinen Sinn?



  • @tomycat2009 sagte in arg_4 rückwertsrechnen..:

    ebp Adresse + arg_4 Adresse wird Addiert?! ähhh Das macht doch keinen Sinn?

    Stell dir vor, du hast dein Lager ("Basislager") im Wald bei der 17. Tanne aufgeschlagen. Deine Freundin wohnt eine Tanne weiter, Tanne 18 - und ihre Eltern wohnen noch ein Tanne weiter, also an der 19. Tanne. Eines Tages beschließt ihr umzuziehen, aber eure generelle Wohnsituation soll gleich bleiben, d.h. deine Freundin soll weiterhin 1 Tanne weiter entfernt wohnen und ihre Eltern noch eine Tanne weiter weg.
    Wenn nun Fremde die Eltern deiner Freundin besuchen wollen, müssen sie erst wissen, wo du dein Basislager aufgeschlagen hast und dann einfach 2 Tannen weiter gehen.
    So ist das hier auch. Bei jedem Funktionsaufruf verlegt ihr das Basislager. Aber die Distanz untereinander bleibt gleich. arg_Freundin=1 ist einfach nur die Distanz vom "Basislager" ebp zu deiner Freundin und arg_Eltern_der_Freundin=2 ist auch fest. Daher sind die Arg_x-Zahlen hier auch so klein, die Daten liegen nur "etwas" neben dem Basislager, welches selbst "irgendwo" im Wald liegt.

    Dein Ursprungsvorhaben scheitert, weil du nun aus den Eigenschaften deiner Freundin (wie z.B. Haarfarbe) und der Lagerposition die Distanz zu dir berechnen willst. Die Distanz hat damit aber nichts zu tun.

    PS: mal einen Waldvergleich gewählt, da Autovergleiche ja immer hinken 😉



  • thx,
    [ebp + arg_4] ist gleichzusetzen mit [ebp + 4], wenn die arg_4 4 Byte groß ist. Es geht nur um den Speicherort, mehr nicht? Ist das so, dann habe ich es verstanden. :--)



  • @tomycat2009 sagte in arg_4 rückwertsrechnen..:

    [ebp + arg_4] ist gleichzusetzen mit [ebp + 4], wenn die arg_4 4 Byte groß ist. Es geht nur um den Speicherort, mehr nicht? Ist das so, dann habe ich es verstanden. :--)

    Naja, es ist gleichzusetzen mit [ebp+12], weil 12 bzw. 0x0C nunmal der Wert von arg_4 ist. Die Größe stammt aus dem dword ptr und ... die Größe ist etwas anderers als der Speicherort.



  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!

Anmelden zum Antworten