AVD - Android Virtual Device

Support HackTricks

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

Що таке

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

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

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

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

Або з Android Studio GUI, як вказано в 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 Manager.

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

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

Якщо вам потрібен телефон з встановленим Play Store, виберіть один з іконкою Play Store на ньому!

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

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

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

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

Щоб запустити її, просто натисніть на Кнопку старт.

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

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

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

Command line options

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

Boot

  • -snapshot name : Запустити знімок VM

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

Network

  • -dns-server 192.0.2.0, 192.0.2.255 : Дозволити вказати через кому DNS-сервери для VM.

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

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

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

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

System

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

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

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

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

Rooting a Play Store device

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

$ adb root
adbd cannot run as root in production builds

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

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

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

Install Burp Certificate

Гарні параметри AVD

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

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

Підтримка HackTricks

Last updated