Где и каким образом можно найти информацию о текущем протоколе Battlenet?

Существует множество интересных проектов, которые пытаются воспроизвести работу игровых клиентов и серверов, например, <a href="https://bnetdocs.org/welcome" rel="nofollow">https://bnetdocs.org/welcome</a>. Это рабочий вариант, однако Близзард в настоящее время использует протокол буфера (протобаф), что затрудняет ручное формирование байтов. Также имеются проекты, которые эмулируют клиент Hearthstone или Diablo, создавая игровые сессии и выполняя простые действия, такие как проверка активных друзей в игре. 

Мне интересно узнать, как именно работает поток данных и какие сообщения отправляет Blizzard Agent (до запуска любой игры) или мобильный клиент. В частности, как происходит авторизация, обмен сообщениями, проверка списка друзей и другие функции.

Основная проблема заключается в том, что устанавливается TCP-соединение с дальнейшим переходом на TLS 1.3, что сильно затрудняет расшифровку трафика. Программы типа MITM не очень хорошо работают с протоколами, отличными от HTTP/HTTPS. 

Я ищу любые подсказки или ссылки, которые могли бы помочь разобраться, как можно эмулировать мобильный клиент на первом этапе.
  • 9 ноября 2024 г. 23:23
Ответы на вопрос 2
Изучение протоколов и обмена данными между клиентами и серверами часто является сложной задачей, особенно когда речь идет о зашифрованных соединениях, таких как тот, который использует Blizzard для своих игровых клиентов. Если вы хотите разобраться в текущем протоколе Battlenet, вот несколько подходов и ресурсов, которые могут помочь:

1. **Отладочные инструменты**:
   - Используйте инструменты для отладки сетевого трафика, такие как Wireshark. Это поможет вам захватывать трафик и анализировать, какие именно пакеты отправляются и принимаются. Однако, как вы уже упоминали, использование MITM для зашифрованного трафика может быть сложным. Если такой подход будет использоваться, потребуется установить собственный сертификат для шифрования TLS, чтобы перехватывать данные.

2. **Обратная разработка**:
   - Вам может потребоваться изучить бинарные файлы клиента Blizzard с помощью инструментов для реверс-инжиниринга, таких как Ghidra или IDA Pro. Это позволит понять, как работает клиент, и какие методы используются для авторизации и общения с серверами.

3. **Сообщества разработчиков и форумы**:
   - Присоединяйтесь к сообществам и форумам, посвященным эммуляции и реверс-инжинирингу (например, Reddit, Discord-серверы, специализированные форумы). Пользователи часто делятся своими наработками или предлагают помощь.

4. **Документация и исследования**:
   - Проблема с протоколами, использующими протобаф, заключается в том, что вам нужно знать о структуре сообщений. Существуют библиотеки для работы с Protocol Buffers, которые могут помочь упростить процесс десериализации и сериализации.

5. **Анализ существующих проектов**:
   - Изучите открытые проекты на GitHub или других ресурсах, которые уже реализовывают часть функциональности. Это может дать вам представление о том, как работать с API или как обрабатываются определенные события и сообщения.

6. **TLS и криптография**:
   - Знания о том, как работает TLS и криптография в целом, помогут вам понять, как расшифровать трафик. Изучение теории и практики защиты данных также может быть полезным.

7. **Чтение статей и блогов**:
   - Существует множество статей и блогов, посвященных анализу различных игровых протоколов и реверс-инжинирингу. Поиск по ключевым словам (например, "Battlenet protocol analysis", "reverse engineering Blizzard client") может дать полезные результаты.

Важно отметить, что выполнение реверс-инжиниринга и вмешательство в работу продуктов может нарушать лицензионные соглашения, поэтому такой подход следует использовать с осторожностью и быть готовым к возможным юридическим последствиям.
MITM не особо работает с отличным от HTTP/HTTPS протоколом
HTTPS и TLS это одно и то же, а в TLS ничего нового не придумано, и mitm как был рабочим, таким и остаётся.

Чтобы осуществить его, нужно отвязать клиент от Certificate Pinning. Для этого нужно провести реверс-инжиниринг приложения, найти место, где происходит проверка подписи сертификата и запатчить место статически либо динамически.

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

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