В настоящее время у меня есть многопользовательская игра, в которой игроки начинают использовать редактирование памяти, чтобы отменить анимацию атаки, чтобы пакеты атаки поступали быстрее или атаки проводились намного быстрее, чем обычно.
Да, лучший дизайн был бы идеален, но это может занять некоторое время. Я хотел получить временное решение, которое можно было бы сделать быстро.
Идеи:
- Проверяйте разницу во времени между последним пакетом атаки, игнорируйте все, что слишком быстро. (для сервера)
- Используйте
EnumWindows
проверку классов окон и остановите игру, если обнаружен известный редактор памяти.EnumWindows
будет выполняться каждый раз при совершении атаки. (для клиента) - Используйте
ReadProcessMemory
для чтения запущенных процессов и поиска сигнатур для известных редакторов памяти.
На самом деле вопрос заключается в том, может ли что-либо из следующего работать и как это будет сделано:
- Обойти
ReadProcessMemory
илиOpenProcess
и выйти при вызове? (хотя я думаю, что это не сработает, потому что эти функции вызываются редактором памяти, а не моей игрой). ReadProcessMemory
на себя(игру) и проверь адреса, которые они меняют. Проверьте, не находятся ли значения в пределах нормального диапазона, затем выйдите.- Какие-либо предложения?
Я знаю, что это бесполезно, потому что мошенники, которые знают, что делают, все еще могут обойти все это. Но в моей игре всего около 600 активных игроков, я думаю, что они просто несколько scriptkiddies
. Я думаю, что этих простых контрмер должно быть достаточно для небольших игр, таких как моя. Но, конечно, дизайн будет исправлен.
"Check time difference between the last attack packet ignore everything that is too fast. (for server)"
для меня это кажется самым простым и безопасным. Если у вас только600
игроков, вы, скорее всего, можете позволить себе любые накладные расходы на сервер. И если это проверка на стороне сервера, вряд ли они найдут что-то, что сломает то же самое. Почему бы не сделать это? - person IVlad   schedule 10.02.2016