Pointer mit Offset schreiben

05/14/2016 10:39 nullExc#1
Morgen!

Und zwar bin ich auf der Suche nach einer einfachen Methode, aus einer exe heraus mittels Read-/WriteProccessMemory einen Pointer inkl. Offset(s) zu schreiben.

SuFu hat zwar einiges ausgespuckt, allerdings entweder für DLLs oder irgendwie - zu umständlich?

[Only registered and activated users can see links. Click Here To Register...]

Auf Grundlage der Referenz hier habe ich für dynamische Adressen folgenden Code:

Code:
int wert = 2345;
int check = WriteProcessMemory(proc, (LPVOID)0x129FEDD8, &wert, (DWORD)sizeof(wert), NULL);
Soweit so gut, funktioniert ja auch.

Der Pointer zu selbiger Adresse sieht wie folgt aus:

Quote:
BejeweledTwist.exe+511294 [OFFSET: 0x168]
Und an dem Punkt komme ich ehrlich gesagt nicht mehr mit.
Müsste man nicht einfach theoretisch mittels ReadProcessMemory erst den Wert der Adresse 0x511294 mit ihrem Offset 0x168 ermitteln und dann mit WriteProcessMemory den ermittelten Wert (da der Pointer ja die dynamische Addy beinhaltet) beschreiben?
Mich verwirrt da allerdings die genaue Vorgehensweise, weil ich im Internet immer (für mich scheinbar) komplizierte Methoden sehe...

Wäre dankbar für eine weitere Hilfe!

LG
05/14/2016 11:18 Dr. Coxxy#2
Probiers doch einfach aus :P

tipp: kannst in cheatengine ja einfach mal die steps per hand durchgehen und testen
05/14/2016 12:39 nullExc#3
Ja, aber ich habe das ja "extern" über eine exe und nicht als DLL laufen, also werde ich ja schon mal
Quote:
GetModuleHandle("BejeweledTwist.exe") + 0x511294;
um die Base zu bekommen nicht nutzen können.
Und die muss ich ja irgendwie bekommen, nur weiß ich absolut nicht wie man das lösen kann...
05/14/2016 12:42 Jeoni#4
Ist [Only registered and activated users can see links. Click Here To Register...] beschrieben. Etwaige unbekannte Winapi-Funktionen und -strukturen können auf MSDN nachgeschlagen werden.
Mit freundlichen Grüßen
Jeoni
05/14/2016 15:07 nullExc#5
Vielen, vielen Dank!! Base-Addy wird korrekt ausgegeben und kann jetzt problemlos mit dem statischen Offset 0x511294 mittels ReadProcessMemory() verrechnet werden und dann wird nach hinzuaddieren von 0x168 und erneutem RPM() der daraus berechneten Addy der richtige Wert angezeigt.
WriteProcessMemory() funktioniert damit dann auch problemlos.

Klasse, schönen Tag euch noch! :)