Anti-Cheat Toolkit [Asset Store]

Части и запчасти к проектам, дополнительное программное обеспечение.

Anti-Cheat Toolkit [Asset Store]

Сообщение focus 22 окт 2013, 21:46



WebGL DEMO
(смотреть лучше через последнюю версию Chrome или Firefox)


Привет! Я рад представить свой набор простых и удобных способов для борьбы с читерами.
Anti-Cheat Toolkit включает в себя:

Obscured типы (вводное видео)
Позволяют скрывать переменные от любых мемсёрчеров (а-ля ArtMoney, Cheat Engine, GameCIH на Android и т.д.). Использовать крайне просто - достаточно заменить тип переменной на Obscured*. Например, вместо float, можно использовать ObscuredFloat, причем в большинстве случаев больше ничего делать не требуется (но лучше не забыть сменить ключ шифрования с дефолтного). Поддерживаются все базовые типы (int, float, string и т.д.) и несколько специфичных для Unity типов (Vector2 Vector3, Quaternion, в ограниченном режиме - API оригинальных типов не дублируется). LINQ в данный момент не поддерживается.
Возможен детект читинга переменных всех базовых типов (при этом оригинальные данные остаются в безопасности, т.к. читерам "скармливаются" фальшивые переменные).

Obscured Prefs (вводное видео)
Позволяет шифровать сохраняемые привычным способом данные. Кроме того, можно привязать сохранённые данные к текущему устройству и реагировать на вмешательство в сохранения. Полностью автоматическая миграция с PlayerPrefs - просто замените в проекте PlayerPrefs на ObscuredPrefs, и готово! Кроме того, для сохранения и загрузки доступен дополнительный перечень типов: uint, double, long, bool, byte[], Vector3, Color, Rect.
Также тулкит содержит удобный простой редактор для PlayerPrefs и ObscuredPrefs.

Speed Hack Detector (вводное видео)
Позволяет реагировать на speed hack из Cheat Engine и, вероятно, других аналогичных утилит.
Может не работать на рутованных устройствах.

Time Cheating Detector
Реагирует на расхождение локального и online времени. Есть настраиваемый интервал проверок и порог чувствительности.

WallHack Detector (вводное видео)
Детектит 3 основных вида wallhacking'а: проход через стены, прострел через стены и просмотр через стены (когда вместо текстур видна только полигональная сетка или используются прозрачные текстуры вместо оригинальных и т.д.)., работает на основе универсальной "песочницы", которая потенциально способна отловить и другие, неизвестные виды wallhack'ов.

Injection Detector (вводное видео)
Позволяет реагировать на любые чужеродные managed сборки (assemblies) в вашем приложении / игре.
Работает на PC (Win, Mac, Linux, WebPlayer) и Android. Перед релизом обязательно стоит проверить на целевой платформе - не будет ли ложных срабатываний, и если будут - добавить легальные сборки в белый список (по умолчанию в белый список автоматически добавляются все сборки из проекта, но некоторые сборки могут подгружаться с серверов или создаваться динамически - в таком случае их надо добавить в белый список вручную).

Интеграция со сторонними ассетами
* используется в Opsive's UFPS : Ultimate FPS
* полная поддержка Opsive's Behavior Designer
* частичная поддержка PlayMaker (всё кроме Obscured переменных, т.к. PlayMaker не позволяет добавлять свои типы без тяжеловесных обёрток)
* storage backend в Mad Level Manager
* используется в Stan’s Android Native
* используется в Stan’s Ultimate Mobile

Весь функционал должен работать на всех платформах, поддерживаемых Unity3D, если обратное не указано в описании, в readme или API.
Micro mscorlib stripping level и .NET subset API level не должны вызывать проблем - плагин полностью с ними совместим. С IL2CPP тоже проблем быть не должно (только если со стороны самого IL2CPP).

Все публичные API тщательно документированы (документация доступна online), плагин поставляется в исходниках, с детальным readme, в котором расписан весь функционал, есть примеры использования и полезные советы.
При некоторых манипуляциях, плагин можно использовать с JS (подробней можно почитать тут).

Прошу заметить, что я не гарантирую абсолютной защиты данных, которые вы доверите тулкиту, т.к. при должном упорстве и знаниях, злоумышленник сможет получить доступ ко всему, что хранится на клиенте. Это касается абсолютно любой клиентской защиты: все что мы можем сделать - увеличить количество ресурсов, требуемое на взлом. Если вы хотите абсолютной защиты - используйте тонкий клиент, которому нельзя доверять и стройте ваше приложение на сервере. Хорошо защищённом сервере ;)

К сожалению, далеко не все разработчики готовы использовать сервер, но оставлять проект совсем без защиты зачастую чревато кучей читеров-новичков в рейтингах и прочими неприятностями. По этому всем, кто жаждет реализовать нечто аналогичное в своём проекте и усложнить жизнь любителям всё повзламывать, я и предлагаю сэкономить своё время и силы, купив готовое решение.

