AVD - Android Virtual Device
Merci beaucoup à @offsecjay pour son aide lors de la création de ce contenu.
Qu'est-ce que c'est
Android Studio permet de lancer des machines virtuelles Android que vous pouvez utiliser pour tester des APK. Pour les utiliser, vous aurez besoin de :
Les outils Android SDK - Téléchargez ici.
Ou Android Studio (avec les outils Android SDK) - Téléchargez ici.
Sous Windows (dans mon cas) après avoir installé Android Studio, j'ai eu les outils SDK installés dans : C:\Users\<NomUtilisateur>\AppData\Local\Android\Sdk\tools
Sous Mac, vous pouvez télécharger les outils SDK et les avoir dans le PATH en exécutant :
Ou depuis l'interface graphique d'Android Studio 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 de Java:
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 --> Gestionnaire AVD.
Ensuite, cliquez sur Créer un périphérique virtuel
sélectionnez le téléphone que vous souhaitez utiliser et cliquez sur Suivant.
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 !
Dans la vue actuelle, vous allez pouvoir sélectionner et télécharger l'image Android que le téléphone va exécuter :
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 (maintenant attendez 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 la lancer, 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 :
Une fois que vous avez décidé du nom de l'appareil que vous souhaitez utiliser, vous devez décider de l'image Android que vous souhaitez exécuter sur cet appareil.
Vous pouvez lister toutes les options en utilisant sdkmanager
:
Et téléchargez celui (ou tous ceux) que vous souhaitez utiliser avec :
Une fois que vous avez téléchargé l'image Android que vous souhaitez utiliser, vous pouvez liste toutes les images Android téléchargées avec :
À ce moment, vous avez décidé du dispositif que vous souhaitez utiliser et avez téléchargé l'image Android, vous pouvez donc créer la machine virtuelle en utilisant :
Dans la dernière commande j'ai créé une machine virtuelle 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 :
Exécuter la machine virtuelle
Nous avons déjà vu comment vous pouvez lister les machines virtuelles créées, mais vous pouvez également les lister en utilisant:
Vous pouvez simplement exécuter n'importe quelle machine virtuelle créée en utilisant :
Ou en utilisant des options plus avancées, vous pouvez exécuter une machine virtuelle comme :
Options de ligne de commande
Cependant, il existe de nombreuses options utiles en ligne de commande que vous pouvez utiliser pour démarrer 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 la capture d'écran de la machine virtuelle-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Lister toutes les captures d'écran enregistrées
Réseau
-dns-server 192.0.2.0, 192.0.2.255
: Permet d'indiquer séparés par des virgules les serveurs DNS à utiliser par la machine virtuelle.-http-proxy 192.168.1.12:8080
: Permet d'indiquer un proxy HTTP à utiliser (très utile pour capturer le trafic en utilisant 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é sur un système d'exploitation Linux en mode désactivé ou permissif.-timezone Europe/Paris
: Définir le fuseau horaire pour le périphérique 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 inscriptible 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.
Rootage d'un appareil Play Store
Si vous avez téléchargé un appareil avec Play Store, vous ne pourrez pas obtenir directement les droits root, et vous obtiendrez ce message d'erreur
Utilisation de 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 comment installer un certificat CA personnalisé :
Install Burp CertificateOptions AVD intéressantes
Prendre un instantané
Vous pouvez utiliser l'interface graphique pour prendre un instantané de la machine virtuelle à tout moment :
Last updated