Da ich mit C++ angefangen habe vor kurzem, Bioshock Infinite schon durch habe und etwas zum üben brauche wollte ich einen kleinen Trainer schreiben.
Am Anfang habe ich mit der Cheat Engine die Base Pointer aller Werte rausgesucht die ich brauche. (Leben, Schild, Schnelligkeit, Sprunghöhe, Geld, Salze, Lockpicks.. )
Nehmen wir als beispiel den Base Pointer vom Geld:
"BioShockInfinite.exe"+012BCC1C
Offset: 50C
Offset: 398
Cheat Engine zeigt mir an:
"BioShockInfinite.exe"+012BCC1C = 13ECA494
13ECA494 + 398 = 1EBD5400
1EBD5400+ 50C = 1EBD590C
Da ich nicht weiß wie ich in C++ die Pointer mit den Offsets schreibe, nehme ich an das ich für Geld diese Adresse verwenden kann: 1EBD590C
Der Eintrag wäre folgender:
Code:
unsigned adress = 0x1EBD590C;
Um herauszufinden ob ich überhaupt bei der richtigen Adresse bin, habe ich folgenden befehl eingebaut:
Code:
ReadProcessMemory(ProcessHandle,(void*)adress,&value,sizeof(int),0);
Code:
cout << value << endl;
Auch schreiben kann ich nichts.
Code:
int fallsErfolgreich = WriteProcessMemory(ProcessHandle,(LPVOID)adress,&value,sizeof(int),NULL);
if (fallsErfolgreich > 0) {
cout << "Wert geschrieben" << endl;
} else {
cout << "Wert konnte nicht geschrieben werden." << endl;
}
Dann kommt "Wert konnte nicht geschrieben werden."
Ich denke das Problem liegt an der Adresse / dem Pointer.
Die Pointer sind aufjedenfall richtig, nur weiß ich nicht genau wie ich sie in C++ übernehme.
Wäre super wenn jemand weiter weiß.
Vielen Dank
/E: Das gleiche widerfährt mir auch wenn ich die "normale" Adresse von der Munition z.B. nehme:
24ED9EBC
also 0x24ED9EBC, das gleiche Problem.







