(Впервые пишу статью, так что критика приветствуется. Многие наверное знают этот способ.)
Итак, для начала нам нужно зайти в свойства игры в Steam Параметры запуска и прописать –insecure. «-insecure» отключает VAC, и мы можем спокойно начинать взлом, не боясь, что нас забанят. Не забудьте удалить это иначе не пустит на сервера.
В поиске мы должны будем найти игроков, которые отражаются на карте в момент приближения к ним. Искать лучше тип «Byte» 1 видим противника на радаре, 0 не видим.
У меня нашелся 1 адрес.
Выделяем адрес и нажимаем F5 или ПКМ по адресу и Find out what accesses this address.
Вызывается всего одна инструкция. Что же она делает? Она записывает в 8 битный регистр AL значение 1 или 0 в зависимости от того виден ли противник на радаре или нет. Так же видим регистры EDI и ESI.ESI используется как адрес источника. Значит это базовый адрес. EDI- адрес назначения в этой инструкции и по его значению видим, что это ID игрока.
Структура инструкции выглядит следующим образом [Базовый адрес + ID игрока + 0xD8D] и пишется в нее значение типа BYTE. Что с этим можно сделать? Например запустить цикл с перебором всех игроков.
void DrawingPlayers() {
DWORD esi;
bool enable = true;
ReadProcessMemory(hProcess, (LPVOID)(ClientDll + 0x4CC068), &esi, sizeof(DWORD), 0);
for (int index = 0; index < 64; ++index) {
WriteProcessMemory(hProcess, (LPVOID)(esi + index + 0xD8D), &enable, sizeof(bool), 0);
}
}