AVD - Android Virtual Device
Reading time: 7 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Grazie mille a @offsecjay per il suo aiuto nella creazione di questo contenuto.
Cos'è
Android Studio consente di eseguire macchine virtuali di Android che puoi utilizzare per testare APK. Per utilizzarle avrai bisogno di:
- Gli strumenti SDK di Android - Scarica qui.
- Oppure Android Studio (con strumenti SDK di Android) - Scarica qui.
In Windows (nel mio caso) dopo aver installato Android Studio avevo gli strumenti SDK installati in: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
In mac puoi scaricare gli strumenti SDK e averli nel PATH eseguendo:
brew tap homebrew/cask
brew install --cask android-sdk
O da Android Studio GUI come indicato in https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a che li installerà in ~/Library/Android/sdk/cmdline-tools/latest/bin/
e ~/Library/Android/sdk/platform-tools/
e ~/Library/Android/sdk/emulator/
Per i problemi di Java:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Preparare la Macchina Virtuale
Se hai installato Android Studio, puoi semplicemente aprire la vista principale del progetto e accedere a: Strumenti --> AVD Manager.
Poi, clicca su Crea Dispositivo Virtuale
seleziona il telefono che vuoi usare e clicca su Avanti.
warning
Se hai bisogno di un telefono con il Play Store installato, seleziona uno con l'icona del Play Store!
Nella vista attuale sarai in grado di selezionare e scaricare l'immagine Android che il telefono eseguirà:
Quindi, selezionala e se non è scaricata clicca sul simbolo Scarica accanto al nome (ora aspetta fino a quando l'immagine è scaricata).
Una volta che l'immagine è scaricata, seleziona semplicemente Avanti
e Fine
.
La macchina virtuale sarà creata. Ora ogni volta che accedi all'AVD manager sarà presente.
Esegui la Macchina Virtuale
Per eseguirla basta premere il Pulsante di Avvio.
Strumento da Riga di Comando
Prima di tutto devi decidere quale telefono vuoi usare, per vedere l'elenco dei telefoni possibili esegui:
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
[...]
Una volta deciso il nome del dispositivo che vuoi utilizzare, devi decidere quale immagine Android vuoi eseguire su questo dispositivo.
Puoi elencare tutte le opzioni utilizzando sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
E scarica quello (o tutti) che vuoi utilizzare con:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
Una volta scaricato l'immagine Android che desideri utilizzare, puoi elencare tutte le immagini Android scaricate con:
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
In questo momento hai deciso il dispositivo che vuoi utilizzare e hai scaricato l'immagine Android, quindi puoi creare la macchina virtuale utilizzando:
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"
Nel comando finale ho creato una VM chiamata "AVD9" utilizzando il dispositivo "Nexus 5X" e l'immagine Android "system-images;android-28;google_apis;x86_64".
Ora puoi elencare le macchine virtuali che hai creato con:
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
Esegui Macchina Virtuale
Abbiamo già visto come puoi elencare le macchine virtuali create, ma puoi anche elencarle usando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Puoi semplicemente eseguire qualsiasi macchina virtuale creata utilizzando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
O utilizzando opzioni più avanzate, puoi eseguire una macchina virtuale come:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Opzioni della riga di comando
Tuttavia ci sono molte opzioni utili della riga di comando che puoi utilizzare per avviare una macchina virtuale. Di seguito puoi trovare alcune opzioni interessanti ma puoi trovare un elenco completo qui
Avvio
-snapshot name
: Avvia snapshot VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Elenca tutti gli snapshot registrati
Rete
-dns-server 192.0.2.0, 192.0.2.255
: Consente di indicare separati da virgola i server DNS per la VM.-http-proxy 192.168.1.12:8080
: Consente di indicare un proxy HTTP da utilizzare (molto utile per catturare il traffico usando Burp)-port 5556
: Imposta il numero di porta TCP utilizzato per la console e adb.-ports 5556,5559
: Imposta le porte TCP utilizzate per la console e adb.-tcpdump /path/dumpfile.cap
: Cattura tutto il traffico in un file
Sistema
-selinux {disabled|permissive}
: Imposta il modulo di sicurezza Security-Enhanced Linux su modalità disabilitata o permissiva su un sistema operativo Linux.-timezone Europe/Paris
: Imposta il fuso orario per il dispositivo virtuale-screen {touch(default)|multi-touch|o-touch}
: Imposta la modalità dello schermo touch emulato.-writable-system
: Usa questa opzione per avere un'immagine di sistema scrivibile durante la tua sessione di emulazione. Dovrai anche eseguireadb root; adb remount
. Questo è molto utile per installare un nuovo certificato nel sistema.
Rooting di un dispositivo Play Store
Se hai scaricato un dispositivo con Play Store non sarai in grado di ottenere root direttamente, e riceverai questo messaggio di errore
$ adb root
adbd cannot run as root in production builds
Utilizzando rootAVD con Magisk sono riuscito a fare il root (segui ad esempio questo video o questo).
Installa il Certificato Burp
Controlla la seguente pagina per imparare come installare un certificato CA personalizzato:
{{#ref}} install-burp-certificate.md {{#endref}}
Opzioni AVD Interessanti
Fai uno Snapshot
Puoi utilizzare l'interfaccia grafica per fare uno snapshot della VM in qualsiasi momento:
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.