arg_4 rückwertsrechnen..
-
Versteh ich nicht. Der Wert von
arg_4
ist0x0C
, wozu das mit demSP
, was hatSP-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 Endeebp 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 vonarg_4
ist. Die Größe stammt aus demdword 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!