Как стать автором
Обновить

Reversing Google Play Store

Время на прочтение 2 мин
Количество просмотров 29K
Заранее извиняюсь, что довольно таки мало технических подробностей про запросы/ответы, пока что сам разбираюсь.

Да, вслед за Реверсом AppStore, решил я взяться за то же самое, но с Google. Google Play Store. (как Бонд. Джеймс Бонд).

Весело то, что у гугла все просто и секъюрно. Юзаются подписи, nonce'ы. А также сервис разделяется на две составляющие — push и обычную. Все запаковано во что бы вы думали? Правильно — protobuffers! It's hard to decode, ибо формат бинарного сообщения сам себя не описывает, много эвристики и веселья.
Забавно, однако, что, как и в Apple, ВНЕЗАПНО, плевали они на стандарты (или я неправильно понял?) — gzip отдается плейнтекстом/binary — в protobuffers, а вот binary отдается в… gzip!
image
Добро пожаловать под кат.

image
Покупка проходит очень легко и непринужденно сложно.

Первое — /fdfe/toc — выдает данные о Terms&Conditions маркета и другую обязательную чушь.
Второе — /fdfe/purchase или /market/api/ApiRequest — получить данные о покупке (та кнопка «купить» в маркете)
Третье — /fdfe/completePurchase — выполнить собственно покупку
Четвертое — /fdfe/purchaseStatus или /market/api/ApiRequest — проверить статус покупки — получить nonce и прочие параметры о покупке в json
Пятое — /market/api/ApiRequest — получение Nonce, деталей покупки
Шестое- запрос к /market/api/ApiRequest и получение какой-то интересной строки типа ‹ г bе`PxБОі‰‰ эњ — я не понял, что это.

Также не ясно, почему запросы идут то к /market/api/ApiRequest, то к /fdfe/* при покупке. Может я попал под тихую смену протоколов?

+ большой брат следит за тобой! Переодически уходят запросы на /fdfe/log:
image

Вместе с этим приходит push-уведомление с данными о том, что, «ваша покупка загружена», либо «не удалось совершить покупку» — пока остановился на этом. А без уведомления ничего не работает. Еще одна степень защиты, однако.

Забавно, что все это дело (push) работет через TCP with SSL/TLS (уважаю), ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет — protobuffers в base64 и что-то еще:
image

To be continued... (если меня, конечно, корпорация добра не забанит)


PS:
Удалось уже сэмулировать и вполне работает покупка восстанавливаемых покупок, но очень нестабильно. Если хотите как-то помочь, составить, например, .proto файл для ответов маркета — добро пожаловать в личку.
PSS:
Я работаю не один, мне помогает человек с ником madkite, не знаю, есть ли он на хабре. По ходу нет.
Теги:
Хабы:
+64
Комментарии 17
Комментарии Комментарии 17

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн