我试图从指针地址+偏移量中读取一个值,但没有得到正确的结果。
我有以下(相关的)代码:
uintptr_t moduleBase = GetModuleBaseAddress(procId, L"ProgramImReading.exe");
uintptr_t pObjectManager = moduleBase + 0x237CB28;
std::vector<unsigned int> countOffset = { 0x20 };
uintptr_t totalObjects = FindDMAAddy(hProcess, pObjectManager, countOffset);
std::cout << "Current objects = " << totalObjects << std::endl;
查找DMAAddy:
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;
}
由于某种原因,这将不起作用。我可以通过打开作弊引擎并输入 GameAdress + Pointer 来确认地址是否正确,然后设置偏移量 + 20 并获得正确的值。
当我运行上面的代码时,我得到一个很长的随机值“2596411228208”
我还可以找到指针指向的当前动态地址并直接从该地址读取,但是当我尝试从指针+偏移量读取时它无法正常工作。