Как вернуть прошлую версию приложения из AppStore — Charles

Доброго времени суток, дорогие читатели!

Сегодня будет небольшая запись для любителей яблочной техники. Наверняка многие из вас сталкивались с тем, что вы решили обновить приложение на своем любимом телефоне/планшете, а приложение внезапно или перестало стабильно работать, или оттуда убрали какие-то полезные функции (например во вконтакте теперь музыку не послушать, умный будильник из приложения Mi Fit для браслета убрали, экзаменационные билеты ПДД обновили, хотя может кто-то до сентября сдавать экзамен будет и ему не нужны ваши новые билеты и тп).

appstore

Так вот, как с этим быть? Скорее всего большинство из вас услышат только два ответа на этот вопрос:

  1. Никак, Жизньболь, Всётлен;
  2. Перейти на Андроид, там таких проблем нет.

Однако, есть и третий вариант (я сейчас не рассматриваю джейлбрейк и режим разработчика) - это скачать одну из предыдущих версий. При этом, всё легально и мы ничего не нарушим :)

Суть этого метода вот в чем: мы хотим скачать из AppStore приложение, AppStore в ответ присылает нам список доступных версий, мы выбираем нужную и скачиваем её. После этого устанавливаем приложение на свой родной iPhone или iPad.

Сейчас многие, наверное, удивились, ведь нам не предлагают никаких версий (кроме некоторых случаев, когда ваше устройство не поддерживает последнюю версию и вам предлагают скачать последнюю рабочую). Так вот, предлагают, просто мы об этом не знаем и наш iTunes сам решает за нас, скачивая последнюю версию.

Для работы нам понадобится: iTunes, мобильный девайс, и одна небольшая программка под названием Charles. Она платная, но её можно использовать в демо-режиме с полным функционалом, просто время от времени будет вылезать баннер со счетчиком и предложением купить программу, плюс она сама закроется через пол часа времени.


к содержанию ↑

Charles Web Debugging Proxy

Итак, скачиваем Charles, например, отсюда. С установкой ничего сложного, поэтому запускаем её и видим баннер, который вы еще не раз увидите:

Баннер Charles

После 10 секунд появится основное окно:

Основное окно Charles

Теперь немного о том, что эта программа, собственно, делает. А делает она следующее: она мониторит сеть и показывает какие запросы были отправлены и какие ответы были получены (да, это прокси). Однако для правильной работы нужно правильно выставить настройки прокси, но нас сейчас это не интересует.

Теперь открываем iTunes, в поиске AppStore вводим VK, жмем Enter, находим оф приложение от ВК и скачиваем его:

VK App в iTunes

Достаточно загрузить процентов 10 от приложения, после чего смело отменяйте загрузку (выберите загрузку и нажмите на клавишу Delete):

Отмена загрузки

Это нам нужно, чтобы Charles получил информацию. Открываем теперь его и видит примерно такое:

Список запросов в Charles

Фактически, он просто мониторит обычные POST/GET запросы и обрабатывает их содержимое в удобном для нас виде (запросы от Apple передаются, например, в xml синтаксисе)

Находим строчку (у меня это https://p45-buy.itunes.apple.com), раскрываем список и видим там <unknown>.

Дело в том, что это зашифрованный запрос и по-умолчанию Charles не показывает такие запросы. Так что щелкаем правой кнопкой по строчке   и выбираем Enable SSL Proxying:

Включаем прослушку SSL

Далее снова повторяем фишку с загрузкой приложения (если у вас написано "Загружено", хотя вы отменили загрузку, то обновите страницу нажатием на заголовок приложения) и её последующей отмены (если не отменить, то придется удалять приложение, а это лишние телодвижения). Затем переходим обратно в Charles, раскрываем список и переходим по пути WebObjects - MZBuy.woa - wa - buyProduct. Далее щелкаем на buyProduct и в правом окне переходим в панель Response. Прокручиваем наш ответ от AppStore до строчки <key>softwareVersionExternalIdentifiers</key>:

Список версий VK App

Ниже вы увидите список номеров версий (да, это не сами версии, а некий номер). К сожалению, узнать какому номеру какая версия соответствует мы не сможем, поэтому придется идти наугад. Нам нужна версия 2.0, потому что это последняя версия, где можно было слушать аудиозаписи. Сохраняем весь список с номерами, он нам потом пригодится.

Далее следуем по методу дихотомии (если выбранная нами версия выше, чем 2.0, то ниже по списку идти не нужно, она где-то выше и наоборот). Выбираем, например, номер 813678592. Сохраняем где-нибудь и, самое главное, теперь жмем правой кнопкой по buyProduct и выбираем пункт Breakpoints:

Выставляем брейкпоинты в Charles

Далее у меня истекли 30 минут и программа выдала:

Окончание пробного периода в Charles

Так что мне пришлось заново проделывать все операции :)

В общем, установили мы брейкпоинт. Это означает, что перед отправкой запроса на скачку ПО программа этот запрос перехватит и не отправит, пока мы не скажем. Мы в этом запросе поменяем одну строчку (чтобы отправить запрос не для последней версии ПО, а нужной нам) и только после этого отправим. Снова скачиваем приложение и тут сразу появится окно Charles:

Меняем запрос в Charles

Меняем строчку номер 5 на <string>813678592</string> и жмем на кнопку Execute. После этого еще раз жмем на кнопку Execute и ждем когда приложение скачается. Смотрим версию скачанного нами приложения и видим:

Версия VK App

Увы, мимо. Удаляем эту версию и пробуем другой номер. При этом стоит учитывать, что там, по всей видимости, есть какие-то промежуточные версии, которые не будут скачиваться, вместо них скачается последняя (на данный момент - это версия 2.8). И таким образом находим тот самый номер 166062632 (я его угадал с двух попыток :) ):

VK App версии 2.0

На этом работа с Charles окончена и можно устанавливать приложение на ваше устройство. Только не забывайте, что старые версии могут несколько странно работать, особенно, если это приложения для социалок :)

При этом, если вам надоест слушать музыку, можете прямо на самом устройстве обновить приложение, как вы это обычно делаете. У меня таким образом стоит старая версия Mi Fit (1.6.2, номер 816329811, если кто пользуется браслетами Mi Band), в которой умный будильник еще жив.

к содержанию ↑

Послесловие

Как-то так. Таким нехитрым способом можно установить практически любую версию практически любого приложения, т.к. многие разработчики оставили список версий для совместимости со старыми устройствами :)

Как и всегда, если есть какие-то вопросы, то добро пожаловать в комментарии к этой статье.

PS: За существование оной статьи отдельное спасибо другу проекта и члену нашей команды под ником “barn4k“.

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Sonikelf

Порадуем, пожалуй, яблочников.. :)

Денис Борискин

0_0 ты уже за яблочников взялся? Круто! продолжение цикла о яблочниках будет?

ixley

Спасибо, попробую

Sonikelf

Лишь бы на пользу ;)

Tawhed

..........Перейти на Андроид, там таких проблем нет..........
Я вообще незнаю приложение для андроид, чтобы делать откаты.
Есть приложение и статья для андроид?

apple

Подскажите как быть, у меня как у вас нету вкладки Response в правом окне ?

Чел

Статья старовата, но вдруг. Что делать, если на втором круге загрузки itunes начинает жаловаться, что сертификат сервера был подписан неизвестным бюро сертификации и не дает Charles получить остальные данные?