Я новичок в C ++ и
Я пытаюсь получить значение здоровья игрока в CS: GO, но я столкнулся с некоторой проблемой. С CheatEngine я обнаружил, что база игрока равна «client_panorama.dll» + 0xCBD6B4, а смещение значения здоровья равно 0x100. Это прекрасно работает, но у меня есть проблемы с преобразованием этого в C ++.
Я использую DLL-инъекцию, но в моей внедренной DLL я не могу получить те же адреса, что и в CheatEngine.
Изображение CE: https://i.imgur.com/TlUwZV3.jpg
Я искал решение на нескольких форумах, но не смог его найти. Это моя попытка кода:
DWORD dwClientBase = (DWORD)GetModuleHandleA((LPCSTR)"client_panorama.dll");
DWORD dwClientBaseOffset = 0xCBD6B4;
DWORD dwOffset = 0x100;
DWORD dwplayerBase = *(DWORD *)(dwClientBase + dwClientBaseOffset);
Но с этой попыткой я не получаю тот же адрес PlayerBase, как в Cheatengine.
Backround: я не пытаюсь взломать, а научиться извлекать информацию из реальной игры. В будущем я хочу попробовать программировать AI для реальных игр, и поэтому очень полезно, если у вас есть больше информации, чем просто визуальный вывод игры.
Спасибо за помощь,
Varsius
Ваш код правильный. Если ваш код выполняется правильно, тогда dwplayerBase будет равен адресу объекта проигрывателя.
Если вы хотите получить адрес здоровья, вам нужно будет добавить dwOffset. Я полагаю, что вы в замешательстве, потому что вы ожидали адрес здоровья. Чтобы получить его, просто добавьте эту строку:
DWORD healthAddr = dwplayerBase + dwOffset;
Других решений пока нет …