- Промокоды
- Тир-лист персонажей
- Баннеры 1.2
- Тир-лист банбу
- Инспектор Мяучело
- Памятные монеты АИК
- Пропавшие мини-грузовики
- Все скрытые квесты
- Все достижения
- Все арты c6 персонажей
- Как повысить уровень доверия агентов?
- Клякса: как приручить?
- Видеопрокат и все видеокассеты
- Отдыхающая домохозяйка: фильм
- Ностальгирующая девушка: фильм
- Влюбленная девушка: фильм
- Квест Клуб загадочников 1 и 2
- Квест Отмотай назад, детектив
- Квест Заметание секретов
- Квест Пропавшая картина
- Квест Бескрайняя бездна
- Квест Пророчество
- Квест Лимб банбу
- Все гайды
- Испытания Мерлина
- Хранилища сокровищ
- Луны мистера Муна
- Хитроумные ключи
- Головоломки Иродианы
- Квест «Призрак нашей любви»
- Квест «Колодец, колодец»
- Квест «Сокровища из проклятой гробницы»
- Квест «Гиппогриф вам укажет путь»
- Квест «Словно по звонку»
- Непростительные заклинания
- Все легендарные сундуки
- Все животные и твари
- Все метлы
- Все концовки
- Все гайды
- Башня Рамазита и колдовской погреб
- Вызов Шар — все испытания и Копье Ночи
- Логово Ансура — все чертоги и дракон
- Литейная стальной стражи — как спасти гондийцев
- Обыскать подвал — как открыть Некромантию Тхая
- Разрушенная башня — как запустить лифт
- Адамантиновая кузня — все формы и мифриловая руда
- Завершить оружейный шедевр — кора суссура
- Тетушка Этель — как спасти Майрину
- Яйцо гитьянки — как украсть и можно ли вырастить
- Мистический Падальщик — где найти слугу
- Найти клоуна Каплю — все части тела
- Как победить Геррингот Торм?
- Где найти Кровь Латандера?
- Где найти Песню Ночи?
- Все гайды
- Промокоды Honkai Star Rail
- Все сундуки Золотого мига в Honkai Star Rail
- Похвала высокой морали в Honkai Star Rail
- Все сундуки в Лофу Сяньчжоу из Honkai Star Rail
- Первооткрыватель в Honkai Star Rail
- Все сундуки Сада безмятежности в Honkai Star Rail
- Беглецы в Доме кандалов
- Заказ прокси
- Дом кандалов: сундуки и робоптахи
- Гексанексус: Remake в ХСР
Абсолютный чит: как взломали мультиплеер Age of Empires 2 Definitive Edition
И сумели научить персонажей уворачиваться от выстрелов.
В 2019 году вышел ремастер Age of Empires 2 Definitive Edition с обновленной графикой и кое-каким новым контентом. Картинка поменялась, но в основе игры лежал старый движок — в том числе та часть, что отвечала за мультиплеер.
Команда исследователей безопасности RedRocket сумела взломать мультиплеерный режим Age of Empires 2 Definitive Edition, используя материалы, описывавшие реализацию мультиплеера еще в оригинальных играх серии. В процессе исследователям удалось провернуть несколько интересных трюков.
В мультиплеере Age of Empires 2 нет сервера, хранящего все данные о сессии. Вместо этого игровая логика построена на концепции ходов:
- Клиент каждого игрока в мультиплеере обсчитывает игру самостоятельно.
- Любая команда, которую отправляет игрок, должна выполняться двумя ходами позже.
- Все команды должны верифицироваться и исполняться на всех клиентах.
- Если клиент не может верифицировать данные и выполнить команду, игра десинхронизируется и матч прерывается.
В идеальном мире, отмечают исследователи, такая архитектура должна хорошо противостоять взлому: если данные верифицируются, то хакеру не удастся манипулировать состоянием игры. Но мультиплеер Age of Empires 2 работает не в идеальном мире.
Сперва исследователи научились управлять своими юнитами. Для этого вручную, с помощью CheatEngine, в памяти процесса Age of Empires 2 Definitive Edition был найден объект одного из юнитов. После изучения объекта исследователи получили представление о его функциях и методах.
Затем был написан бот, внедрявшийся в процесс и управлявший передвижением юнитов с помощью вызова стандартных функций. Он мог, например, автоматически уводить войска из зоны, куда должны упасть снаряды катапульт.
Была проблема — такой трюк можно провернуть только в одиночном режиме. Если запустить бота в мультиплеере, ожидаемо происходит десинхронизация: команды бота не отправляются другим игрокам в сессии.
С помощью реверс-инжиниринга удалось найти функцию, отвечающую за отправку команд передвижения юнитов другим игрокам. Выяснив параметры вызова функции, исследователи переделали своего бота так, чтобы он работал и в одиночном режиме, и в мультиплеере. Тут же выяснился любопытный момент.
Движку игры без разницы, чьи отряды вы передвигаете. Интерфейс Age of Empires 2 позволяет выбирать и контролировать только собственные юниты или здания игрока. Но оказалось, что эта проверка есть только в части кода, отвечающей за интерфейс: в других местах она отсутствует.
Бота модифицировали еще раз: теперь он не управлял юнитами, а просто подменял указатели так, чтобы интерфейс думал, будто игрок имеет право выбрать любого юнита. У остальных частей движка вопросов не возникло: подделка указателей позволила управлять чужими юнитами.
Эксперименты показали, что все проверки делаются только в интерфейсной части игры — как в одиночном режиме, так и в мультиплеере. Внедрившись в код и подменяя указатели, можно делать все, что угодно и в обычном мультиплеере, и в рейтинговом режиме.
Если честно, не ожидал, что это вообще возможно. Запрет игроку передвигать юниты, принадлежащие другому игроку, это одна из первых проверок безопасности, что приходит мне в голову, когда речь идет о стратегии в реальном времени. Но оказалось, что пределов нет: похоже, проверки безопасности вообще отсутствуют.
RedRocket
На всякий случай было решено проделать еще один опыт. В играх серии Age of Empires игроки могут уничтожать свои юниты — например, чтобы вместо них построить кого-то еще. Что будет, если отправить команду убить юнит, который не принадлежит игроку?
Оказалось, что проверок нет и в этом случае. В результате исследователи превратили Age of Empires 2 Definitive Edition в кликер, где можно вручную перебить любое количество противников.
Последним экспериментом стала кнопка «убить всех», реализованная в актуальной версии Age of Empires 2 Definitive Edition для Steam. Она позволяла игроку уничтожить противника в мультиплеере, просто введя его идентификатор.
После этого бот пробегался по всем юнитам и зданиям противника и отправлял команды на их уничтожение. Оппонент моментально лишался всего, с точки зрения игровой логики он считался проигравшим и выбывал из матча.
Скорее всего, полагают исследователи, примерно так же устроен мультиплеер и в остальных частях серии. Способов защититься тут не очень много: разработчикам надо реализовать проверки данных для всех методов, вызывающихся при игре в мультиплеер.
Выкладывать исходники бота исследователи пока не стали, чтобы дать Microsoft время поправить уязвимость.
- Особенности DLC Return of Rome для Age of Empires II:DE
- В Age of Empires II: DE идёт событие "Пикантные экспедиции"
- Для Crusader Kings 3 вышел мод на королевскую битву
- Видео: на съемках «Шан-Чи и легенды Десяти колец»
- Для Age of Empires 2 вышел новогодний режим со стрельбой подарками из катапульты
- Эпоха империй