我如何使用基地址来获得动态?

时间:2015-11-21 18:11:20

标签: c++ windows pointers memory

所以,我一直试图从动态地址中获取一段时间的值,结果是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;
 }

2 个答案:

答案 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;
 }