- Промокоды
- Тир-лист персонажей
- Баннеры 1.2
- Тир-лист банбу
- Инспектор Мяучело
- Памятные монеты АИК
- Пропавшие мини-грузовики
- Все скрытые квесты
- Все достижения
- Все арты c6 персонажей
- Как повысить уровень доверия агентов?
- Клякса: как приручить?
- Видеопрокат и все видеокассеты
- Отдыхающая домохозяйка: фильм
- Ностальгирующая девушка: фильм
- Влюбленная девушка: фильм
- Квест Клуб загадочников 1 и 2
- Квест Отмотай назад, детектив
- Квест Заметание секретов
- Квест Пропавшая картина
- Квест Бескрайняя бездна
- Квест Пророчество
- Квест Лимб банбу
- Все гайды
- Испытания Мерлина
- Хранилища сокровищ
- Луны мистера Муна
- Хитроумные ключи
- Головоломки Иродианы
- Квест «Призрак нашей любви»
- Квест «Колодец, колодец»
- Квест «Сокровища из проклятой гробницы»
- Квест «Гиппогриф вам укажет путь»
- Квест «Словно по звонку»
- Непростительные заклинания
- Все легендарные сундуки
- Все животные и твари
- Все метлы
- Все концовки
- Все гайды
- Башня Рамазита и колдовской погреб
- Вызов Шар — все испытания и Копье Ночи
- Логово Ансура — все чертоги и дракон
- Литейная стальной стражи — как спасти гондийцев
- Обыскать подвал — как открыть Некромантию Тхая
- Разрушенная башня — как запустить лифт
- Адамантиновая кузня — все формы и мифриловая руда
- Завершить оружейный шедевр — кора суссура
- Тетушка Этель — как спасти Майрину
- Яйцо гитьянки — как украсть и можно ли вырастить
- Мистический Падальщик — где найти слугу
- Найти клоуна Каплю — все части тела
- Как победить Геррингот Торм?
- Где найти Кровь Латандера?
- Где найти Песню Ночи?
- Все гайды
- Промокоды Honkai Star Rail
- Все сундуки Золотого мига в Honkai Star Rail
- Похвала высокой морали в Honkai Star Rail
- Все сундуки в Лофу Сяньчжоу из Honkai Star Rail
- Первооткрыватель в Honkai Star Rail
- Все сундуки Сада безмятежности в Honkai Star Rail
- Беглецы в Доме кандалов
- Заказ прокси
- Дом кандалов: сундуки и робоптахи
- Гексанексус: Remake в ХСР
Декомпилируй это: как делают читы для Among Us
Разработчики явно не ожидали свалившейся на них популярности и не подумали о защите.
Через два года после релиза кооперативно-детективная адвенчура Among Us неожиданно стала невероятно популярной. Вместе с игроками в Among Us появились читеры, способные менять ники, писать в чат от имени игроков и проворачивать другие трюки.
Исследователь безопасности Джеймс Себри решил выяснить, как работают читы для Among Us и насколько вообще сложно взломать игру. Свои эксперименты Джеймс проводил на PC-версии игры — просто потому, что так проще.
Себри не стал покупать читы и исследовать принципы их работы. Вместо этого Джеймс попытался написать для Among Us набор собственных читов. Ему это удалось.
- Выдавать себя за других игроков.
- Определять самозванцев.
- Писать в чат от имени других игроков.
- Менять цвет своего героя или героев других игроков.
- Ходить через стены.
- Снимать ограничение на дальность обзора.
- Убивать самозванцев и любых других игроков.
- Управлять персонажами других игроков.
- Телепортировать своего героя и других игроков.
- Проникать в приватные лобби.
- Снимать кулдауны.
- Ускорять персонажа.
- ...и массу других вещей.
Хотя Among Us невероятно популярна, Джеймс обнаружил, что с точки зрения защиты в игре отсутствуют базовые вещи. Например, сервер почти стопроцентно доверяет клиентской части, практически никак не валидируя действия игроков.
Есть механизмы, которые могут защитить от некоторых из этих читов — например, проверка на соответствие идентификаторов при обмене данных с сервером. Но в игре они просто не реализованы.
Джеймс Себри
После нескольких экспериментов выяснилось, что в Among Us все-таки есть античит, но крайне простой. По сути, это набор проверок и ограничений, связанных с рядом дествий. Например, игра проверяет, укладывается ли имя персонажа в определенный лимит.
Попытавшись сменить имя на более длинное, Джеймс впервые столкнулся с баном за попытку взлома игры. По словам исследователя, если бы ему все-таки удалось поменять имя персонажа, это могло бы привести к вылету других игроков из сессии.
Если не касаться установленных разработчиками проверок, то в Among Us можно делать практически все, что угодно. Правда, сперва надо понять, что и где менять; для этого придется изучить устройство игровых механик.
Сделать это достаточно просто. Among Us создана на движке Unity, игровой код написан на языке C#. Прогнав библиотеку игры через декомпилятор — можно воспользоваться dotPeek или dnSpy, — Себри получил восстановленный игровой код, который можно было менять по своему усмотрению.
Как правило, объясняет исследователь, разработчики мультиплеерных игр внедряют дополнительную защиту: проверяют целостность файлов и не позволяют подключиться к серверу, если клиентская часть подверглась модификации. В Among Us такого нет.
Если сервер не проверяет, модифицировали ли клиентскую часть, то игроки могут использовать собственноручно доработанные клиенты, в которые вшиты собственные читы.
Джеймс Себри
Правда, в случае с Among Us своеобразной защитой стал выпуск игры на мобильных платформах. В движке Unity кроссплатформенность реализована с помощью собственного скриптового бэкенда IL2CPP, слегка усложняющего декомпиляцию.
Декомпиляторы по-прежнему выдают валидный код, но он получается куда более запутанным, чем обычно. Однако, отмечает исследователь, существует IL2CPPdumper — специальный инструмент, позволяющий сильно упростить работу с такими исходниками и берущий на себя большую часть работы. Но и это еще не конец.
Основная проблема заключается в том, что код игровой логики во многом неполон. Значит, придется прибегнуть к боле традиционным методам обратной разработки — например, с помощью Ghidra или другого похожего приложения.
Джеймс Себри
Реализовать сам чит можно несколькими способами. Самый просто — внести изменения в код клиента, но Себри не рекомендует действовать таким образом. Если поправить клиент, то его придется заново патчить после выхода каждого обновления.
Куда логичнее создать собственную библиотеку, подсасывающуюся к клиенту Among Us, перехватывающую вызовы игровой логики и позволяющую ими манипулировать. Тут сразу два преимущества: во-первых, чит сохраняет работоспособность при обновлении клиента. Во-вторых, он становится кросс-платформенным.
В качестве простого примера Джеймс решил создать чит, меняющий скорость игрока. Сперва он изучил игровую логику Among Us и выяснил, как можно добраться до параметра скорости.
Оставалось взять смещение, выданное декомпилятором, вставить его в собственную библиотеку — ее код можно посмотреть здесь — и запустить игру.
У сервера не возникло никаких вопросов: персонаж Джеймса без проблем ускорился и смог перемещаться гораздо быстрее, чем это возможно в нормальных условиях.
Следующий эксперимент — смена цвета персонажа. Для этого Серби понадобилось отыскать в игровой логике два фрагмента кода: поиск персонажа и функцию, собственно задающую его цвет.
Теперь он мог менять цвет не только своего героя, но и любого другого участника сессии — нужно было лишь вбить в код его идентификатор.
Точно таким же образом Джеймс смог отключить систему коллизий, выйти за пределы корабля и прогуляться по дюзам.
А еще так можно запустить общий сбор от имени другого игрока и моментально вынудить других игроков проголосовать выбрасывание неугодного в космическое пространство.
В целом, считает исследователь, на момент изучения — это был октябрь — Among Us практически беззащитна перед хакерами. Разработчиков можно понять: они явно не ожидали, что их проект станет таким популярным, и не планировали вкладываться в защиту.
Игра совершенно фантастическая. Просто она создана командой из трех человек, лишь один из которых был программистом.
Джеймс Себри
Серби несколько раз пытался выйти на связь с разработчиками. Те не ответили, но в студии Innersloth, уверен Джеймс, отлично знают о проблемах Among Us и наверняка занимаются устранением основных дыр в системе безопасности.
В принципе, считает исследователь, с похожими проблемами сталкиваются все небольшие независимые команды, занимающиеся мультиплеерными проектами. Возможно, разработчикам движков вроде Unity стоит подумать о том, чтобы добавить некий базовый набор античит-функций.
- Все победители The Game Awards 2020
- Главные анонсы The Game Awards
- Аналитика: PlayStation 5 — один из самых популярных товаров Черной пятницы
- Программист из России три года делает для GTA San Andreas новую графику с трассировкой
- SuperData: Among Us по популярности сопоставима с Pokemon Go, Crusader Kings 3 разошелся тиражом в 1.1 миллиона копий
- Для Among Us отрисовали добивания в стиле аниме — с отсылками к Сайтаме и другим героям