如何找到当前存储器地址的值?

时间:2015-03-31 03:27:13

标签: c++ visual-studio

如何读取程序的地址并返回地址所拥有的数据的值?我有以下代码读取程序的偏移地址,但我想返回我正在检查的地址的值,用它做一些其他的东西。

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命令,我得到了一些我不理解的怪异垃圾。我猜它是我正在阅读的程序的静态内存地址?

2 个答案:

答案 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)

如果你知道你有一个有效的地址,你可以简单地将它转换为正确的指针类型来读取内存。请注意,如果您没有有效的地址,结果是未定义的行为,那么这很危险。您可能只是在阅读垃圾。