Базовая защита игрового клиента
В настоящее время у меня есть многопользовательская игра, в которой игроки начинают использовать редактирование памяти для отмены анимации атаки, ускоряя поступление пакетов атаки или совершая атаки намного быстрее, чем обычно.
Да, лучший дизайн будет идеальным, но это может занять некоторое время. Я хотел получить временное исправление, которое можно сделать быстро.
Идеи:
- Проверьте разницу во времени между последним пакетом атаки, игнорируйте все, что слишком быстро. (для сервера)
- использование
EnumWindows
проверьте классы окон и остановите игру, если обнаружен известный редактор памяти.EnumWindows
будет выполняться каждый раз, когда совершается атака. (для клиента) - использование
ReadProcessMemory
читать запущенные процессы и находить подписи для известных редакторов памяти.
Вопрос в том, действительно ли может работать любое из следующего и как это будет сделано:
- Объезд
ReadProcessMemory
или жеOpenProcess
и выход при вызове? (хотя я думаю, что это не сработает, потому что эти функции вызываются редактором памяти, а не моей игрой). ReadProcessMemory
на себя (игру) и проверьте адреса, которые они меняют. Проверьте, не находятся ли значения в пределах нормального диапазона, затем выйдите.- Какие-либо предложения?
Я знаю, что это бесполезно, потому что мошенники, которые знают, что они делают, все еще могут обойти это. Но в моей игре всего около 600 активных игроков, я считаю, что они всего лишь несколько scriptkiddies
, Я думаю, что этой простой контрмеры должно быть достаточно для небольших игр, таких как моя. Но, конечно, дизайн будет исправлен.
0 ответов
Обойти ReadProcessMemory или OpenProcess и выйти при вызове?
Они не вызываются в вашем процессе, поэтому их локальное подключение ничего не даст. Вам нужно будет перехватить каждый запущенный процесс, что не рекомендуется.
Прочтите ProcessMemory на себе (игре) и проверьте адреса, которые они меняют. Убедитесь, что значения не находятся в нормальном диапазоне, затем выйдите.
Вам не нужно ReadProcessMemory, вы находитесь внутри своего собственного процесса. Просто проверьте значение как обычно.
Вы должны рассчитать эти значения на сервере, если вы не хотите, чтобы клиент мог ими манипулировать, а затем просто реплицируйте эту информацию клиентам и перезапишите их.
Вы также можете добавить к своему клиенту библиотеку защиты от ошибок, чтобы большинство людей не могли манипулировать вашим процессом. Вот приличный