簡體   English   中英

我無法從 memory 讀取值

[英]I can't read values from memory

所以我試圖從游戲中讀取一些值。 我可以通過作弊引擎成功讀取游戲中的數據。 但是當我嘗試在我的代碼中輸入值並接收值時,我只得到 0。但是,當我嘗試對其他一些程序做同樣的事情時,它可以正常工作。 這是代碼

#include <iostream>
#include <Windows.h>
#include <string>

DWORD pid;
DWORD adr = 0x23CAE074AA8;
int my_value;

int main(){

    HWND hWnd = FindWindowA(0, ("game"));

    GetWindowThreadProcessId(hWnd, &pid);
    std::cout << pid << std::endl;
    HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, pid);
    while(1){
        ReadProcessMemory(pHandle, (LPVOID)adr, &my_value, sizeof(my_value),0);
        std::cout << my_value << std::endl;
    }
}

我認為問題是我的地址的長度。 其他節目地址的長度較短。 它還給出了這些錯誤:

Description Resource    Path    Location    Type
cast to pointer from integer of different size [-Wint-to-pointer-cast]  read_memory.cpp /read_memory/src    line 17 C/C++ Problem
Description Resource    Path    Location    Type
overflow in conversion from 'long long int' to 'LONG' {aka 'long int'} changes value from '2459641006760' to '-1375253848' [-Woverflow] read_memory.cpp /read_memory/src    line 6  C/C++ Problem

正如消息中所說, DWORD似乎太小而無法在您的環境中存儲地址。

您應該使用 header cstdint中的uintptr_t來存儲用作指針的整數。

#include <iostream>
#include <Windows.h>
#include <string>
#include <cstdint> // add this

DWORD pid;
uintptr_t adr = 0x23CAE074AA8; // change type

// ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM