[Unity / Reverse Engineering] Есть файлы закрытой MMO Ground War: Tanks. Ищу помощь в запуске клиента (No-Launcher / Emu)

  • Автор темы Автор темы merlio
  • Дата начала Дата начала

merlio

Путник
Пользователь
Сообщения
2
Розыгрыши
0
Репутация
26
Реакции
5
Баллы
13
Всем привет!

Пытаюсь воскресить старую игру Ground War: Tanks (закрылась в 2019, издатель Mail.Ru).
На руках остался только клиент игры (папка с файлами). Серверы выключены, сайт мертв.

Техническая инфа:

  • Движок: Unity (ориентировочно 4.x или 5.x).
  • Защита: Присутствуют файлы mrac.dll / mracinstall.exe (Mail.Ru Anti-Cheat).
  • Состояние: При запуске Tank.exe ничего не происходит или процесс сразу умирает (видимо, требует запуска через Игровой Центр или проверяет токен).
Что я хочу сделать:
Для начала - просто запустить клиент, чтобы он дошел хотя бы до экрана логина или главного меню, минуя проверки лаунчера и защиты. В идеале — начать копать в сторону эмуляции сервера.

Что я прошу:
Ищу человека, который разбирается в Unity и реверсе, которому было бы интересно глянуть файлы.

  1. Нужно понять, как отучить Assembly-CSharp.dll от проверки лаунчера.
  2. Вырезать инициализацию MRAC, чтобы игра не крашилась без серверов защиты.
Файлы игры:

Бюджет есть, ищу энтузиастов или профессионалов в этом деле, кто подскажет, в какую сторону копать в dnSpy, или поможет патчем Assembly-CSharp. Файлы лежат мертвым грузом, хочется сохранить игру для истории.
 
Здоров. Пришли свой дискорд, вместе помазгуем. У меня уже есть продвижения кое-какие в этом
 
Нам удалось установить стабильное TCP-соединение с клиентом игры и пройти начальную процедуру аутентификации. Клиент больше не разрывает соединение с ошибкой "Соединение разорвано", что подтверждает правильность реализации сетевого протокола на этапе входа.

Чего удалось добиться:

  1. Расшифровка структуры пакетов: Полностью определена структура пакетов (Magic 0x55aa + Длина + Тело) и номера OpCode.
  2. Процедура Логина: Реализована обработка пакета PK_LC_LOGIN (OpCode 213) и отправка ответа PK_LC_LoginRet (OpCode 214). Первичная авторизация проходит успешно.
  3. Вход в Ангар: Мы научились обрабатывать "второй вход" клиента (реконнект), который игра отправляет как OpCode 54528 (это пакет 213 с измененным порядком байт).
  4. Сохранение сессии: Реализовано извлечение динамического Certification ID из запроса клиента, чтобы сервер отвечал именно тем ID, который ждет игра.
  5. Логика входа: Реализована последовательность пакетов для входа в ангар:
    • LoginRet (214) — подтверждение сокета.
    • PK_HC_LoginResult (389) — логический успех входа (Flag=0).
    • PK_HC_PlayerStatistics (307) — отправка статистики игрока.
    • PK_SC_NEWGUIDE (326) и NM_SC_SERVER_TIME (222) — попытка инициализации интерфейса.

Что было перепробовано​

  • Эмуляция двух портов: Мы пробовали перенаправлять клиента на отдельный порт (7778) для ангара, как это было в оригинале. Клиент игнорирует IP/Port из пакета, вероятно, из-за жестких настроек лаунчера/конфига.
  • Работа на одном порту: Успешно реализована логика обработки обоих этапов входа (Login и Hall) на одном порту 7777.
  • Отправка данных: Мы пробовали отправлять клиенту различные комбинации данных (статистику, данные клана, обучение, время), чтобы "протолкнуть" загрузку.

Проблема (Тупик)​

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

Что делать дальше​

Так как официальные серверы закрыты, мы не можем "сниффать" (перехватывать) настоящий трафик. Дальнейшая работа требует углубленного анализа кода:

  1. Глубокий анализ в dnSpy:
    • Нужно отследить выполнение метода GameManager.LoginHall() и найти точное место, где игра убирает окно загрузки.
    • Проверить метод HandleHCLoginResult: возможно, он запускает цепочку запросов, которую мы не предусмотрели.
  2. Валидация данных: "Фейковая" статистика, которую мы отправляем, может содержать невалидные ID (например, ID танка, которого нет в клиенте), из-за чего интерфейс не может отрисоваться.
  3. Проверка шифрования: Хотя заголовок пакетов открытый, возможно, внутри данных ожидается специфическая криптография или контрольная сумма.
Итог: Серверная часть сокетов написана верно. Проблема теперь кроется исключительно в наполнении пакетов правильными игровыми данными.
 
Похоже не актуально уже, ибо автор молчит в лс, но вдруг кому-то нужно станет: реализовал вход до лобби/ангара, могу поделиться очередностью пакетов/рабочими данными для них.
 
Всем привет!

Пытаюсь воскресить старую игру Ground War: Tanks (закрылась в 2019, издатель Mail.Ru).
На руках остался только клиент игры (папка с файлами). Серверы выключены, сайт мертв.

Техническая инфа:

  • Движок: Unity (ориентировочно 4.x или 5.x).
  • Защита: Присутствуют файлы mrac.dll / mracinstall.exe (Mail.Ru Anti-Cheat).
  • Состояние: При запуске Tank.exe ничего не происходит или процесс сразу умирает (видимо, требует запуска через Игровой Центр или проверяет токен).
Что я хочу сделать:
Для начала - просто запустить клиент, чтобы он дошел хотя бы до экрана логина или главного меню, минуя проверки лаунчера и защиты. В идеале — начать копать в сторону эмуляции сервера.

Что я прошу:
Ищу человека, который разбирается в Unity и реверсе, которому было бы интересно глянуть файлы.

  1. Нужно понять, как отучить Assembly-CSharp.dll от проверки лаунчера.
  2. Вырезать инициализацию MRAC, чтобы игра не крашилась без серверов защиты.
Файлы игры:

Бюджет есть, ищу энтузиастов или профессионалов в этом деле, кто подскажет, в какую сторону копать в dnSpy, или поможет патчем Assembly-CSharp. Файлы лежат мертвым грузом, хочется сохранить игру для истории.
Здравствуйте!Могу помочь вам с этим планом,только расскажите в лс по продробнее,тоже хочу помочь возродить игру
Сообщение объединено:
Похоже не актуально уже, ибо автор молчит в лс, но вдруг кому-то нужно станет: реализовал вход до лобби/ангара, могу поделиться очередностью пакетов/рабочими данными для них.
Здравствуйте!Не могли бы вы пожалуйста поделиться со мной?у меня уже есть сообщество,которое обсужлает это дело.Буду очень благодарен если поделитесь
 
Последнее редактирование:
Похоже не актуально уже, ибо автор молчит в лс, но вдруг кому-то нужно станет: реализовал вход до лобби/ангара, могу поделиться очередностью пакетов/рабочими данными для них.
Привет возможно я не совсем вовремя но если у тебя остались файлы и файлы клиента, закинь в личку пожалуйста! Благодарю
 
Похоже не актуально уже, ибо автор молчит в лс, но вдруг кому-то нужно станет: реализовал вход до лобби/ангара, могу поделиться очередностью пакетов/рабочими данными для них.
Привет, дружище, если ещё всё в силе, можешь кинуть в лс, пожалуйста? Сам реализовал подобную вещь, но пришлось вырезать серверные обращения и проверки полностью, через сервер не получилось..
 
Назад
Сверху Снизу