如何读取程序的地址并返回地址所拥有的数据的值?我有以下代码读取程序的偏移地址,但我想返回我正在检查的地址的值,用它做一些其他的东西。
inline Mem *Read(DWORD64 address)
{
this->value = address;
return (this->r(0));
}
inline Mem *r(DWORD64 ofs)
{
if (!this || !value)
return 0;
if (!ReadProcessMemory(Handle, (void*)(value + ofs), &value, sizeof(DWORD64), 0))
return 0;
return this;
}
m.Read(0x1428003C0)->r(0x100);
例如,所以我读取了地址0x1428003C0内的偏移量0x100,我知道它保持车速值如何从该地址返回速度值?我想找出速度,并取决于我将应用休息或加速的速度。我试过cout
m.read
命令,我得到了一些我不理解的怪异垃圾。我猜它是我正在阅读的程序的静态内存地址?
答案 0 :(得分:1)
成功返回value
应包含内存的内容。您需要检查文档以确定它是什么格式。
然而,作为第一个猜测,我会尝试:
Mem m;
if (m.Read(0x1428003C0)->r(0x100) )
{
double* val = (double*)(&m.value);
if (val != nullptr)
std::cout << *val << std::endl;
}
答案 1 :(得分:0)
如果你知道你有一个有效的地址,你可以简单地将它转换为正确的指针类型来读取内存。请注意,如果您没有有效的地址,结果是未定义的行为,那么这很危险。您可能只是在阅读垃圾。