29.09.2010, 14:48
(Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2010, 15:09 von iNvIcTUs oRCuS.)
(29.09.2010, 03:31)Chris schrieb: @Don KrawalloDas mit den FLOAT Werten war auch nur rein informativ.
Warum falsch? Wie ich sehn kann kommt ehr bei fstp dword ptr [ecx+08] raus! u diese "- 08" der adresse die er gefunden hat! Landet er bei der base adresse. Und keine ahnung was ihr immer mit euren float werten habt dabei! Pointer liegen immer im 4byte bereich da hat sich nie was dran geändert.
Das was Du meinst ist nach einem Wert eines Registers (ECX) zudem der Wert 0x8h hinzuaddiert wurde zu suchen.
Mal ein anderes Beispiel... Um das zu verdeutlichen... Gesucht wird nach dem HEX-Wert 0x400500.
Nehmen wir an der Befehl zum Aufrufen der Addresse lautet wie folgt:
fstp dword ptr [ecx+500]
Du sagtest nun er solle von dem HEX-Wert den durch den Befehl hinzuaddierten Wert abziehen. In diesem Falle 0x500h.
0x400500 - 0x500 = 0x400000.
Und was bedeutet das nun??? Du hast einen vermeintlichen Pointer der im meisten aller Fälle auf den Dateianfang (Anfangszeichen MZ) zeigt. So kannst Du nicht zum Ziel kommen.
Stell dir vor der Befehl würde z.b. so lauten:
fstp dword ptr [ecx+1000]
dann kommst Du bei 0x3FF500 raus. Da aber dieser Speicherbereich vielleicht für das Spiel nicht existiert kann das niemals der richtige Pointer sein. D.h. Du könntest diesen HEX-Wert im Speicher des Spiels finden, das stimmt, ist dann aber nicht das was gesucht wird.
Don Krawallo
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...