所以,我一直试图从动态地址中获取一段时间的值,结果是https://gyazo.com/82ef5920d01c4452840764111c60e046当我的健康值为100时,
这是我到目前为止尝试做的事情,我试着读取基本地址将其存储在temp中,然后将temp + HealthOffset再次读入temp,然后我将temp读入整数并尝试打印它。当我试着写信给它时,它不起作用
#include <Windows.h>
#include <iostream >
#define base 0x0050f4f4
using namespace std;
int main()
{
DWORD healthoffset[] = { 0xF8 };
HWND hWnd = FindWindow(NULL, "AssaultCube");
DWORD iProc = GetWindowThreadProcessId(hWnd, 0);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, iProc);
DWORD temp;
int storage;
ReadProcessMemory(hProc, (LPCVOID)base, &temp, sizeof(temp), 0);
ReadProcessMemory(hProc, (LPCVOID)(temp + healthoffset[1]), &temp, sizeof(temp), 0);
ReadProcessMemory(hProc, (LPCVOID)temp, &storage, sizeof(int), 0);
cout << storage;
system("PAUSE");
return 0;
}
答案 0 :(得分:1)
也许healthoffset [1]必须是healthoffset [0]。
这是一个长度为1的数组,您可以访问索引为0的第一个元素。
答案 1 :(得分:1)
正确的代码是:
#include <Windows.h>
#include <iostream >
#define base 0x0050f4f4
using namespace std;
int main()
{
DWORD healthoffset[] = { 0xF8 };
HWND hWnd = FindWindow(NULL, "AssaultCube");
DWORD iProc = GetWindowThreadProcessId(hWnd, 0);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, iProc);
DWORD temp;
int storage;
ReadProcessMemory(hProc, (LPCVOID)base, &temp, sizeof(temp), 0);
ReadProcessMemory(hProc, (LPCVOID)(temp + healthoffset), &storage, sizeof(storage), 0);
cout << storage;
system("PAUSE");
return 0;
}