Об этом проекте
Этот репозиторий представляет собой набор документации, а не готовое к запуску приложение. В нём зафиксированы результаты обратной разработки декомпилированного APK Spotify для Android и связанного проекта под названием spotify-muter.
Область исследования и метод
Анализируемая сборка — Spotify 9.1.84.2205 (релиз r1), декомпилированная с помощью JADX 1.5.6 с включённой деобфускацией и восстановлением некорректного кода. Сгенерированное дерево исходников размещено в каталоге decompiled/sources/. Если JADX не может восстановить критически важный метод, применяется точечная распаковка через APKTool/smali; целевые объекты байткода сохраняются в analysis/smali-targets/. В заметках указано, что это требовалось для восстановления построителя действий MediaSession и частей сопоставления UI пропуска рекламы.
Структура документации
README служит указателем для пронумерованных заметок: область и ограничения обратной разработки; архитектура приложения; воспроизведение и состояние плеера; интеграция с Android MediaSession; рекламный конвейер; рекламная отчётность и отслеживание; пропуск и ограничения воспроизведения; сеть (Esperanto и Cosmos); карта подсистем и пакетов; архитектура Spotify Ad Muter; исследовательский индекс с открытыми вопросами; инвентаризация компонентов Android; среда выполнения и стек фреймворков; индекс пакетов верхнего уровня; подробная трассировка рекламных этапов, задержки пропуска и поведения Android skip-next.
Концептуальная модель
Заметки описывают высокоуровневый поток от SpotifyApplication через SpotifyMainActivity и интерфейсы функций с ветвлением на состояние плеера и навигацию/UI. Состояние плеера ведёт к ContextTrack и Restrictions, которые используются как для экспорта MediaSession (в системный UI Android и внешние интеграции), так и для команд плеера, передаваемых в ядро плеера Spotify. Реклама описывается как вставленная в ту же модель воспроизведения, что и обычные треки, но содержащая специфичные для рекламы метаданные, такие как is_advertisement, ad_id, ad_playback_id, ad.is_skippable и ad.skippable_ad_delay.
Повторяющееся наблюдение состоит в том, что Spotify предоставляет стабильные доменные модели, такие как PlayerState, ContextTrack и типы запросов/ответов protobuf, тогда как большая часть связующего кода сильно обфусцирована в пакете p204p.
Маркировка уверенности
Документация различает три уровня: Confirmed (напрямую видно в декомпилированном коде, smali, ресурсах или манифесте), Strong inference (несколько независимых путей кода поддерживают одну интерпретацию) и Uncertain (восстановление/обфускация или граница нативного кода/бэкенда не позволяют сделать окончательный вывод). В заметках явно избегают трактовки сгенерированных JADX имён как оригинальных имён из исходного кода.
Для чего это полезно
Материал предназначен для читателей, изучающих внутреннее устройство Android-приложений, обработку состояния медиавоспроизведения, интеграцию MediaSession и логику рекламы/пропуска в большом обфусцированном приложении. Это исследовательский и справочный ресурс, а не инструмент для конечных пользователей; в нём не заявляется предоставление рабочего модифицированного клиента.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.