【问题标题】:How do I add an offset to an address in c++?如何在 C++ 中为地址添加偏移量?
【发布时间】:2018-03-24 15:04:50
【问题描述】:

int newAmmoValue = 99999; int address = 0x771346D0; int added = address + 0xC4; WriteProcessMemory(handle, (LPVOID)added, &newAmmoValue, sizeof(newAmmoValue), 0);

我正在尝试写入进程内存,但我不知道如何向地址添加偏移量。

这就是我想要实现的目标:https://gyazo.com/5768b622f8c7f66c00e5be68aae42c90

【问题讨论】:

  • 我很困惑。你只是按照你的要求做了...... ???
  • 如何向地址/指针添加偏移量?
  • 在您的示例中,什么对您不起作用?
  • @KikoKaakula Edit 您的问题以及必要的信息。链接的图片也没有解释

标签: c++ pointers offset


【解决方案1】:

你需要取消引用第一个地址,它是一个指针。

uintptr_t FindDMAAddy(HANDLE hProc, uintptr_t ptr, std::vector<unsigned int> offsets)
{
    uintptr_t addr = ptr;
    for (unsigned int i = 0; i < offsets.size(); ++i)
    {
        ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0);
        addr += offsets[i];
    }
    return addr;
}

uintptr_t finalAddr = FindDMAAddy(hProc, 0x771346D0, {0xc4});

int newAmmoValue = 99999;

WriteProcessMemory(handle, (LPVOID)finalAddr, &newAmmoValue, sizeof(newAmmoValue), 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多