mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
215 lines
9.0 KiB
Markdown
215 lines
9.0 KiB
Markdown
# 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\<UserName>\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.**_
|
|
|
|
<div align="center" data-full-width="false">
|
|
|
|
<figure><img src="../../images/image (1142).png" alt="" width="293"><figcaption></figcaption></figure>
|
|
|
|
</div>
|
|
|
|
Zatim, kliknite na _**Create Virtual Device**_
|
|
|
|
<figure><img src="../../images/image (1143).png" alt="" width="188"><figcaption></figcaption></figure>
|
|
|
|
_**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!
|
|
>
|
|
> <img src="../../images/image (1144).png" alt="" data-size="original">
|
|
|
|
U trenutnom prikazu moći ćete da **izaberete i preuzmete Android sliku** koju će telefon koristiti:
|
|
|
|
<figure><img src="../../images/image (1145).png" alt="" width="375"><figcaption></figcaption></figure>
|
|
|
|
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**_.
|
|
|
|
.png>)
|
|
|
|
## Alat za Komandnu Liniju
|
|
|
|
> [!WARNING]
|
|
> Za macOS možete pronaći `avdmanager` alat u `/Users/<username>/Library/Android/sdk/tools/bin/avdmanager` i `emulator` u `/Users/<username>/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\<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 **odlučiti koju Android sliku želite da pokrenete na ovom uređaju.**\
|
|
Možete navesti 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 sliku koju želite da koristite, možete **prikazati sve preuzete Android slike** sa:
|
|
```
|
|
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 sliku, tako da **možete kreirati 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 **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\<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
|
|
```
|
|
### Pokreni Virtuelnu Mašinu
|
|
|
|
> [!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 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\<UserName>\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\<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 što je:
|
|
```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 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:
|
|
|
|
.png>)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|