AVD - Android Virtual Device

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks

Vielen Dank an @offsecjay fĂŒr seine Hilfe bei der Erstellung dieses Inhalts.

Was ist

Android Studio ermöglicht es, Android-VMs auszufĂŒhren, die du zum Testen von APKs verwenden kannst. Um sie zu nutzen benötigst du:

Unter Windows (in meinem Fall) hatte ich nach der Installation von Android Studio die SDK Tools installiert in: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

Auf macOS kannst du die SDK tools herunterladen und sie mit folgendem Befehl in den PATH aufnehmen:

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

Oder ĂŒber die Android Studio GUI, wie in https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a angegeben, die diese in ~/Library/Android/sdk/cmdline-tools/latest/bin/ und ~/Library/Android/sdk/platform-tools/ und ~/Library/Android/sdk/emulator/ installiert

FĂŒr die Java-Probleme:

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

GUI

Virtuelle Maschine vorbereiten

If you installed Android Studio, you can just open the main project view and access: Tools –> AVD Manager.

Then, click on Create Virtual Device

WÀhlen Sie das Telefon, das Sie verwenden möchten und klicken Sie auf Next.

Warning

Wenn Sie ein Telefon mit installiertem Play Store benötigen, wÀhlen Sie eines mit dem Play Store-Symbol darauf!

In der aktuellen Ansicht können Sie das Android-Image auswĂ€hlen und herunterladen, das das Telefon ausfĂŒhren wird:

WĂ€hlen Sie es also aus und falls es nicht heruntergeladen ist, klicken Sie auf das Download-Symbol neben dem Namen (warten Sie nun, bis das Image heruntergeladen ist).
Sobald das Image heruntergeladen ist, wÀhlen Sie einfach Next und Finish.

Die virtuelle Maschine wird erstellt. Jetzt wird sie jedes Mal angezeigt, wenn Sie den AVD Manager aufrufen.

Virtuelle Maschine starten

Um sie zu starten, drĂŒcken Sie einfach den Start button.

Kommandozeilen-Tool

Warning

FĂŒr macOS finden Sie das avdmanager-Tool in /Users/<username>/Library/Android/sdk/tools/bin/avdmanager und den emulator in /Users/<username>/Library/Android/sdk/emulator/emulator, wenn Sie sie installiert haben.

Zuerst mĂŒssen Sie entscheiden, welches Telefon Sie verwenden möchten; um die Liste der möglichen Telefone zu sehen, fĂŒhren Sie aus:

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
[...]

Sobald du den Namen des GerĂ€ts, das du verwenden möchtest, festgelegt hast, musst du entscheiden, welches Android-Image du auf diesem GerĂ€t ausfĂŒhren möchtest.
Du kannst alle Optionen mit sdkmanager auflisten:

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

Und lade denjenigen (oder alle) herunter, die du verwenden möchtest, mit:

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

Sobald Sie das Android image, das Sie verwenden möchten, heruntergeladen haben, können Sie mit folgendem Befehl alle heruntergeladenen Android images auflisten:

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

In diesem Moment haben Sie das GerÀt ausgewÀhlt, das Sie verwenden möchten, und das Android image heruntergeladen, daher können Sie die virtuelle Maschine mit:

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"

Im letzten Befehl habe ich eine VM mit dem Namen “AVD9” erstellt, mit dem device “Nexus 5X” und dem Android image “system-images;android-28;google_apis;x86_64”.
Jetzt können Sie die virtuellen Maschinen auflisten, die Sie erstellt haben, mit:

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

Virtuelle Maschine starten

Warning

FĂŒr macOS findest du das avdmanager tool in /Users/<username>/Library/Android/sdk/tools/bin/avdmanager und den emulator in /Users/<username>/Library/Android/sdk/emulator/emulator, falls du sie installiert hast.

Wir haben bereits gesehen, wie du die erstellten virtuellen Maschinen auflisten kannst, aber du kannst sie auch mit:

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

Sie können einfach jede erstellte virtuelle Maschine starten mit:

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

Oder mit fortgeschritteneren Optionen können Sie eine virtuelle Maschine wie folgt ausfĂŒhren:

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

Befehlszeilenoptionen

Es gibt jedoch viele nĂŒtzliche Befehlszeilenoptionen, die du verwenden kannst, um eine virtuelle Maschine zu starten. Unten findest du einige interessante Optionen, du kannst aber find a complete list here

Boot

  • -snapshot name : Start VM snapshot
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : List all the snapshots recorded

