c++ - 进程内存读取始终返回 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);
}
}
解决方案
似乎您正在int
从流程中读取 an 的值,但将其保存为float
. 尝试将其更改为sizeof(float)
. 另外, make address
LPVOID
,而不是将其强制转换为 void 指针。
如果它仍然失败,还有一件事。您似乎正在阅读的地址似乎太小了。进程中的一个通用地址将是这样的0x7ff6d91c0000
。
此外,您不需要<Process.h>
, 的最后一个地址ReadProcessMemory
应该是nullptr
而不是0
。
推荐阅读
- javascript - React - 有多个模块的名称只是大小写不同
- python - 如何在python中计算不正确的积分?
- javascript - 使用 mobx 在 react-native 的底部标签导航 V5 中显示徽章编号
- c - 为什么这个 pclose() 实现会随着 ECHILD 提前返回,除非在 popen() 之后延迟调用?
- javascript - HTML/CSS Hamburger Menu - 在哪里放置汉堡菜单的 div?
- c - 卡在计算 C/MPI 中数组中大于 x 的数组元素
- android - 我陷入了创建颤振项目的困境
- excel - 插入缺失数据,然后将数据添加到前两列 A 和 B
- android - 三星手机上奇怪的角度问题
- python - Anaconda Jupyter Notebook 突然无法启动内核