Pointer aus mov eax,[edx+eax*4+48] <<

04/24/2015 12:18 .Fail´#1
Hallo,

ich brauch die Baseadress von einem Multilevel Pointer, komme aber an dieser Stelle nicht weiter, da ich nicht weiß was folgender Code bedeutet:

mov eax,[edx+eax*4+48] <<

Was genau findet in den eckigen Klammern statt? Ich kenne es bis jetzt nur mit einem Register + Offset, aber nicht mit Addition mit einem anderen Register..

Wäre nett falls jemand antworten könnte :)
04/24/2015 13:38 snow#2
Das ist eine einfache Addition.

Übersetzt sieht das für mich so aus, dass edx die Basis-Adresse ist, die 48 ein statisches Offset (ist das Hex oder Dezimal?) und eax ist ein Index, die Multiplikation mit 4 dürfte wegen der Größe des Datentypen sein (4 Byte).

Das könnte z.B. eine Struktur mit einem Array voller Pointer am Offset 48 sein. Je nach Index wird dann auf den entsprechenden Eintrag im Array zugegriffen.

Könnte z.B. so aussehen:

struct foo
{
char bar[48]; // unknown
other_struct *foobar[size];
};

und in Verwendung:

foo *ptr = reinterpret_cast<foo *>(address);
other_struct *other = ptr->foobar[index];