首页 > 解决方案 > 进程内存读取始终返回 0

问题描述

我试图读取内存地址(浮点类型)。所以,它在任何情况下都只返回 0(我尝试过 int、float 等内存地址值)。在其他程序(作弊引擎)中一切正常。

#include <windows.h>
#include <process.h>
#include <iostream>

DWORD adresss = 0x00179574;
DWORD pid;
float id;



int main()
{
    HWND game = FindWindowA(0, ("Window name"));
    GetWindowThreadProcessId(game, &pid);
    HANDLE maincs = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    for (;;)
    {
        ReadProcessMemory(maincs, (void*)adresss, &id, sizeof(int), 0);

        std::cout << id << std::endl;
        Sleep(100);
    }
}

标签: c++winapireadprocessmemory

解决方案


似乎您正在int从流程中读取 an 的值,但将其保存为float. 尝试将其更改为sizeof(float). 另外, make address LPVOID,而不是将其强制转换为 void 指针。

如果它仍然失败,还有一件事。您似乎正在阅读的地址似乎太小了。进程中的一个通用地址将是这样的0x7ff6d91c0000

此外,您不需要<Process.h>, 的最后一个地址ReadProcessMemory应该是nullptr而不是0


推荐阅读