AVD - Android Virtual Device
Reading time: 8 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Merci beaucoup à @offsecjay pour son aide lors de la création de ce contenu.
Qu'est-ce que c'est
Android Studio permet de faire fonctionner des machines virtuelles Android que vous pouvez utiliser pour tester des APK. Pour les utiliser, vous aurez besoin de :
- Les outils SDK Android - Téléchargez ici.
- Ou Android Studio (avec les outils SDK Android) - Téléchargez ici.
Sous Windows (dans mon cas), aprÚs avoir installé Android Studio, j'avais les outils SDK installés dans : C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
Sur Mac, vous pouvez télécharger les outils SDK et les avoir dans le PATH en exécutant :
brew tap homebrew/cask
brew install --cask android-sdk
Ou depuis Android Studio GUI comme indiqué dans https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a qui les installera dans ~/Library/Android/sdk/cmdline-tools/latest/bin/
et ~/Library/Android/sdk/platform-tools/
et ~/Library/Android/sdk/emulator/
Pour les problĂšmes Java :
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Préparer la machine virtuelle
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : Outils --> AVD Manager.
.png)
Ensuite, cliquez sur Créer un appareil virtuel
.png)
sélectionnez le téléphone que vous souhaitez utiliser et cliquez sur Suivant.
warning
Si vous avez besoin d'un téléphone avec le Play Store installé, sélectionnez-en un avec l'icÎne du Play Store dessus !
.png)
Dans la vue actuelle, vous allez pouvoir sélectionner et télécharger l'image Android que le téléphone va exécuter :
.png)
Donc, sélectionnez-la et si elle n'est pas téléchargée, cliquez sur le symbole Télécharger à cÎté du nom (attendez maintenant que l'image soit téléchargée).
Une fois l'image téléchargée, sélectionnez simplement Suivant
et Terminer
.
La machine virtuelle sera créée. Maintenant chaque fois que vous accédez au gestionnaire AVD, elle sera présente.
Exécuter la machine virtuelle
Pour lancer la machine, appuyez simplement sur le bouton DĂ©marrer.
Outil en ligne de commande
Tout d'abord, vous devez décider quel téléphone vous souhaitez utiliser, afin de voir la liste des téléphones possibles, exécutez :
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
[...]
Une fois que vous avez décidé du nom de l'appareil que vous souhaitez utiliser, vous devez décider quelle image Android vous souhaitez exécuter sur cet appareil.
Vous pouvez lister toutes les options en utilisant sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
Et téléchargez celui (ou tous) que vous souhaitez utiliser avec :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
Une fois que vous avez téléchargé l'image Android que vous souhaitez utiliser, vous pouvez lister toutes les images Android téléchargées avec :
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
à ce moment, vous avez décidé de l'appareil que vous souhaitez utiliser et vous avez téléchargé l'image Android, donc vous pouvez créer la machine virtuelle en utilisant :
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"
Dans la derniÚre commande, j'ai créé une VM nommée "AVD9" en utilisant le dispositif "Nexus 5X" et l'image Android "system-images;android-28;google_apis;x86_64".
Maintenant, vous pouvez lister les machines virtuelles que vous avez créées avec :
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
Exécuter une machine virtuelle
Nous avons déjà vu comment vous pouvez lister les machines virtuelles créées, mais vous pouvez également les lister en utilisant :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Vous pouvez simplement exécuter n'importe quelle machine virtuelle créée en utilisant :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
Ou en utilisant des options plus avancées, vous pouvez exécuter une machine virtuelle comme :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Options de ligne de commande
Cependant, il existe beaucoup d'options utiles de ligne de commande différentes que vous pouvez utiliser pour initier une machine virtuelle. Ci-dessous, vous pouvez trouver quelques options intéressantes mais vous pouvez trouver une liste complÚte ici
DĂ©marrage
-snapshot name
: DĂ©marrer le snapshot de la VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Lister tous les snapshots enregistrés
RĂ©seau
-dns-server 192.0.2.0, 192.0.2.255
: Permet d'indiquer séparés par des virgules les serveurs DNS à la VM.-http-proxy 192.168.1.12:8080
: Permet d'indiquer un proxy HTTP Ă utiliser (trĂšs utile pour capturer le trafic avec Burp)-port 5556
: Définir le numéro de port TCP utilisé pour la console et adb.-ports 5556,5559
: Définir les ports TCP utilisés pour la console et adb.-tcpdump /path/dumpfile.cap
: Capturer tout le trafic dans un fichier
SystĂšme
-selinux {disabled|permissive}
: Définir le module de sécurité Linux renforcé (SELinux) sur désactivé ou en mode permissif sur un systÚme d'exploitation Linux.-timezone Europe/Paris
: DĂ©finir le fuseau horaire pour le dispositif virtuel-screen {touch(default)|multi-touch|o-touch}
: Définir le mode d'écran tactile émulé.-writable-system
: Utilisez cette option pour avoir une image systÚme modifiable pendant votre session d'émulation. Vous devrez également exécuteradb root; adb remount
. C'est trĂšs utile pour installer un nouveau certificat dans le systĂšme.
Rooter un appareil Play Store
Si vous avez téléchargé un appareil avec le Play Store, vous ne pourrez pas obtenir l'accÚs root directement, et vous recevrez ce message d'erreur
$ adb root
adbd cannot run as root in production builds
En utilisant rootAVD avec Magisk, j'ai pu le rooter (suivez par exemple cette vidéo ou celle-ci).
Installer le certificat Burp
Consultez la page suivante pour apprendre à installer un certificat CA personnalisé :
Options AVD intéressantes
Prendre un instantané
Vous pouvez utiliser l'interface graphique pour prendre un instantané de la VM à tout moment :
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.