Pull to refresh
0
Karma
0
Rating

Разбиение строки по разделителю. Немного про CONNECT BY

Использую обычно чуть другой вариант
SELECT regexp_substr(masks, '[^,]+', 1, level) val from dual
              CONNECT BY instr(masks, ',', 1, level - 1) > 0

Практическое руководство по взлому (и защите) игр на Unity

Эфемерная защита. Берем метод для дешифровки из приложения и получаем нормальный ассет

Практическое руководство по взлому (и защите) игр на Unity

Клиент должен только совершать транзакцию и отправляет данные о ней на сервер для проверки.
Логику, различные проверки и данные пользователя хранить там же. Ключевая статистика только от сервера.
И всегда старайтесь выбирать для хранения типы данных, которые не позволяют параметрам применять отличные от задуманных значения. Опять же проверки, проверки и еще раз проверки. Все что приходит от клиента должно подвергаться сомнению.

В этом случае даже при изменении значений на клиенте на сервере это легко отслеживается и выписывается бан.

Опишу один из многочисленный фэйлов того же kabam в игре Герои камелота.

В игре есть «хранилище» с различными итемами (в том числе картами героев). Для всех итемов хранится их количество, но используют для этого не целое число, а с точкой. При этом при использовании на сервер уходит количество итемов. Отсутствие проверки на сервере дает два замечательных чита. Первый — это использование количества в виде 0.0000001. Что есть по сути бесконечный итем. Второе — использование отрицательных значений, т.е. возможность клонирования.

Практическое руководство по взлому (и защите) игр на Unity

Ничего не мешает изменить dll и отправлять корректный хэш.

Недавно как раз отучал от защиты Битву чемпионов от kabam.

1. На данные, отправляемые на сервер, вычисляется hmac и добавляется в сообщение.
Соль зашита в игре.

2. При логине происходит следующие действия
Вычисляется sha1 для dll файлов в папке managed и отправляется на сервер
Если хэш верен, то в ответ приходит соль, с некоторой модернизацией которой вычисляется hmac все тех же dll

Все вычисления и логика встроены в so библиотеку.
Расковыряв алгоритм, в классе защиты заменил вызовы внешней библиотеки на реализующий его код.

Профит. Теперь можно менять тем же рефлектором все что нам нужно

Information

Rating
6,165-th
Registered
Activity