@ramanovsky

Как функционируют читы в онлайн играх (Multiplayer)?

Какой принцип работы современных читов? Меня интересует первую очередь читы для игры ГТА5 а точнее даже для мультиплееров (FiveM, Rage.MP, AltV). Как они функционируют ?

Вот мне не совсем понятно, эти читы как работают. Они каким-то образом вызывают на стороне клиента функционал который есть в игре (native code C++), или вызывают функционал предоставленный конкретным мультиплеером для клиентской стороны (client-side), тогда, как они это все синхронизируют?
  • Вопрос задан
  • 345 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Разработка игр
software engineer
Они каким-то образом вызывают на стороне клиента функционал который есть в игре (native code C++), или вызывают функционал предоставленный конкретным мультиплеером для клиентской стороны (client-side), тогда, как они это все синхронизируют?


Все читы используют один из двух вариантов.

1. Вмешательство в общение между клиентом и сервером, для чего нужно знать что может слать сервер клиенту и клиент серверу, и выяснять какие вещи сервер проверяет, а какие нет.

2. Вмешательство в работу клиента, вызов его определенных функций (или подмена их на свои) при помощи вмешательства в процесс или dll-injection, что например делает autoaim.

В обоих случаях помогает хорошее знание работы игрового сервера, чтобы понимать какие рассчеты идут на стороне клиента, а какие на стороне сервера.

Например представим простую мобильную игру, кубик рубик.
Сервер присылает вам запутанный кубик, который вам нужно собрать его за x ходов.

Что нужно определить:

Что отправляет клиент - каждый ход отдельно, или итог в конце.

Если каждый ход отдельно, то уже возникает проблема, что скорее всего и количество ходов и их корректность сервер будет проверять, и возможно тут взломать ничего нельзя (ну разве что встроить автоматический алгоритм решения в клиент,который будет подсказывать что жать)

Если клиент отправляет результат уже в конце, то проверить - он отправляет всю последовательность ходов или просто пакет типа "уровень пройден, потрачено xx ходов". В этом случае вообще не проблема подделать такой пакет, и сразу его отправлять, проходя уровни мгновенно, не решая задачу в принципе. Или например взломам количество доступных ходов, чтобы можно было поиграться без лимита, а при отправке возможно в пакете нужно будет отправлять "легальное" количество ходов. А есть еще вероятность что на стороне сервера никто не проверяет валидность. А может быть и наоборот, что вся последовательность ходов и их количество хешируется, корректность хеша проверяется на стороне сервера.
И так далее.

Выдача визуальной подсказки куда двигаться - это вмешательство в клиент, никак не затрагивая работу сервера. Грубо говоря autoaim, который отследить программно проблематично, особенно если его правильно сделать.
А подделка пакета - это вмешательство в протокол обмена.

Во всех случаях нужно уметь программировать и реверс-инженерить, а также долго разбираться как работает сервер и клиент. И если у вас нет доступа к исходному коду сервера и клиента, задача в разы усложняется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы