Hiho,
brauche etwas Hilfe bei meinem Problem. Habe versuch den Basepointer von Solitär herauszufinden und bin dabei leider gescheitert.
Ohne Pointer, sprich dynamisch, kann ich mit diesem Code prima den Punktestand verändern. Sobald ich jedoch dem vermeintlichen Basepointer die Offsets hinzufüge, hörts dann auf.
C
#include <iostream>
#include <Windows.h>
#define DEBUG
int main() {
HWND solitaire;
DWORD basepointer, id, offset[2], score, value;
HANDLE processHandle;
basepointer = 0x000BAFA8;
offset[1] = 0x50;
offset[2] = 0x14;
while (1) {
solitaire = FindWindow(0, L"Solitär");
if (solitaire) {
std::cout << "Ein aktiver Solitaer Prozess konnte gefunden werden!" << std::endl;
GetWindowThreadProcessId(solitaire, &id);
std::cout << "Process ID: " << id << std::endl;
processHandle = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION | PROCESS_VM_READ, false, id);
ReadProcessMemory(processHandle, (LPVOID)basepointer, &value, sizeof(int), NULL);
#if defined(DEBUG)
std::cout << value << std::endl;
#endif
value += offset[0];
#if defined(DEBUG)
std::cout << value << std::endl;
#endif
ReadProcessMemory(processHandle, (LPVOID)value, &value, sizeof(int), NULL);
#if defined(DEBUG)
std::cout << value << std::endl;
#endif
value += offset[1];
#if defined(DEBUG)
std::cout << value << std::endl;
#endif
ReadProcessMemory(processHandle, (LPVOID)value, &value, sizeof(int), NULL);
std::cout << "Aktueller Punktestand: " << value << std::endl;
std::cout << "Neuer Punktestand: ";
std::cin >> score;
WriteProcessMemory(processHandle, (LPVOID)value, &score, sizeof(int), NULL);
std::cout << "Der Punktestand wurde veraendert." << std::endl << std::endl << "--------------------------" << std::endl << std::endl;
std::cin.get();
} else {
std::cout << "Es konnte kein Solitaer Prozess gefunden werden." << std::endl
<< "Druecke Enter um es erneut zu versuchen." << std::endl;
std::cin.get();
}
}
}
Alles anzeigen
Auf dem Screenshot unten kann man sehen, wie ich auf die Punktestand-Adresse komme. Soweit klappts auch. Nur wie ich das solitaire.exe+BAFA8 in Programmiersprache umsetze, hab ich noch nicht so ganz geschnallt.. irgendwer eine Erklärung?

mfg