Клиент должен только совершать транзакцию и отправляет данные о ней на сервер для проверки.
Логику, различные проверки и данные пользователя хранить там же. Ключевая статистика только от сервера.
И всегда старайтесь выбирать для хранения типы данных, которые не позволяют параметрам применять отличные от задуманных значения. Опять же проверки, проверки и еще раз проверки. Все что приходит от клиента должно подвергаться сомнению.
В этом случае даже при изменении значений на клиенте на сервере это легко отслеживается и выписывается бан.
Опишу один из многочисленный фэйлов того же kabam в игре Герои камелота.
В игре есть «хранилище» с различными итемами (в том числе картами героев). Для всех итемов хранится их количество, но используют для этого не целое число, а с точкой. При этом при использовании на сервер уходит количество итемов. Отсутствие проверки на сервере дает два замечательных чита. Первый — это использование количества в виде 0.0000001. Что есть по сути бесконечный итем. Второе — использование отрицательных значений, т.е. возможность клонирования.
Ничего не мешает изменить dll и отправлять корректный хэш.
Недавно как раз отучал от защиты Битву чемпионов от kabam.
1. На данные, отправляемые на сервер, вычисляется hmac и добавляется в сообщение.
Соль зашита в игре.
2. При логине происходит следующие действия
Вычисляется sha1 для dll файлов в папке managed и отправляется на сервер
Если хэш верен, то в ответ приходит соль, с некоторой модернизацией которой вычисляется hmac все тех же dll
Все вычисления и логика встроены в so библиотеку.
Расковыряв алгоритм, в классе защиты заменил вызовы внешней библиотеки на реализующий его код.
Профит. Теперь можно менять тем же рефлектором все что нам нужно
Deep Learning (Adaptive Computation and Machine Learning Series) переведена ДМК Пресс
Логику, различные проверки и данные пользователя хранить там же. Ключевая статистика только от сервера.
И всегда старайтесь выбирать для хранения типы данных, которые не позволяют параметрам применять отличные от задуманных значения. Опять же проверки, проверки и еще раз проверки. Все что приходит от клиента должно подвергаться сомнению.
В этом случае даже при изменении значений на клиенте на сервере это легко отслеживается и выписывается бан.
Опишу один из многочисленный фэйлов того же kabam в игре Герои камелота.
В игре есть «хранилище» с различными итемами (в том числе картами героев). Для всех итемов хранится их количество, но используют для этого не целое число, а с точкой. При этом при использовании на сервер уходит количество итемов. Отсутствие проверки на сервере дает два замечательных чита. Первый — это использование количества в виде 0.0000001. Что есть по сути бесконечный итем. Второе — использование отрицательных значений, т.е. возможность клонирования.
Недавно как раз отучал от защиты Битву чемпионов от kabam.
1. На данные, отправляемые на сервер, вычисляется hmac и добавляется в сообщение.
Соль зашита в игре.
2. При логине происходит следующие действия
Вычисляется sha1 для dll файлов в папке managed и отправляется на сервер
Если хэш верен, то в ответ приходит соль, с некоторой модернизацией которой вычисляется hmac все тех же dll
Все вычисления и логика встроены в so библиотеку.
Расковыряв алгоритм, в классе защиты заменил вызовы внешней библиотеки на реализующий его код.
Профит. Теперь можно менять тем же рефлектором все что нам нужно