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 и, вероятно, других аналогичных утилит.
Может не работать на рутованных устройствах.

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 07 фев 2017, 18:56, всего редактировалось 28 раз(а).
Полезные плагины:
Maintainer | Anti-Cheat Toolkit | Advanced FPS Counter
Аватара пользователя
focus
UNITрон
 
Сообщения: 250
Зарегистрирован: 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
Адепт
 
Сообщения: 6070
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

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

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

Re: Anti-Cheat Toolkit

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

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

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

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
Откуда: Украина
  • ICQ

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
Откуда: Украина
  • ICQ

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
Адепт
 
Сообщения: 6070
Зарегистрирован: 02 мар 2009, 16:59

Re: Anti-Cheat Toolkit

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

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

След.

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

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

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