AVD - Android Virtual Device

Reading time: 10 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Veliko hvala @offsecjay na pomoći pri izradi ovog sadržaja.

Šta je

Android Studio omogućava pokretanje virtuelnih Android mašina koje možete koristiti za testiranje APKs. Da biste ih koristili trebaće vam:

Na Windowsu (u mom slučaju) posle instalacije Android Studio imao sam SDK Tools instalirane u: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

Na mac možete download the SDK tools i dodati ih u PATH pokretanjem:

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

Ili iz Android Studio GUI kako je naznačeno u https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a koje će ih instalirati u ~/Library/Android/sdk/cmdline-tools/latest/bin/ i ~/Library/Android/sdk/platform-tools/ i ~/Library/Android/sdk/emulator/

Za Java probleme:

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

GUI

Priprema virtuelne mašine

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

Zatim kliknite na Create Virtual Device

izaberite telefon koji želite da koristite i kliknite na Next.

warning

Ako vam treba telefon sa Play Store instaliranim, izaberite onaj koji ima Play Store ikonicu!

U trenutnom prikazu moći ćete da izaberete i preuzmete Android image koji će telefon pokretati:

Dakle, izaberite ga, a ako nije preuzet kliknite na simbol Download pored imena (sada sačekajte da se image preuzme).
Kada je image preuzet, jednostavno izaberite Next i Finish.

Virtuelna mašina će biti kreirana. Sada svaki put kada pristupite AVD Manager-u biće prisutna.

Pokretanje virtuelne mašine

Da biste je pokrenuli jednostavno pritisnite Start button.

Alat komandne linije

warning

For macOS you can find the avdmanager tool in /Users/<username>/Library/Android/sdk/tools/bin/avdmanager and the emulator in /Users/<username>/Library/Android/sdk/emulator/emulator if you have them installed.

Prvo morate odlučiti koji telefon želite da koristite, da biste videli listu mogućih telefona izvršite:

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

Kada odlučite ime uređaja koji želite da koristite, potrebno je da odlučite koji Android image želite da pokrenete na ovom uređaju.
Možete prikazati sve opcije koristeći sdkmanager:

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

I preuzmite onaj (ili sve) koje želite da koristite sa:

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

Kada preuzmete Android image koji želite da koristite, možete prikazati sve preuzete Android image-ove pomoću:

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

U ovom trenutku ste odlučili koji uređaj želite da koristite i preuzeli Android image, tako da možete da kreirate virtuelnu mašinu koristeći:

bash
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"

U poslednjoj komandi sam kreirao VM pod imenom "AVD9" koristeći uređaj "Nexus 5X" i Android image "system-images;android-28;google_apis;x86_64".
Sada možete prikazati virtuelne mašine koje ste kreirali pomoću:

bash
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

Pokretanje virtuelne mašine

warning

Na macOS-u možete pronaći alat avdmanager u /Users/<username>/Library/Android/sdk/tools/bin/avdmanager i emulator u /Users/<username>/Library/Android/sdk/emulator/emulator, ako ih imate instalirane.

Već smo videli kako možete prikazati kreirane virtuelne mašine, ali možete ih i izlistati pomoću:

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

Možete jednostavno pokrenuti bilo koju kreiranu virtuelnu mašinu koristeći:

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

Ili koristeći naprednije opcije, možete pokrenuti virtuelnu mašinu poput:

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

Opcije komandne linije

Međutim, postoji mnogo različitih korisnih opcija iz komandne linije koje možete koristiti za pokretanje virtuelne mašine. Ispod možete pronaći neke interesantne opcije, ali možete find a complete list here

Boot

  • -snapshot name : Pokreni snapshot VM-a
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Prikaži sve zabeležene snapshotove

Network

  • -dns-server 192.0.2.0, 192.0.2.255 : Dozvoljava navođenje DNS servera, odvojenih zarezom, za VM.
  • -http-proxy 192.168.1.12:8080 : Dozvoljava navođenje HTTP proxy-ja za korišćenje (veoma korisno za presretanje saobraćaja koristeći Burp)
  • If the proxy settings aren't working for some reason, try to configure them internally or using an pplication like "Super Proxy" or "ProxyDroid".
  • -netdelay 200 : Podesi emulaciju latencije mreže u milisekundama.
  • -port 5556 : Podesi TCP port koji se koristi za konzolu i adb.
  • -ports 5556,5559 : Podesi TCP portove koji se koriste za konzolu i adb.
  • -tcpdump /path/dumpfile.cap : Zabeleži sav saobraćaj u fajl

System

  • -selinux {disabled|permissive} : Podesite Security-Enhanced Linux (SELinux) sigurnosni modul u režim disabled ili permissive na Linux operativnom sistemu.
  • -timezone Europe/Paris : Podesi vremensku zonu za virtuelni uređaj
  • -screen {touch(default)|multi-touch|o-touch} : Podesite emulirani režim touchscreen-a.
  • -writable-system : Koristite ovu opciju da biste imali zapisivu sistemsku sliku tokom sesije emulacije. Takođe ćete morati da pokrenete adb root; adb remount. Ovo je veoma korisno za instaliranje novog sertifikata u sistem.

Podešavanje Linux CLI (SDK/AVD quickstart)

Službeni CLI alati olakšavaju kreiranje brzih emulatora koje je lako debug-ovati, bez Android Studio.

bash
# 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

Beleške

  • System image flavors: google_apis (debuggable, omogućava adb root), google_apis_playstore (not rootable), aosp/default (lightweight).
  • Build types: userdebug često omogućava adb root na debug-capable images. Play Store images su produkcijske verzije i blokiraju root.
  • Na x86_64 hostovima, full-system ARM64 emulation nije podržana od API 28+. Za Android 11+ koristite Google APIs/Play images koje uključuju per-app ARM-to-x86 translation da biste brzo pokretali mnoge ARM-only apps.

Snimci iz CLI

bash
# 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 binarna translacija (Android 11+)

Google APIs i Play Store images na Android 11+ mogu da prevode ARM app binarne po procesu dok ostatak sistema ostaje native x86/x86_64. Ovo je često dovoljno brzo za testiranje mnogih ARM-only apps na desktopu.

Savet: Preferirajte Google APIs x86/x86_64 images during pentests. Play images su zgodne ali blokiraju adb root; koristite ih samo kada vam izričito trebaju Play services i prihvatate nedostatak roota.

Rootovanje Play Store uređaja

Ako ste preuzeli uređaj sa Play Store, nećete moći direktno da dobijete root, i dobićete ovu poruku greške

$ adb root
adbd cannot run as root in production builds

Korišćenjem rootAVD sa Magisk uspeo sam da ga root-ujem (pogledaj, na primer, ovaj video ili ovaj).

Instalacija Burp sertifikata

Proveri sledeću stranicu da saznaš kako instalirati prilagođeni CA sertifikat:

Install Burp Certificate

Korisne opcije AVD-a

Napravi snapshot

Možete koristiti GUI da u bilo kom trenutku napravite snapshot VM-a:

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks