Я пытаюсь прочитать значение из адреса указателя + смещение и не получаю правильный результат.
У меня есть следующие (соответствующие части) кода:
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;
FindDMAAddy:
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"
Я также могу найти текущий динамический адрес c, на который указывает указатель, и считывать непосредственно с этого адреса, но когда я пытаюсь прочитать с указателя + смещение, он не работает правильно.