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 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:
- The Android SDK tools - Download here.
- Or Android Studio (with Android SDK tools) - Download here.
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:
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:
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.
.png)
Zatim kliknite na Create Virtual Device
.png)
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!
.png)
U trenutnom prikazu moći ćete da izaberete i preuzmete Android image koji će telefon pokretati:
.png)
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
:
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-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:
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:
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:
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 poput:
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 pokreneteadb 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.
# 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ćavaadb 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
# 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:
Korisne opcije AVD-a
Napravi snapshot
Možete koristiti GUI da u bilo kom trenutku napravite snapshot VM-a:
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.