Netzwerk

  • -dns-server 192.0.2.0, 192.0.2.255 : Ermöglicht es, die DNS-Server kommasepariert an die VM anzugeben.
  • -http-proxy 192.168.1.12:8080 : Ermöglicht es, einen HTTP-Proxy anzugeben (sehr nĂŒtzlich, um den Traffic mit Burp zu erfassen)
  • Wenn die Proxy-Einstellungen aus irgendeinem Grund nicht funktionieren, versuche, sie intern zu konfigurieren oder eine Anwendung wie “Super Proxy” oder “ProxyDroid” zu verwenden.
  • -netdelay 200 : Setzt die Netzwerklatenz-Emulation in Millisekunden.
  • -port 5556 : Setzt die TCP-Portnummer, die fĂŒr die Konsole und adb verwendet wird.
  • -ports 5556,5559 : Setzt die TCP-Ports, die fĂŒr die Konsole und adb verwendet werden.
  • -tcpdump /path/dumpfile.cap : Erfasst sĂ€mtlichen Traffic in einer Datei

System

  • -selinux {disabled|permissive} : Setzt das Security-Enhanced Linux Security-Modul auf disabled oder permissive Mode unter Linux.
  • -timezone Europe/Paris : Setzt die Zeitzone fĂŒr das virtuelle GerĂ€t
  • -screen {touch(default)|multi-touch|o-touch} : Setzt den emulierten Touchscreen-Modus.
  • -writable-system : Verwende diese Option, um ein beschreibbares System-Image wĂ€hrend der Emulation zu haben. Du musst außerdem adb root; adb remount ausfĂŒhren. Das ist sehr nĂŒtzlich, um ein neues Zertifikat im System zu installieren.

Linux CLI setup (SDK/AVD quickstart)

Die offiziellen CLI-Tools machen es einfach, schnelle, debugbare Emulatoren ohne Android Studio zu erstellen.

# Directory layout
mkdir -p ~/Android/cmdline-tools/latest

# Download commandline tools (Linux)
wget https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip -O /tmp/cmdline-tools.zip
unzip /tmp/cmdline-tools.zip -d ~/Android/cmdline-tools/latest
rm /tmp/cmdline-tools.zip

# Env vars (add to ~/.bashrc or ~/.zshrc)
export ANDROID_HOME=$HOME/Android
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH

# Install core SDK components
sdkmanager --install "platform-tools" "emulator"

# Install a debuggable x86_64 system image (Android 11 / API 30)
sdkmanager --install "system-images;android-30;google_apis;x86_64"

# Create an AVD and run it with a writable /system & snapshot name
avdmanager create avd -n PixelRootX86 -k "system-images;android-30;google_apis;x86_64" -d "pixel"
emulator -avd PixelRootX86 -writable-system -snapshot PixelRootX86_snap

# Verify root (debuggable images allow `adb root`)
adb root
adb shell whoami  # expect: root

Hinweise

  • System-Image-Varianten: google_apis (debuggable, erlaubt adb root), google_apis_playstore (nicht rootbar), aosp/default (leichtgewichtig).
  • Build-Typen: userdebug erlaubt oft adb root auf debug-fĂ€higen Images. Play Store-Images sind Produktions-Builds und blockieren Root-Zugriff.
  • Auf x86_64-Hosts wird die Full-System-ARM64-Emulation ab API 28+ nicht unterstĂŒtzt. FĂŒr Android 11+ verwende Google APIs/Play-Images, die eine per-App ARM-zu-x86-Übersetzung bieten, um viele ARM-only Apps schnell auszufĂŒhren.

Snapshots von der CLI

# Save a clean snapshot from the running emulator
adb -s emulator-5554 emu avd snapshot save my_clean_setup

# Boot from a named snapshot (if it exists)
emulator -avd PixelRootX86 -writable-system -snapshot my_clean_setup

ARM→x86 BinĂ€rĂŒbersetzung (Android 11+)

Google APIs und Play Store images auf Android 11+ können ARM-App-Binaries pro Prozess ĂŒbersetzen, wĂ€hrend der Rest des Systems nativ x86/x86_64 bleibt. Das ist oft schnell genug, um viele ARM-only Apps auf dem Desktop zu testen.

Tipp: Bevorzuge Google APIs x86/x86_64 images wÀhrend pentests. Play images sind praktisch, blockieren aber adb root; verwende sie nur, wenn du speziell Play services benötigst und das Fehlen von root akzeptierst.

Rooting eines Play Store-GerÀts

Wenn du ein GerÀt mit Play Store heruntergeladen hast, kannst du nicht direkt root erhalten und bekommst diese Fehlermeldung

$ adb root
adbd cannot run as root in production builds

Using rootAVD with Magisk I was able to root it (follow for example this video or this one).

Burp-Zertifikat installieren

Siehe die folgende Seite, um zu lernen, wie man ein benutzerdefiniertes CA-Zertifikat installiert:

Install Burp Certificate

NĂŒtzliche AVD-Optionen

Snapshot erstellen

Du kannst die GUI verwenden, um jederzeit einen Snapshot der VM zu erstellen:

Referenzen

Tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & ĂŒben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

UnterstĂŒtzen Sie HackTricks