WriteProcessMemory

07/27/2013 06:51 Doktor.#1
Hey, also ich versuche schon seit paar Stunden den Wert von einem Base Pointer eines anderen Prozesses via writeProcessMemory zu ändern, aber aus irgendein Grund funktioniert dies nicht.

Code:
PHP Code:
                 GetWindowThreadProcessId(hWnd, &prog_id);
                 
HANDLE hprog OpenProcess(PROCESS_ALL_ACCESSfalseprog_id);

                 
float valueY;
                 
ReadProcessMemory(hprog, (LPVOID)(PointerY), &PointedY4NULL);
                 
PointedY PointedY+OFFY;
                 
ReadProcessMemory(hprog, (LPVOID)(PointedY), &valueY4NULL);


                 
UINT_PTR ptr PointedY;

                 
int value 0;
                 
SIZE_T numWritten 0;


                 if (!
WriteProcessMemory(hprogreinterpret_cast<LPVOID>(ptr), reinterpret_cast<LPCVOID>(value), sizeof(value), &numWritten))
                 {
                     
MessageBoxA(0"Fail""Fail"MB_OK);
                 }
                 else
                 { 
                     
MessageBoxA(0"Changed""Changed"MB_OK);
                 } 
Hoffe jemand weiß Rat, danke. :)
07/27/2013 07:46 Tyrar#2
Gibt ReadProcessMemory valide Werte zurück?
07/27/2013 08:36 Doktor.#3
Jop, ReadProcessMemory kann den Wert korrekt wiedergeben.

e/ Jetzt gehts, Code umgebaut und jetzt funzt^^.

PHP Code:
GetWindowThreadProcessId(hWnd, &prog_id);
                 
HANDLE hprog OpenProcess(PROCESS_ALL_ACCESSfalseprog_id);

                 
float valueY;
                 
ReadProcessMemory(hprog, (LPVOID)(PointerY), &PointedY4NULL);
                 
PointedY PointedY+OFFY;
                 
ReadProcessMemory(hprog, (LPVOID)(PointedY), &valueY4NULL);

                 
float newdataY 40
                 int newdataX 
50;

                 
DWORD newdatasize sizeof(newdataY);

                 if(
WriteProcessMemory(hprog, (LPVOID)PointedY, &newdataYnewdatasizeNULL)){

                     
MessageBoxA(NULL"WriteProcessMemory worked.""Success"MB_OK MB_ICONINFORMATION);

                 } else {

                     
MessageBoxA(NULL"Error cannot WriteProcessMemory!""Error"MB_OK MB_ICONERROR);

                 } 
07/27/2013 18:49 Nightblizard#4
Dir fehlen die Rechte um den Speicher fremder Prozesse zu bearbeiten.

Schau dir mal den Teil unter "Remarks" an: [Only registered and activated users can see links. Click Here To Register...]
07/27/2013 21:52 Doktor.#5
Mit dem Code über deinem Post gehts ja jetzt^^.
08/06/2013 19:43 Q3J5cHQ=#6
maybe there is a protection for writeprocessmemory try to inject dll and use memcpy and and give write acces with virtualprotect