C++ ReadProcessMemory 和 findprocess 不起作用

问题描述 投票:0回答:1

我尝试读取一个名为“韦诺”的游戏的进程内存。但是当我调试它时,bytes_read 和 gold_value 的值都设置为 0。

但是当我进入作弊引擎并粘贴黄金值(0x017EED8)的指针时,它给了我值(252187896)。

所以我猜有问题导致程序无法读取黄金值。

我多次尝试重新启动程序,但每次 gold_value 和 bytes_read 的值都为 0。

代码:

int main(int argc, char** argv) {
    HWND wesnoth_window = FindWindow(0, L"The Battle for Wesnoth - 1.14.9");

    DWORD process_id = 0;
    GetWindowThreadProcessId(wesnoth_window, &process_id);

    HANDLE wesnoth_process = OpenProcess(PROCESS_ALL_ACCESS, true, process_id);

    DWORD gold_value = 0;
    DWORD bytes_read = 0;
    ReadProcessMemory(wesnoth_process, (void*)0x017EED8, &gold_value, 4, &bytes_read);  
    return 0;
}
c++ pointers readprocessmemory cheat-engine
1个回答
0
投票

要读取的地址是相对于目标进程基地址的偏移量。 当调用

ReadProcessMemory()
时,你必须给它一个绝对地址。 因此,您需要检索进程的基地址,然后向其添加所需的偏移量。

© www.soinside.com 2019 - 2024. All rights reserved.