Anti-Cheat Toolkit можно приобрести за $30 в Asset Store.

WebGL DEMO (смотреть лучше через последнюю версию Chrome или Firefox)
Англоязычный форум
Домашняя страница плагина
YouTube

Буду рад любым отзывам и пожеланиям!
Последний раз редактировалось focus 14 апр 2017, 11:22, всего редактировалось 29 раз(а).
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 252
Зарегистрирован: 20 авг 2013, 22:59
Откуда: Russia, Saint-Petersburg
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение Woolf 22 окт 2013, 21:52

ObscuredVector3 сделайте еще. А так, может и возьму. Тема нужная.
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Аватара пользователя
Woolf
Адепт
 
Сообщения: 6274
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

Сообщение focus 22 окт 2013, 22:05

Спасибо, ваше пожелание добавлено в TODO. Сразу могу сказать, что такой тип будет работать несколько медленнее обычного аналога, при очень частых обращениях и обновлениях его значения, могут быть заметные пики использовния ресурсов на мобильных платформах. Однако, я постараюсь оптимизировать все, насколько это возможно, чтобы максимально нивелировать такие вещи.
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 252
Зарегистрирован: 20 авг 2013, 22:59
Откуда: Russia, Saint-Petersburg
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение Woolf 22 окт 2013, 22:09

могу сказать, что такой тип будет работать несколько медленнее обычного аналога


Ну это понятно же. Еще вопросик - проведите исследование, не бывает ли у вас такого, что при увеличении значения переменной увеличивается и криптованная переменная. Это серьезная уязвимость, такое изменение легко отслеживается читэнжином. Еще желателен различный ключ криптования, скажем от времени запуска приложения - иначе можно вычислить какое-то фиксированное значение переменной читэнжином (например, 10 жизней, пусть оно и выглядит, как 7648BE) и подставлять её. Ну и естественно, должен быть контроль корректности какой-то. Т.е. четко определить, что 7648BE - это 10 и изменение на 8648BE должно не выдать новое значение, а выдать ошибку.
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Аватара пользователя
Woolf
Адепт
 
Сообщения: 6274
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

Сообщение focus 22 окт 2013, 22:26

Такое исследование я уже проводил ранее. Найти спрятанную перемнную можно лишь используя поиск неизвестного значения, причем только в режиме изменилось\не изменилось, т.к. спрятанные значения изменяются непредсказуемо, то есть при прибавлении к число какого-лиюо значения, число может стать меньше или вообще отрицательным ( если речь о int).

В итоге, даже найдя таким образом спрятанную переменную (что кстати очень нудный процесс, особенно на больших проектах - придется совершить отсеивания множество раз), она будет выглядеть не понятно для взломщика, и если он прибавит что-то к найденному значению, то на выходе получит неожиданные результаты. Проще говоря, взломщику придется проводить исследование кода, чтобы понять как там что шифруется, а это уже не каждый новичёк осилит, особенно если сборка обфусцирована.

Ключ криптования для каждого типа скрываемых переменных пользователь сам может изменить в любой момент (при этом, все переменные, закриптованные старым ключём не потеряют свои значения, а плавно переключатся на новый люч, по мере использования), более того, это нужно делать, возможно в будущем я добавлю проверку на использование дефолтного ключа и буду выдавать предупреждение в таком случае.

По поводу проверки на изменения - я размышлял об этом, но не хотел вносить код, лишний раз потребляющий ресурсы, особенно учитывая как часто и в каких количествах могут быть использованы Obscured переменные. Я ещё раз подумаю на этот счет, добавлю исследование этого вопроса в TODO, спасибо, что обратили внимание.
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 252
Зарегистрирован: 20 авг 2013, 22:59
Откуда: Russia, Saint-Petersburg
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение Woolf 22 окт 2013, 22:30

По поводу проверки на изменения - я размышлял об этом, но не хотел вносить код, лишний раз потребляющий ресурсы, особенно учитывая как часто и в каких количествах могут быть использованы Obscured переменные. Я ещё раз подумаю на этот счет, добавлю исследование этого вопроса в TODO, спасибо, что обратили внимание.


Можно сделать опционально. Защита это не та область, где нужно экономить такты. Как правило - защищенные переменные изменяются не часто, в циклах не используются, так что производительность здесь не очень важна.

PS Просто сам с защитой от артмани работаю уже третий год, кое-какие наработки есть. Кстати, проверяли как оно с обфускатором работает? Не глючит?
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Аватара пользователя
Woolf
Адепт
 
Сообщения: 6274
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

Сообщение focus 22 окт 2013, 22:53

Да, опциональность таких проверок вполне разумна. Рад встретить коллегу по цеху на просторах, сам я весьма основательно интересуюсь вопросами безопасности, защит и всего прочего в этой области, давняя привычка =)
С обфускаторами ситуация двоякая. Есть те, которые поддерживают совместимость с Mono на выходе, но не все в состоянии сделать свою работу хорошо, да так, чтобы деобфускация не ограничилась простым перетаскиванием сборки на de4dot.

