B
Ich bin mir jetzt nicht sicher ob PROCESS_VM_WRITE auch PROCESS_VM_READ beinhaltet; wenn man dem MSDN Glauben schenkt, dann solltest du das auch noch mit in OpenProcess einfügen (PROCESS_VM_READ | PROCESS_VM_WRITE).
Entweder war es so gemeint, dass unter base pointer+offset und base pointer+offset2 zwei Pointer sind, die auf deine gewünschte Adresse zeigen, oder der base pointer auf eine Adresse zeigt die dann mit offset bzw. offset2 addiert wird.
address2 = address2+offset ;
address2 = address2+offset2 ;
Du adddierst zweimal auf die gleiche Adresse, wobei das erste Ergebnisse quasi einfach überschrieben wird, da ich nicht glaube, dass zwei verschiedene Zahlen auf den base pointer addiert werden müssen, dann hätte man ja auch nur eine Zahl nehmen können; die haben wohl einen anderen Grund.
Das Wahrscheinlichste ist wohl, dass zwei verschiedene Offsets für bestimmte Zwecke genutzt werden, um die zu bekommen - mit Ansatz der zweiten Methode - wäre folgender Code hilfreich:
DWORD dwBasePointer = 0xF32848,
dwOffset = 0,
dwTargetOffset = 0,
dwTargetOffset2 = 0;
ReadProcessMemory( hOpenedProcess, (LPCVOID)dwBasePointer, &dwOffset, 4, NULL );
dwTargetOffset = dwOffset + 0x10;
dwTargetOffset2 = dwOffset + 0x2C;
Wo hast du denn die Info her, dass man das addieren soll? Wäre wohl besser, wenn wir das auch sehen könnten.
Im Übrigen steht DWORD für unsigned long, daher brauchste das nicht unbedingt auszuschreiben
Du schreibst, dass es mit Autoit geht? Naja, dann ist wahrscheinlich nur das fehlende Recht bei OpenProcess daran Schuld, dass es nicht funktioniert.
Viel Spaß