AVD - Android Virtual Device

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Дуже вдячні @offsecjay за допомогу у створенні цього контенту.

Що це таке

Android Studio дозволяє запускати віртуальні машини Android, які можна використовувати для тестування APK-файлів. Для використання їх вам знадобиться:

У Windows (у моєму випадку) після встановлення Android Studio інструменти SDK встановлені в: C:\Users\<Ім'яКористувача>\AppData\Local\Android\Sdk\tools

На Mac ви можете завантажити інструменти SDK та мати їх у PATH, запустивши:

brew tap homebrew/cask
brew install --cask android-sdk

Або з графічного інтерфейсу Android Studio, як вказано в https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a, який встановить їх у ~/Library/Android/sdk/cmdline-tools/latest/bin/ та ~/Library/Android/sdk/platform-tools/ та ~/Library/Android/sdk/emulator/

Для проблем Java:

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home

GUI

Підготовка віртуальної машини

Якщо ви встановили Android Studio, ви можете просто відкрити головний вид проекту та отримати доступ до: Інструменти --> Менеджер AVD.

Потім клацніть на Створити віртуальний пристрій

виберіть телефон, який ви хочете використовувати та клацніть на Далі.

Якщо вам потрібен телефон з встановленим магазином Play, виберіть той, на якому є значок магазину Play!

У поточному вигляді ви зможете вибрати та завантажити зображення Android, на якому буде працювати телефон:

Тож, виберіть його, і якщо воно не завантажене, клацніть на символ Завантажити поряд з ім'ям (зачекайте, доки зображення буде завантажено). Після завантаження зображення, просто виберіть Далі та Готово.

Віртуальна машина буде створена. Тепер кожного разу, коли ви звертаєтеся до менеджера AVD, вона буде присутня.

Запуск віртуальної машини

Для запуску просто натисніть кнопку Старт.

Інструмент командного рядка

Спочатку вам потрібно вирішити, який телефон ви хочете використовувати, щоб побачити список можливих телефонів, виконайте:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device

d: 0 or "automotive_1024p_landscape"
Name: Automotive (1024p landscape)
OEM : Google
Tag : android-automotive-playstore
---------
id: 1 or "Galaxy Nexus"
Name: Galaxy Nexus
OEM : Google
---------
id: 2 or "desktop_large"
Name: Large Desktop
OEM : Google
Tag : android-desktop
---------
id: 3 or "desktop_medium"
Name: Medium Desktop
OEM : Google
Tag : android-desktop
---------
id: 4 or "Nexus 10"
Name: Nexus 10
OEM : Google
[...]

Після того як ви вирішили назву пристрою, який ви хочете використовувати, вам потрібно вирішити, яке зображення Android ви хочете запустити на цьому пристрої. Ви можете переглянути всі варіанти за допомогою sdkmanager:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list

І завантажте той (або всі), які ви хочете використовувати за допомогою:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"

Після того, як ви завантажили образ Android, який ви хочете використовувати, ви можете переглянути всі завантажені образи Android за допомогою:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
id: 1 or "android-28"
Name: Android API 28
Type: Platform
API level: 28
Revision: 6
----------
id: 2 or "android-29"
Name: Android API 29
Type: Platform
API level: 29
Revision: 4

На цей момент ви вирішили, який пристрій ви хочете використовувати, і завантажили зображення Android, тому ви можете створити віртуальну машину, використовуючи:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat -v create avd -k "system-images;android-28;google_apis;x86_64" -n "AVD9" -d "Nexus 5X"

У останній команді я створив ВМ з назвою "AVD9" використовуючи пристрій "Nexus 5X" та зображення Android "system-images;android-28;google_apis;x86_64". Тепер ви можете переглянути список віртуальних машин, які ви створили за допомогою:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd

Name: AVD9
Device: Nexus 5X (Google)
Path: C:\Users\cpolo\.android\avd\AVD9.avd
Target: Google APIs (Google Inc.)
Based on: Android API 28 Tag/ABI: google_apis/x86_64

The following Android Virtual Devices could not be loaded:
Name: Pixel_2_API_27
Path: C:\Users\cpolo\.android\avd\Pixel_2_API_27_1.avd
Error: Google pixel_2 no longer exists as a device

Запуск віртуальної машини

Ми вже бачили, як ви можете переглянути створені віртуальні машини, але ви також можете переглянути їх за допомогою:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27

Ви можете просто запустити будь-яку створену віртуальну машину за допомогою:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"

Або використовуючи більш розширені опції, ви можете запустити віртуальну машину таким чином:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system

Опції командного рядка

Проте існує багато різних корисних опцій командного рядка, які можна використовувати для запуску віртуальної машини. Нижче ви можете знайти деякі цікаві опції, але можете знайти повний список тут

Завантаження

  • -snapshot name : Запуск знімка віртуальної машини

  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Перелік усіх записаних знімків

Мережа

  • -dns-server 192.0.2.0, 192.0.2.255 : Дозволяє вказати через кому DNS-сервери для віртуальної машини.

  • -http-proxy 192.168.1.12:8080 : Дозволяє вказати HTTP-проксі для використання (дуже корисно для захоплення трафіку за допомогою Burp)

  • -port 5556 : Встановлює номер TCP-порту, який використовується для консолі та adb.

  • -ports 5556,5559 : Встановлює TCP-порти, які використовуються для консолі та adb.

  • -tcpdump /path/dumpfile.cap : Захоплює весь трафік у файл

Система

  • -selinux {disabled|permissive} : Встановлює модуль безпеки Linux у режимі вимкнено або дозволено на операційній системі Linux.

  • -timezone Europe/Paris : Встановлює часовий пояс для віртуального пристрою

  • -screen {touch(default)|multi-touch|o-touch} : Встановлює режим емульованого сенсорного екрану.

  • -writable-system : Використовуйте цю опцію, щоб мати записний образ системи під час сеансу емуляції. Вам також потрібно буде виконати adb root; adb remount. Це дуже корисно для встановлення нового сертифіката в системі.

Отримання root-доступу до пристрою Play Store

Якщо ви завантажили пристрій з Play Store, ви не зможете отримати root-доступ безпосередньо, і ви отримаєте це повідомлення про помилку

$ adb root
adbd cannot run as root in production builds

Використовуючи rootAVD з Magisk мені вдалося отримати root-доступ (див. наприклад це відео або це).

Встановлення сертифікату Burp

Перевірте наступну сторінку, щоб дізнатися, як встановити власний сертифікат CA:

Приємні опції AVD

Зробити знімок

Ви можете використовувати GUI, щоб зробити знімок віртуальної машини у будь-який момент:

Last updated