Это одно из напралений, которое я периодически исследую. В данный момент сборки плагина я накрываю одним из бесплатных, но к сожалению. не эффективных обфускаторов (легко снимается при определенных знаниях). Есть некоторые решения на примете, которые я пока не пробовал.
Одна из больших сложностей для обфускаторов - не сломать совместимость с Mono (особенно часто они это ломают при запутывании хода кода) + надо их аккуратно использовать, чтобы они не переименовывали то, что использует сама Юнити (метод Update(), который обычно объявляют приватно - самый простой пример). Это основные проблемы, с которыми мне пришлось столкнуться при исследовании этого вопроса.

То есть, при обфускации вашего Юнити проекта в данный момент нет необходимости обфусцировать мой плагин. Либо это надо делать осторожно, чтобы не вызвать побочных эффектов.
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 252
Зарегистрирован: 20 авг 2013, 22:59
Откуда: Russia, Saint-Petersburg
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение BornFoRdeatH 22 окт 2013, 23:32

Если я правильно понял, то вся защита находится в отдельной библиотеке? Тоесть елементарная самопальная либа с ObscuredFloat без шифрования напрочь сносит всю защиту?
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2310
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Anti-Cheat Toolkit

Сообщение pod4444 23 окт 2013, 00:43

BornFoRdeatH писал(а):Если я правильно понял, то вся защита находится в отдельной библиотеке? Тоесть елементарная самопальная либа с ObscuredFloat без шифрования напрочь сносит всю защиту?

да хоть внутри проекта, если рукастый человек, то это вообще не защита, тупо вырезать всё это шифрование и всё.
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение BornFoRdeatH 23 окт 2013, 00:48

pod4444 писал(а):
BornFoRdeatH писал(а):Если я правильно понял, то вся защита находится в отдельной библиотеке? Тоесть елементарная самопальная либа с ObscuredFloat без шифрования напрочь сносит всю защиту?

да хоть внутри проекта, если рукастый человек, то это вообще не защита, тупо вырезать всё это шифрование и всё.

Ну внутри проекта это пол беды, если и ломанут один из успешных проектов, то твоего это не коснется, а вот вне проекта это уже караул.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2310
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Anti-Cheat Toolkit

Сообщение pod4444 23 окт 2013, 00:53

имхо, что-то ныкать на клиенте бессмысленно, если это хоть что-то стоит, то ломанут.
для стендэлон можно подкинуть unmanaged библиотеки, это будет эффективней, но и это сломать тоже можно.
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение BornFoRdeatH 23 окт 2013, 00:54

pod4444 писал(а):имхо, что-то ныкать на клиенте бессмысленно, если это хоть что-то стоит, то ломанут.
для стендэлон можно подкинуть unmanaged библиотеки, это будет эффективней, но и это сломать тоже можно.

Ломать одно, а нагуглить либу и скопипастить это другое ;)
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2310
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Anti-Cheat Toolkit

Сообщение pod4444 23 окт 2013, 03:21

если коротко, то так
p/s честно не рабит PlayerPrefsObscured.SetFloat и GetFloat, мне просто дико лень переписывать как нужно, потому вырезал, но так если охота, то можно и сделать.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Anti-Cheat Toolkit

Сообщение Woolf 23 окт 2013, 04:28

pod4444 писал(а):имхо, что-то ныкать на клиенте бессмысленно, если это хоть что-то стоит, то ломанут.
для стендэлон можно подкинуть unmanaged библиотеки, это будет эффективней, но и это сломать тоже можно.


Все на сервер не переведешь. Извините, физика мешает, скорость света, та-же. В пределах шарика она даёт таки ощутимый пинг в 0.01 мс. Я уж молчу про железо, через которое сигнал проходит. Потому и есть процессы на клиенте, которые можно ломануть, есть и еще долго будут. Так что тема актуальна. А ваши лозунги в стиле "все через сервак" - выдают либо полного нуба по проблеме, либо профи, уверенного в себе, но далекого от проблемы. Мы тут разговариваем не о абсолютной защите, а о максимальном затруднеи по взлому клиента. И ваша позиция в стиле "нах никому не нужно" - в корне не верна. Мне, к примеру, это обсуждение нужно.
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Аватара пользователя
Woolf
Адепт
 
Сообщения: 6274
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

Сообщение pod4444 23 окт 2013, 09:32

все на сервак не означает отсутствие кода на клиенте, дублирующая физика и прочее - необходимы, игроку просто должно казаться, что лзадержек нет.
конечно, я согласен, что обратной стороной медали становится огромные вычисления на сервере, что дорого для многих проектов, но это концепция абсолютной анти-читерности.
я не говорю, что это никому не нужно, я говорю, что это далеко не самый эффективный способ.
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

След.

Вернуться в Компоненты (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2