J
So, hier ist der Code, den ich noch posten wollte:
#include <windows.h>
int main()
{
HANDLE hProcess;
DWORD dwProcessID = 1234;
DWORD dwData;
LPVOID pHealth = (void*)(0x12345678);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcessID);
ReadProcessMemory(hProcess, pHealth, (LPVOID)&dwData, sizeof(DWORD), NULL);
while(true)
{
if(!WriteProcessMemory(hProcess, pHealth, (LPVOID)&dwData, sizeof(DWORD), NULL))break;
Sleep(100);
}
CloseHandle(hProcess);
}
In zeile 12 wird der Wert, auf den pHealth zeigt, gesichert.
In der Schleife wird der Wert dann kontinuierlich in den Prozess an die stelle geschrieben, auf die pHealth zeigt. Es wird also sozusagen ein "Backup" von dem Leben erstellt.
Natürlich muss dwProcessID noch die Prozess-ID des zu manipulierenden Prozesses beinhalten, bevor du OpenProcess aufrufst.
Diese Lösung funktioniert nur, wenn der Zeiger auch an die richtige Stelle verweist. Ob deine Werte gültig sind, weiss ich nicht.
Das Programm muss dann parallel zu dem Spiel laufen, allerdings darf das "Backup" des Lebens erst gemacht werden, wenn das Level gerade beginnt, da in der Regel das Spielerobjekt erst dann erstellt wird.
Ich hoffe, ich konnte dir weiterhelfen.
MfG, Jochen