Обход ограничений страны в BlackBerry App World

Дисклеймер: описанная ниже дыра исправлена. На новых версиях App World она не работает. У меня нет времени заниматься поддержкой. Вы можете сами поэкспериментировать и поискать альтернативный вариант.

Итак, стало известно, что BlackBerry Messenger работает в России у Билайна и МТС, если у вас подключен BIS. Но BlackBerry App World запрещает скачивание приложения в России:

Такая несправедливость не остается безнаказанной. Я сделал небольшой реверс-инжиниринг и написал приложение, которое обходит это ограничение.

Вот так выглядит экран на устройстве в России, при попытке набрать «blackberry messenger» в строке поиска:

Как видим, искомый элемент не найден.

Далее ставим программу Router (исходники, ссылка для загрузки OTA). В настройках приложения разрешаем ему всё. Запускаем ее, на экране должно быть:

appworld.blackberry.com OK

Если там ошибка ControlledAccessException, то еще раз проверьте, что все разрешения приложению Router даны.

Не надо выходить из Router, а просто нажать красную кнопку. Router работает в фоне.

Запускаем App World и ищем «blackberry messenger»:

Ура! Можно скачать и запустить. BBM показывает, что доступен, но сообщения не ходят, если у вас нет BIS.

Таким образом, я установил BBM Жене и себе на 8520 и 9900. Дело осталось за малым: подключить BIS и насладиться общением лучшего в мире мобильного чата.

А теперь немного технических деталей.

Я использовал SmartSnif, чтобы получить URL, на которые обращается симулятор BlackBerry, когда запущен BlackBerry App World. Выяснилось, что все они выглядят примерно так:

http://appworld.blackberry.com/ClientAPI/list/13?os=7.0.0&model=9900&clientver=3.0&countryid=182&carrierid=356&currentmcc=250

MCC 250 — это мобильный код России.

Далее я написал приложение Router, которое перехватывает все запросы на домен appworld.blackberry.com и подменяет currentmcc=250 на currentmcc=302. 302 — это Канада, на всякий случай. Я даже не экспериментировал с другими параметрами. Неожиданно всё просто заработало.

Вообще я не планировал это делать, и в мыслях у меня была другая идея: обойти ограничение приложения Twitter для BlackBerry, которое работает только через BIS и Wi-Fi. Но там защита оказалась чуть хитрее. Перехватчик работает на уровне системы, то есть мы даже знаем, какого типа соединение (Wi-Fi, BES, BIS, Carrier APN, WAP) приложения третьих партий пытаются установить. По идее, если мы видим, что Twitter ломится на Wi-Fi по какому-либо URL, то нужно просто вернуть новое соединение на тот же URL, но не по Wi-Fi, а по Carrier APN. Говоря проще, выкинуть из URL подстрочку «interface=wifi». Я закончил тем, что выяснил, что приложение отправляет запросы на домен api.twitter.com (кто бы мог подумать!) и менее вероятно, что ходит по HTTPs на blackberryid.blackberry.com (но в этом меньше уверенности, наверное, какое-то другое приложение пошло и подпортило картину), но, судя по всему наличие соединения проверяется не путем попытки установки связи с сервером, а через API состояния соединения. Короче, не взлетело.

Я также посмотрел на Facebook, у которого такая же проблема. К сожалению, перехватчик урлов не сможет помочь в этом случае, поскольку снифинг показал, что приложение ломится на невероятно много доменных имен. Причем нельзя понять, сколько всего доменов может использоваться. А перехватчику урлов нужно знать точное доменное имя, без wildcard. У Вконтакта такая же фигня, куча доменов csXXXX.vkontakte.ru, где XXXX — это цифры. Установить перехватчик на 10000 доменных имен можно, но телефон начинает настолько тормозить, что лучше не надо 🙂

Вот такие находки сегодня.

Запись опубликована в рубрике Uncategorized. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *