Android emulator file system

Анализ трафика приложений на Android Emulator. Причем здесь Root?

Привет! Я думаю, что наберется немало людей, перед которыми стоят интересные задачи по работе с приложениями. Например — анализ трафика для, разумеется, тестирования этих самых приложений! Вам выпало нелегкое бремя — необходимо отдебажить продовую сборку чего-либо и вы начинаете свои поиски решений проблем. А проблем у вас на этом пути будет много. О том, как их можно решить я и пишу.

Классический путь начинается с установки какого-нибудь Charles, настройки в нем proxy-сервера и попытки слушать трафик, однако мы быстро натыкаемся на проблему — все адекватные современные приложения используют HTTPS, а поэтому — на ваше устройство придется установить сертификат, который и позволит слушать трафик. Тут то и начинается самое интересное.

Давайте создадим чек-лист, на который будем ориентироваться в процессе:

⚑ Предварительные подготовления, позволяющие начать установку эмулятора

⚑ Вы находитесь здесь

⚐ Установка сертификата для MITM

⚐ Проверка работоспособности прослушки трафика

⚐ Перенос сертификата в системное хранилище

Установка Android Emulator

Я не буду описывать всю процедуру установки, надеюсь, вы сможете сделать все подготовительные действия, чтобы оказаться в ситуации, когда вам осталось лишь выбрать определенный тип OS в эмуляторе, а все предыдущие шаги уже выполнены.

1. Выбираем любой подходящий вариант, с важной оговоркой — это должна быть сборка без Google Play, но с Google Play Services (далее будет видно). Соответственно — выбираем устройство без треугольника

2. Выбираем любой интересующий образ в котором есть Google Play APIs

3. Устанавливаем параметр Cold Boot

Установка сертификата для proxy-sniffer

Для прослушки трафика я буду пользоваться Fiddler Everywhere. И покажу порядок настройки данной софтины, согласно которому мы закроем еще один пункт нашей дорожной карты.

Тут я сделаю небольшое лирическое отступление — данная программа платная, да и еще по подписке, и стоить будет, в лучшем случае — 10$ в месяц. Но, у вас будет триал в 30 дней, после которого нужно больше золота, поэтому можно использовать любой другой инструмент. Сам я пытался заюзать Postman — в нем тоже есть proxy-tooling, однако, корневые сертификаты, которые генерирует Postman, не пригодны для установки в Android 10 / 11. Однако, служба поддержки уже бдит, и, надеюсь, за отведенные 30 дней триала все заработает как надо (в Postman) и вы сможете пользоваться наиболее удобным (с моей точки зрения) инструментом для решения данной задачи. Когда это случится — я дополню данную статью. А теперь возвращаемся к процессу установки сертификата на устройство (эмулятор).

Нам необходимо раскрыть пункт Advanced Settings в настройках Fiddler, и экспортировать корневой сертификат. В данный момент я пользователь Windows и на данной ОС он окажется на рабочем столе, подсказка об этом показывается по наведению на значок вопроса.

Читайте также:  Экран живет своей жизнью андроид причины

После экспорта сертификата, плавным движением кистей рук, переносим его на запущенный эмулятор — файл окажется в папке . /Downloads . После чего можно сразу идти в настройки и устанавливать наш серт:

Отлично! Можем поставить галочку у еще одного пункта:

⚑ Установка сертификата для MITM

Проверяем, все ли ок

Самое время проверить, принесли ли наши усилия хоть какие-то полезные плоды. Подопытным кроликом сегодняшнего эксперимента будет приложение Reddit и первое, что мы увидим, если попытаемся загрузить посты:

А также бесконечное количество попыток SSL-handshake в Fiddler. Кажется, пора поставить прочерк сразу напротив двух пунктов нашей дорожной карты:

⚑ Проверка работоспособности прослушки трафика

Я есть root

Мне кажется, что наступил момент рассказать, для чего нам вообще рут? Все дело в том пресловутом изменении Android 7, после которого пользовательские сертификаты перестали быть доверенными. Посему — нам необходимо сделать что-то с нашим установленным сертификатом, чтобы мы смогли использовать его для изучения трафика нашего рабочего приложения. И сделать это можно, только если ваш девайс рутован. Тут же заключается и причина использования эмулятора, да и связанные с этим особенности: без эмулятора вам придется иметь постоянно рутованное устройство, если это отдельный выделенный смартфон — то проблем с этим особенно и нет (ну, кроме зарядки, постепенного устаревания и ограничений конкретной модели), однако, если у вас свой личный аппарат — то минусы от root могут быть существенными — не работающая система безопасности, сломанный Google Pay или отвалившиеся камеры. Ну и помимо всего прочего — эмулятор позволяет легко изменить версию Android (правда, придется повторить все действия, перечисленные тут, но у вас уже будет эта статья, а я вот это все пишу её не имея).

А теперь приступим. Благодаря прекраснейшему проекту весь процесс сводится к запуску всего лишь одного скрипта, с небольшими подготовительными работами. Также, обращайте внимание на то, что выводится в консоль и если вы пользуетесь Windows — то запускайте не .sh , а .bat . Возможно, WSL будет тут как раз кстати, но моя система, скажем так, с некоторыми особенностями, которые WSL использовать не позволяют (если вы знаете, как завести на Ryzen 5000-серии и WSL и Android Emulator — то прошу написать об этом комментарий).

А вот и сами работы:

Плюс, нужно перезагрузить эмулятор. Ну и, у пользователей Windows путь до образа будет примерно таким:

На выходе мы получаем рут, который сохраняется при перезагрузке эмулятора, но wipe делать не стоит.

Делаем сертификат доверенным

Для этого нам понадобится перенести его в хранилище доверенных сертификатов. Тут рут нам и нужен (не только тут, но это позже).

Для этого мы запускаем цепочку следующих команд:

После чего наблюдаем следующую картинку в системных сертификатах:

Наш сертификат стал системным, поэтому закроем еще один пункт:

⚑ Перенос сертификата в системное хранилище

Читайте также:  Вай сити для андроида

И давайте сразу проверим наше приложение:

Отлично! Теперь мы можем слушать HTTPS-трафик любых (ли?) приложений с эмулятора. Давайте, чтобы закрепить результат, попробуем еще одно приложение — Avito (как говорили Ник и Майк — это крепкий орешек).

Кажется, тут что-то пошло не так. Впрочем вы и так все знаете, так как видели гигантский спойлер в самом начале, поэтому ставим еще одну галку:

SSL-Unpinning

На данную тему есть множество решений, но, как правило, все они крутятся вокруг одной идеи — пересборки приложения, которое вы хотите изучить. Данный подход весьма громоздкий, сложный и может сподвигнуть к прокрастинации, поэтому нужно что-то такое, что позволит сделать все намного проще и универсальнее. И рецепт этого чего-то прямо тут, бесплатно и без СМС:

Благодаря наличию root установим Xposed

Благодаря Xposed установим модуль для отвязки SSL-привязки

Profit. (два пункта тут смотрелись бы уныло)

А теперь давайте по порядку.

Установка Xposed

С учетом нашего изначального плана слушать всё и вся на эмуляторе на этом шаге появляются некоторые сложности — нужно подобрать удачную комбинацию программных решений, которые будут работать и на эмуляторе. Благодаря этой статье вам совершенно точно не придется тратить несколько часов на поиски этих решений и будет достаточно следовать простой инструкции:

Скачиваем последнюю версию Magisk-модуля с интересным названием Riru и устанавливаем его посредством Magisk

Закрываем эмулятор, а затем снова запускаем (данный шаг эмулирует перезагрузку, которая у меня, по каким-то причинам, не работает, если работает у вас — может быть достаточно и её)

Находим в репозитории Magisk модуль с названием Riru — LSPosed и устанавливаем его

Снова ребутим эмулятор

Открываем приложение LSPosed, в котором необходимо установить уже Xposed-модуль SSLUnpinning

Переключаем все галки в настройках данного модуля у всех приложений, которые хотим слушать и активируем сам модуль

После этого вы оказались в ситуации, когда у вас есть эмулятор с:

Полноценным рутом (Magisk)

Установленным MITM-сертификатом в User-space

Установленным Xposed (LSPosed)

Установленным модулем для SSL-Unpinning

В процессе имея следующий набор картинок:

Можно честно поставить галку:

Настал час проверить, работает ли этот паровоз:

Работает! Ник и Майк ошиблись! Можем ставить и последнюю галку:

Какие есть нюансы? Во первых — при каждом включении эмулятора будет необходимо снова делать сертификаты доверенными (в принципе, после всех этих процедур можно отключить Cold Boot, и тогда не придется, но рано или вам придется перезагрузить эмулятор «жестко», и тогда потребуется поработать и с сертификатами). Возможно, тут есть постоянное решение или это можно, на худой конец, автоматизировать, но я устал. Во вторых — не все приложения в принципе хотят запускаться на эмуляторе. Самый надежный вариант — иметь набор выделенных телефонов на разных версиях Android, все из которых будут иметь весь арсенал инструментов из данного мануала (с небольшими изменениями), но он не всегда возможен.

Под конец — я еще раз продублирую всю инструкцию по пунктам, чтобы был понятен сам алгоритм:

Читайте также:  Hay day не запускается после обновления андроид

Делаем приготовления (ставим Android Studio), чтобы иметь возможность установить / запустить эмулятор

Устанавливаем эмулятор с параметрами, определенными выше

Устанавливаем интересующие нас приложения на эмулятор методом перетаскивания курсором и убеждаемся, что они в принципе работают и все это будет не зря

Получаем root (Magisk) посредством инструкции, указанной выше

Источник

Что делать, если под рукой нет Android-устройства? Обзор Android-эмуляторов

Введение

Часто бывает необходимость проверить работу свеженаписанного приложения на устройстве. Но вполне может оказаться, что устройства под рукой нет. Или нет устройства с определенными параметрами (правда, это больше относится к размеру/разрешению экрана). Что же делать в этом случае?
К счастью, альтернативы есть. Android-сообщество и разные компании предлагают на выбор несколько вариантов замены android-устройств для разных целей.

Я кратко расскажу о следующих:

  • Эмулятор в составе SDK
  • Genymotion
  • Android x86
  • Bluestacks

Если интересно — добро пожаловать под кат (осторожно, достаточно много картинок)

Эмулятор в составе SDK

Сайт: http://developer.android.com/sdk/index.html
Самый очевидный способ подмены устройства. Если занимаешься разработкой под Android — эмулятор точно есть.

Использование
Плюсы
Минусы
  • Медленный, если не использовать HAXM
  • Не ARM, если использовать HAXM
  • Нет эмуляции Bluetooth, OTG, наушников и некоторых других железных параметров

Genymotion

Сайт: http://www.genymotion.com/
Проприетарная реализация, выросшая из проекта AndroVM.
По сути, виртуальная машина на VirtualBox с дополнительными фишками вроде своих контролов, расширенной настройки и т.д.
Достаточно удобен, быстр, много возможность, коммандлайн тулы, Java API для тестов.
При создании устройства из сети выкачивается его образ.
APK можно устанавливать, перетянув их на окно с виртуалкой.

Плюсы
Минусы
  • Платный для компаний, и это главный минус
  • Не ARM
  • Достаточно долгий выход актуальных версий Android

Android x86

Сайт: http://www.android-x86.org/
Проект по портированию Android на платформу x86. Распространяется в виде образа iso, можно запустить/установить в виртуальной машине, при большом желании можно даже поставить на живую машину с x86 процессором (на ноутбук, например).
Работает быстро, но есть куча проблем из-за того, что это виртуальная машина. Например, привязывние мыши внутри окна виртуалки, доступ к adb только по сети и т.д.

Для использования в VirtualBox нужно отключать Mouse Integration, иначе в виртуальной машине не видно курсора.

Для подключения adb нужно выполнить

IP-адрес можно узнать, нажав в машине Alt+F1 и введя netcfg. Вернуться в графический режим — Alt+F7.

Плюсы
Минусы
  • Неудобный доступ к adb
  • Минусы, связанные с использованием VM — привязка мыши, например
  • Не ARM
  • Очень долгий выход актуальных версий

Bluestacks

Сайт: www.bluestacks.com
Позиционируется как плеер приложений для Windows, Mac и TV. Умеет запускать приложения, имеет доступ к маркету. Неудобен для разработки и тестирования — apk ставятся тулом из комплекта, но доступ к adb можно получить. Однако для запуска приложений может быть полезен.
Для подключения через adb:

Плюсы
Минусы
  • Неудобно ставить приложения
  • Непонятно, что с версиями android (2.3 под OS X, под Windows ставился 4.0)
  • Нет под linux

Источник

Оцените статью