Где и каким образом можно найти информацию о текущем протоколе 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") может дать полезные результаты.

Важно отметить, что выполнение реверс-инжиниринга и вмешательство в работу продуктов может нарушать лицензионные соглашения, поэтому такой подход следует использовать с осторожностью и быть готовым к возможным юридическим последствиям.
<blockquote>MITM не особо работает с отличным от HTTP/HTTPS протоколом</blockquote> HTTPS и TLS это одно и то же, а в TLS ничего нового не придумано, и mitm как был рабочим, таким и остаётся. <br/> <br/> Чтобы осуществить его, нужно отвязать клиент от Certificate Pinning. Для этого нужно провести реверс-инжиниринг приложения, найти место, где происходит проверка подписи сертификата и запатчить место статически либо динамически. <br/> <br/> <blockquote>Близзард сейчас использует протобаф и собирать байты вручную не самое приятное и долгоиграющие решение.</blockquote> Протобаф это наоборот же облегчение. Стандартный протокол проще и быстрее реверсить, чем какой-то кастомный непонятный костыль. Протобаф даже эвристически легко вычленить и разобрать из просто мусорного дампа памяти, несмотря уже на то, что относительно несложно написать скрипт, который из готового кода генерирует схему по определённым паттернам. <br/> <br/> Другое дело, что клиент батлнета может иметь какую-то защиту от эмуляции. Например слать движения мыши, нажатия клавиатуры, идентификаторы железа, какую-то иную телеметрию, проверив и не найдя которую, может заподозрить эмуляцию и выдать бан.
Похожие вопросы