habe mir hier mal ein kleines Test-Script zusammengebaut und versuche seit einiger Zeit Werte aus einem Spiel auszulesen. Leider bekomme ich nie den Wert heraus, den die Adresse eigentlich hat.
Kann mir wer sagen ob ich etwas übersehen habe!?
PHP Code:
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <TlHelp32.h>
#include <tchar.h>
#include <atlconv.h>
using namespace std;
DWORD dwGetModuleBaseAddress(DWORD dwProcessIdentifier, TCHAR *lpszModuleName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessIdentifier);
DWORD dwModuleBaseAddress = 0;
if(hSnapshot != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 ModuleEntry32 = {0};
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
if(Module32First(hSnapshot, &ModuleEntry32))
{
do
{
if(_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0)
{
dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
break;
}
} while(Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
}
return dwModuleBaseAddress;
}
int main()
{
// Fenstername einlesen
char windowName[100] = "Game";
HWND window = FindWindow(0, _T(windowName));
if(window == 0)
{
while(true)
{
cout << "Fenster \"" << windowName << "\" nicht gefunden!\n";
cout << "Gib einen neuen Fenster-Namen ein!\n";
cin.getline(windowName, sizeof(windowName));
LPCWSTR lpcwstr_string = A2BSTR(windowName);
if(HWND window = FindWindow(0, _T(windowName)))
{
cout << "Fenstername: " << windowName << "\n";
break;
}
}
}
else
{
cout << "Fenstername:\t" << windowName << "\n";
}
DWORD pID = 0;
GetWindowThreadProcessId(window, &pID);
DWORD baseAddr = dwGetModuleBaseAddress(pID, _T("Albion-Online.exe"));
cout << "pID:\t\t" << pID << " - " << &pID << "\n";
cout << "baseAddr:\t" << baseAddr << " - " << &baseAddr << "\n";
DWORD staticOffset = 0x14fe8ca8;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
cout << "handle:\t\t" << handle << " - " << &handle << "\n";
while(true)
{
DWORD value = baseAddr + staticOffset;
DWORD numBytesRead;
ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
value += 0x28;
ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
value += 0x1c;
ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
value += 0x38;
//ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
//value += 0x710;
//ReadProcessMemory(handle, (LPCVOID)value, &value, sizeof(DWORD), &numBytesRead);
//value += 0x38c;
float result;
ReadProcessMemory(handle, (LPCVOID)value, &result, sizeof(float), &numBytesRead);
cout << result << endl;
Sleep(5000);
}
CloseHandle(handle);
}