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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Veliko hvala @offsecjay na pomoći pri kreiranju ovog sadržaja.
Šta je
Android Studio omogućava pokretanje virtuelnih Android mašina koje možete koristiti za testiranje APK-ova. Da biste ih koristili, biće vam potrebno:
- The Android SDK tools - Download here.
- Ili Android Studio (with Android SDK tools) - Download here.
Na Windows-u (u mom slučaju) nakon instalacije Android Studio-a imao sam SDK Tools instalirane u: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
Na mac-u možete preuzeti SDK tools i imati ih u PATH pokretanjem:
brew tap homebrew/cask
brew install --cask android-sdk
Ili iz Android Studio GUI kako je navedeno u https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a što će ih instalirati u ~/Library/Android/sdk/cmdline-tools/latest/bin/ i ~/Library/Android/sdk/platform-tools/ i ~/Library/Android/sdk/emulator/
Za probleme sa Javom:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Priprema virtuelne mašine
Ako ste instalirali Android Studio, možete samo otvoriti glavni prikaz projekta i pristupiti: Tools --> AVD Manager.
.png)
Zatim kliknite na Create Virtual Device
.png)
odaberite telefon koji želite da koristite i kliknite na Next.
warning
Ako vam treba telefon sa Play Store instaliranim, odaberite onaj sa ikonom Play Store!
U trenutnom pogledu bićete u mogućnosti da odaberete i preuzmete Android image koji će telefon pokretati:
.png)
Dakle, odaberite ga i ako nije preuzet kliknite na simbol Download pored imena (sada sačekajte dok se image ne preuzme).
Kada je image preuzet, samo odaberite Next i Finish.
Virtuelna mašina će biti kreirana. Sada će dešava se da će svaki put kada pristupite AVD Manager-u ona biti prisutna.
Pokretanje virtuelne mašine
Da biste je pokrenuli, jednostavno pritisnite Start button.
.png)
Alat komandne linije
warning
Za macOS 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.
Pre svega treba da odlučite 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 odaberete ime uređaja koji želite da koristite, potrebno je da odlučite koju Android sliku želite da pokrenete na ovom uređaju.\ Možete navesti sve opcije koristeći sdkmanager:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
I preuzmite onaj (ili sve) koje želite da koristite sa:
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-e 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 ste Android image, tako da možete kreirati virtuelnu mašinu koristeći:
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 izlistati virtuelne mašine koje ste kreirali pomoću:
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
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.
Već smo videli kako možete izlistati kreirane virtuelne mašine, ali takođe ih možete izlistati koristeći:
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:
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 kao:
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 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 VM snapshot-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img: Prikaži sve snapshots koji su zabeleženi
Network
-dns-server 192.0.2.0, 192.0.2.255: Omogućava navođenje DNS servera odvojenih zarezima za VM.-http-proxy 192.168.1.12:8080: Omogućava navođenje HTTP proxy-ja za korišćenje (veoma korisno za presretanje saobraćaja koristeći Burp)- Ako podešavanja proxy-ja iz nekog razloga ne rade, pokušajte da ih konfigurišete interno ili pomoću aplikacije kao što su "Super Proxy" ili "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: Snimite sav saobraćaj u fajl
System
-selinux {disabled|permissive}: Podesi Security-Enhanced Linux (SELinux) modul bezbednosti u disabled ili permissive režim na Linux operativnom sistemu.-timezone Europe/Paris: Podesi vremensku zonu za virtuelni uređaj-screen {touch(default)|multi-touch|o-touch}: Podesi emulirani režim touch ekrana.-writable-system: Koristite ovu opciju da biste imali sistemsku sliku koja se može pisati tokom vaše emulacione sesije. Takođe ćete morati da pokreneteadb root; adb remount. Ovo je veoma korisno za instaliranje novog sertifikata u sistem.
Linux CLI setup (SDK/AVD quickstart)
Zvanični CLI alati olakšavaju kreiranje brzih emulatora pogodnih za debug bez Android Studio.
# 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
- Varijante sistemskih slika: google_apis (debuggable, omogućava adb root), google_apis_playstore (not rootable), aosp/default (lightweight).
- Tipovi buildova: userdebug često omogućava
adb rootna image-ima koji podržavaju debug. Play Store image-i su produkcijske verzije i blokiraju root. - Na x86_64 host-ovima, full-system ARM64 emulacija nije podržana od API 28+. Za Android 11+ koristite Google APIs/Play image-e koji uključuju per-app ARM-to-x86 translaciju da biste brzo pokretali mnoge ARM-only aplikacije.
Snimci iz 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 prevođenje binarnih fajlova (Android 11+)
Google APIs i Play Store images na Android 11+ mogu da prevode ARM binarne fajlove aplikacija po procesu, dok ostatak sistema ostaje nativan x86/x86_64. Ovo je često dovoljno brzo da testirate mnoge aplikacije koje rade samo na ARM-u 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 specifično trebaju Play services i prihvatate nedostatak root.
Rooting 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 o grešci
$ adb root
adbd cannot run as root in production builds
Korišćenjem rootAVD sa Magisk uspeo sam da ga root-ujem (pogledajte, na primer, ovaj video ili ovaj).
Instalacija Burp sertifikata
Pogledajte sledeću stranicu da biste saznali kako instalirati custom CA cert:
Korisne AVD opcije
Napravi snapshot
Možete koristiti GUI da u bilo kom trenutku napravite snapshot VM-a:
.png)
Reference
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- Android Emulator command line
- Run ARM apps on the Android Emulator (x86 translation)
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks