[C++]ReadProcessMemory Problem beim vergleichen von Werten an bestimmter Adresse.

Maila

Grünschnabel
Hallo liebe Community :o)

Ich versuche mich seit längerem daran den Speicher von einem Prozess an einer bestimmten Stelle auszulesen und diesen Wert zu vergleichen.
Ist der Wert gleich einem Vorgegebenen soll davor ein anderer Wert eingetragen werden.

Mit Olydbg habe ich nach der Stelle die ich verändern möchte zwei Hexadezimalwerte gefunden die immer gleich sind, darüber möchte ich also die Adresse finden an der die Werte geändert werden sollen.
Die zu verändernde Adresse ist immer zwischen 0x070027C0 und 0x07FF27C0, es gibt also 256 mögliche Adressen.
An der Stelle 07XX27C2 (also zwei Adressen weiter) Steht dann immer der Wert "AD" .
Ich möchte zuerst nach diesem "AD" suchen und dann zwei Adressen vorher Werte einfügen, ein 01 an 0x07XX27C0 und noch ein 01 an 0x07XX27C1

Hier mal eine Erläuterung zu meinem code der nicht funktioniert.
Code:
DWORD uiTempAddresse = 0x070027C2;
DWORD toChange1 = 0x070027C0;
DWORD toChange2 = 0x070027C1;
BYTE value = 0xAD ;
BYTE byResult = 0 ;

//256 moegliche Adressen nach einem Wert durchsuchen, wenn gleich dem Value -> Write
	for (int i = 0; i < 256; i++)
	{
		 ReadProcessMemory(GetCurrentProcess(),(LPVOID)uiTempAddresse, &byResult,sizeof(byResult), NULL);
//Vergleichen
		 if(byResult == value)
		 {
//Wenn an der Stelle 0xAD steht dann davor 0x01 0x01 einfügen
			WriteProcessMemory(GetCurrentProcess(),reinterpret_cast<void*>(ggAdress1), "\x01", sizeof(BYTE), NULL);
			WriteProcessMemory(GetCurrentProcess(), reinterpret_cast<void*>(ggAdress2), "\x01", sizeof(BYTE), NULL);
			goto _wertgeaendert;
		 }
//Wen nicht gefunden, Adresse erhoehen bsp. 0x070027C0 zu 0x070127C0
 	 uiTempAddresse = uiTempAddresse + 0x00010000;
	 ggAdress1 = toChane1+ 0x00010000;
	 ggAdress2 = toChange2 + 0x00010000;
	}

Beim compilieren gibt es keine Fehler, aber der Wert wird nicht verändert.
Das ganze läuft in einem Thread den ich per dll-injection an den Zielprozess gebe.
WriteProcessMemory funktionniert sonst im Thread auch. Ich vermute das es was mit den Datentypen beim REadProcessMemory zu tun hat.

Bitte helft mir auf die Sprünge.

LG Maila
 
Zuletzt bearbeitet:
Zurück