SkyCards - уникальное мобильное приложение, которое объединяет увлечение авианаблюдением с элементами коллекционирования и игровой механики. Игра предлагает пользователям наблюдать за реальными рейсами в их окрестностях, "фотографировать" пролетавшие самолеты и собирать собственную коллекцию авиарейсов с учетом их редкости и ценности. С момента выпуска SkyCards привлекла множество фанатов авиации за счет свежего подхода к знакомству с миром самолетов. Однако за привлекательным интерфейсом скрывается сложное взаимодействие с серверной частью и процессами аутентификации. В связи с этим представляет огромный интерес опыт обратной разработки приложения, который позволяет заглянуть под капот и понять, как технически реализованы многие процессы SkyCards.
Обратная разработка или реверс-инжиниринг - это процесс анализа и воспроизведения работы программного обеспечения без исходного кода. В случае SkyCards задача осложняется тем, что приложение построено на React Native с использованием виртуальной машины Hermes, что значительно затрудняет чтение и интерпретацию кода. Специалист, желающий изучить SkyCards, начинает с анализа сетевого трафика приложения. Использование прокси-инструментов, таких как Proxyman, позволяет перехватывать запросы к серверу и изучать способы обмена данными между клиентом и сервисом. Примечательно, что приложение не использует сертификатное пиннинг и не внедряет специфичных механизмов TLS-фингерпринтинга, что облегчает перехват трафика.
Полученные данные представляются в виде бинарных протоколов protobuf, а некоторые вызовы, например связанные с регистрацией захвата самолета, обмениваются через JSON. Метод взаимодействия делится на два основных компонента: расходование фотокамер, ограниченных по количеству на игровом счете пользователя и обновляющихся через определённые интервалы, и сама регистрация успешного "снимка" самолета на сервере. Важным нюансом являются отдельные эндпоинты для списания камеры и фиксации захвата, при этом сервер не обязательно связывает один запрос с другим, что потенциально облегчает вмешательство. Клиентская часть мини-игры, где игрок пытается "сфотографировать" самолет, полностью выполняется на устройстве, и значение процента захвата самолета оказывается заведомо передаваемым параметром. Это открывает возможности для автоматизации процедуры, обходя игровую механику.
Разработка собственного клиента для подмены или автоматизации процесса потребовала глубокого изучения исходного кода приложения. Извлечение APK-файла с последующей декомпиляцией с помощью инструментов, таких как APKLab и JADX, позволило получить доступ к Java- и smali-кодам. Основная логика, впрочем, хранится в React Native JS-бандле, интерпретируемом виртуальной машиной Hermes. Hermes компилирует JavaScript в компактный байт-код, который плохо поддается чтению без специализированных декодеров. Среди ключевых находок оказалась нативная часть приложения - модуль "Request Signer", через который генерируются подписи для запросов регистрации захвата.
Эти подписи основаны на алгоритме HS256 и представляют собой JWT-подобные токены, гарантирующие аутентичность данных на сервере. Анализ и сборка ключей для подписи позволили пересоздавать корректные запросы, обходя встроенную защиту. Это раскрывает интересную деталь: несмотря на использование React Native, критичная криптографическая логика реализована в нативном коде, что повышает уровень защиты, но не отменяет возможность реверса. Параллельно оказался важным аспектом источник данных о самолётах. SkyCards получает их с помощью gRPC/Web, взаимодействуя с FlightRadar24 - популярным сервисом отслеживания самолетов в реальном времени.
Сообщество уже задокументировало protobuf-сообщения, что позволило с нуля создать простой клиент для запроса рейсов по заданной географической области. Таким образом, были получены данные, максимально приближенные к тем, что видит приложение, - модель самолета, идентификаторы, маршруты и другая метадата. Эта информация записывалась в структуру, подходящую для автозахвата через подписанный JSON. Итогом проделанной работы стала автоматизация цикла: обнаружение рейсов поблизости, выбор серии уникальных по маршрутам, формирование корректных подписанных запросов и отправка их на сервер SkyCards. Этот процесс демонстрирует, как с помощью обратной разработки возможно управлять игровой базой данных без непосредственного участия пользователя.
Однако такая автоматизация противоречит правилам использования, и разработчики SkyCards оперативно реагировали на случаи нарушения, ограничивая аккаунты нарушителей. Подобное исследование - не инструмент для читинга, а демонстрация архитектурных особенностей, безопасности и способов передачи данных современных мобильных приложений с игровыми элементами на базе реального мира. Успешное выявление секретов подписи запросов и обхода клиентской проверки подчеркивает необходимость комплексной защиты серверной логики, особенно при работе с ценными ресурсами, ограниченными во времени и количестве, как, например, ресурсы игровой камеры в SkyCards. Обратная разработка показала мощь современных инструментов, применяемых совместно с продвинутыми языковыми моделями - автоматизированная интерпретация Hermes-байнткода с помощью GPT-5 упростила понимание сложных JavaScript-фрагментов и уменьшила время анализа. Это открывает новую страницу сотрудничества человека и искусственного интеллекта при исследовании защищённого ПО.
SkyCards одновременно представляет интерес для аудитории авиалюбителей, геймеров и специалистов по безопасности. Изучение устройства приложения и способов защиты даёт представление о будущих трендах в сфере комбинированных игровых платформ, использующих реальные данные и сложные методы взаимодействия. В конечном счёте, опыт с SkyCards - показательный пример современного геймдева, где границы между реальностью и виртуальностью становятся все более размытыми, а игровые процессы активно интегрируются с внешними информационными системами. Для исследователей и разработчиков мобильных приложений знание подобных подходов становится критически важным для создания качественного, интересного и защищенного продукта, соответствующего ожиданиям самых взыскательных пользователей. .