# AVD - Android Virtual Device {{#include ../../banners/hacktricks-training.md}} Hvala puno [**@offsecjay**](https://twitter.com/offsecjay) na pomoći prilikom kreiranja ovog sadržaja. ## Šta je Android Studio omogućava **pokretanje virtuelnih mašina Android koje možete koristiti za testiranje APK-ova**. Da biste ih koristili, biće vam potrebni: - **Android SDK alati** - [Preuzmite ovde](https://developer.android.com/studio/releases/sdk-tools). - Ili **Android Studio** (sa Android SDK alatima) - [Preuzmite ovde](https://developer.android.com/studio). Na Windows-u (u mom slučaju) **nakon instalacije Android Studio** imao sam **SDK alate instalirane u**: `C:\Users\\AppData\Local\Android\Sdk\tools` Na mac-u možete **preuzeti SDK alate** i imati ih u PATH pokretanjem: ```bash brew tap homebrew/cask brew install --cask android-sdk ``` Ili iz **Android Studio GUI** kao što je naznačeno u [https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](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 Java probleme: ```java export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home ``` ## GUI ### Pripremite Virtuelnu Mašinu Ako ste instalirali Android Studio, možete jednostavno otvoriti glavni prikaz projekta i pristupiti: _**Tools**_ --> _**AVD Manager.**_
Zatim, kliknite na _**Create Virtual Device**_
_**izaberite** telefon koji želite da koristite_ i kliknite na _**Next.**_ > [!WARNING] > Ako vam je potreban telefon sa instaliranim Play Store-om, izaberite onaj sa ikonom Play Store-a! > > U trenutnom prikazu moći ćete da **izaberete i preuzmete Android sliku** koju će telefon koristiti:
Dakle, izaberite je i ako nije preuzeta, kliknite na _**Download**_ simbol pored imena (**sada sačekajte da se slika preuzme).**\ Kada se slika preuzme, jednostavno izaberite **`Next`** i **`Finish`**. Virtuelna mašina će biti kreirana. Sada **svaki put kada pristupite AVD manager-u, biće prisutna**. ### Pokrenite Virtuelnu Mašinu Da biste je **pokrenuli**, jednostavno pritisnite _**Start button**_. ![](<../../images/image (518).png>) ## Alat za Komandnu Liniju > [!WARNING] > Za macOS možete pronaći `avdmanager` alat u `/Users//Library/Android/sdk/tools/bin/avdmanager` i `emulator` u `/Users//Library/Android/sdk/emulator/emulator` ako ste ih instalirali. Prvo što treba da uradite je da **odlučite koji telefon želite da koristite**, da biste videli listu mogućih telefona, izvršite: ``` C:\Users\\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 **odlučiti koju Android sliku želite da pokrenete na ovom uređaju.**\ Možete navesti sve opcije koristeći `sdkmanager`: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list ``` I **preuzmite** onaj (ili sve) koje želite da koristite sa: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64" ``` Kada preuzmete Android sliku koju želite da koristite, možete **prikazati sve preuzete Android slike** sa: ``` C:\Users\\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 sliku, tako da **možete kreirati virtuelnu mašinu koristeći**: ```bash C:\Users\\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 **napravio sam VM nazvan** "_AVD9_" koristeći **uređaj** "_Nexus 5X_" i **Android sliku** "_system-images;android-28;google_apis;x86_64_".\ Sada možete **prikazati virtuelne mašine** koje ste napravili sa: ```bash C:\Users\\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 ``` ### Pokreni Virtuelnu Mašinu > [!WARNING] > Za macOS možete pronaći alat `avdmanager` u `/Users//Library/Android/sdk/tools/bin/avdmanager` i `emulator` u `/Users//Library/Android/sdk/emulator/emulator` ako ste ih instalirali. Već smo videli kako možete da navedete kreirane virtuelne mašine, ali **takođe ih možete navesti koristeći**: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds AVD9 Pixel_2_API_27 ``` Možete jednostavno **pokrenuti svaku virtuelnu mašinu kreiranu** koristeći: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName" C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" ``` Ili koristeći naprednije opcije, možete pokrenuti virtuelnu mašinu kao što je: ```bash C:\Users\\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 zanimljive opcije, ali možete [**pronaći kompletnu listu ovde**](https://developer.android.com/studio/run/emulator-commandline) **Pokretanje** - `-snapshot name` : Pokreni VM snapshot - `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : Prikaži sve snimke koji su zabeleženi **Mreža** - `-dns-server 192.0.2.0, 192.0.2.255` : Omogućava da se navedu DNS serveri za VM odvojeni zarezom. - **`-http-proxy 192.168.1.12:8080`** : Omogućava da se navede HTTP proxy koji će se koristiti (veoma korisno za hvatanje saobraćaja koristeći Burp) - Ako postavke proxy-a ne rade iz nekog razloga, pokušajte da ih konfigurišete interno ili koristeći aplikaciju kao što je "Super Proxy" ili "ProxyDroid". - `-netdelay 200` : Postavi emulaciju latencije mreže u milisekundama. - `-port 5556` : Postavi TCP broj porta koji se koristi za konzolu i adb. - `-ports 5556,5559` : Postavi TCP portove koji se koriste za konzolu i adb. - **`-tcpdump /path/dumpfile.cap`** : Hvata sav saobraćaj u datoteku **Sistem** - `-selinux {disabled|permissive}` : Postavi Security-Enhanced Linux sigurnosni modul na onemogućen ili permisivan režim na Linux operativnom sistemu. - `-timezone Europe/Paris` : Postavi vremensku zonu za virtuelni uređaj - `-screen {touch(default)|multi-touch|o-touch}` : Postavi emulirani režim dodirnog ekrana. - **`-writable-system`** : Koristite ovu opciju da imate zapisivu sistemsku sliku tokom vaše emulacione sesije. Takođe ćete morati da pokrenete `adb root; adb remount`. Ovo je veoma korisno za instalaciju novog sertifikata u sistem. ## Rootovanje uređaja sa Play Store-a Ako ste preuzeli uređaj sa Play Store-om, nećete moći da dobijete root direktno, i dobićete ovu poruku o grešci ``` $ adb root adbd cannot run as root in production builds ``` Koristeći [rootAVD](https://github.com/newbit1/rootAVD) sa [Magisk](https://github.com/topjohnwu/Magisk) uspeo sam da ga rootujem (pratite na primer [**ovaj video**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **ili** [**ovaj**](https://www.youtube.com/watch?v=qQicUW0svB8)). ## Instalirajte Burp Sertifikat Proverite sledeću stranicu da biste saznali kako da instalirate prilagođeni CA sertifikat: {{#ref}} install-burp-certificate.md {{#endref}} ## Lepi AVD Opcije ### Napravite Snimak Možete **koristiti GUI** da napravite snimak VM-a u bilo kojem trenutku: ![](<../../images/image (234).png>) {{#include ../../banners/hacktricks-training.md}}