# AVD - Android Virtual Device {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} Thank you very much to [**@offsecjay**](https://twitter.com/offsecjay) for his help while creating this content. ## O que Ă© O Android Studio permite **executar mĂĄquinas virtuais do Android que vocĂȘ pode usar para testar APKs**. Para usĂĄ-las, vocĂȘ precisarĂĄ: * As **ferramentas do Android SDK** - [Baixe aqui](https://developer.android.com/studio/releases/sdk-tools). * Ou **Android Studio** (com ferramentas do Android SDK) - [Baixe aqui](https://developer.android.com/studio). No Windows (no meu caso) **apĂłs instalar o Android Studio** eu tinha as **ferramentas SDK instaladas em**: `C:\Users\\AppData\Local\Android\Sdk\tools` No mac vocĂȘ pode **baixar as ferramentas SDK** e tĂȘ-las no PATH executando: ```bash brew tap homebrew/cask brew install --cask android-sdk ``` Ou a partir da **Android Studio GUI** conforme indicado em [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), que irĂĄ instalĂĄ-los em `~/Library/Android/sdk/cmdline-tools/latest/bin/` e `~/Library/Android/sdk/platform-tools/` e `~/Library/Android/sdk/emulator/` Para os problemas de Java: ```java export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home ``` ## GUI ### Prepare Virtual Machine Se vocĂȘ instalou o Android Studio, pode apenas abrir a visualização principal do projeto e acessar: _**Tools**_ --> _**AVD Manager.**_
EntĂŁo, clique em _**Create Virtual Device**_
_**selecione** o telefone que vocĂȘ deseja usar_ e clique em _**Next.**_ {% hint style="warning" %} Se vocĂȘ precisar de um telefone com Play Store instalada, selecione um com o Ă­cone do Play Store! {% endhint %} Na visualização atual, vocĂȘ poderĂĄ **selecionar e baixar a imagem do Android** que o telefone irĂĄ executar:
EntĂŁo, selecione-a e se nĂŁo estiver baixada, clique no sĂ­mbolo de _**Download**_ ao lado do nome (**agora aguarde atĂ© que a imagem seja baixada).**\ Uma vez que a imagem esteja baixada, basta selecionar **`Next`** e **`Finish`**. A mĂĄquina virtual serĂĄ criada. Agora **toda vez que vocĂȘ acessar o AVD manager, ela estarĂĄ presente**. ### Run Virtual Machine Para **executĂĄ-la**, basta pressionar o _**Start button**_. ![](<../../.gitbook/assets/image (518).png>) ## Command Line tool Primeiramente, vocĂȘ precisa **decidir qual telefone deseja usar**, para ver a lista de telefones possĂ­veis, execute: ``` 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 [...] ``` Uma vez que vocĂȘ tenha decidido o nome do dispositivo que deseja usar, vocĂȘ precisa **decidir qual imagem do Android deseja executar neste dispositivo.**\ VocĂȘ pode listar todas as opçÔes usando `sdkmanager`: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list ``` E **baixe** o que vocĂȘ deseja usar com: {% code overflow="wrap" %} ```bash C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64" ``` {% endcode %} Uma vez que vocĂȘ tenha baixado a imagem do Android que deseja usar, vocĂȘ pode **listar todas as imagens do Android baixadas** com: ``` 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 ``` Neste momento, vocĂȘ decidiu o dispositivo que deseja usar e baixou a imagem do Android, entĂŁo **vocĂȘ pode criar a mĂĄquina virtual usando**: {% code overflow="wrap" %} ```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" ``` {% endcode %} No Ășltimo comando **criei uma VM chamada** "_AVD9_" usando o **dispositivo** "_Nexus 5X_" e a **imagem Android** "_system-images;android-28;google\_apis;x86\_64_".\ Agora vocĂȘ pode **listar as mĂĄquinas virtuais** que vocĂȘ criou com: ```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 ``` ### Executar MĂĄquina Virtual JĂĄ vimos como vocĂȘ pode listar as mĂĄquinas virtuais criadas, mas **vocĂȘ tambĂ©m pode listĂĄ-las usando**: ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds AVD9 Pixel_2_API_27 ``` VocĂȘ pode simplesmente **executar qualquer mĂĄquina virtual criada** usando: {% code overflow="wrap" %} ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName" C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" ``` {% endcode %} Ou usando opçÔes mais avançadas, vocĂȘ pode executar uma mĂĄquina virtual como: {% code overflow="wrap" %} ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system ``` {% endcode %} ### OpçÔes de linha de comando No entanto, existem **muitas opçÔes Ășteis de linha de comando** que vocĂȘ pode usar para iniciar uma mĂĄquina virtual. Abaixo, vocĂȘ pode encontrar algumas opçÔes interessantes, mas pode [**encontrar uma lista completa aqui**](https://developer.android.com/studio/run/emulator-commandline) **Inicialização** * `-snapshot name` : Iniciar snapshot da VM * `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : Listar todos os snapshots gravados **Rede** * `-dns-server 192.0.2.0, 192.0.2.255` : Permitir indicar os servidores DNS separados por vĂ­rgula para a VM. * **`-http-proxy 192.168.1.12:8080`** : Permitir indicar um proxy HTTP a ser usado (muito Ăștil para capturar o trĂĄfego usando Burp) * `-port 5556` : Definir o nĂșmero da porta TCP que Ă© usado para o console e adb. * `-ports 5556,5559` : Definir as portas TCP usadas para o console e adb. * **`-tcpdump /path/dumpfile.cap`** : Capturar todo o trĂĄfego em um arquivo **Sistema** * `-selinux {disabled|permissive}` : Definir o mĂłdulo de segurança Security-Enhanced Linux para modo desativado ou permissivo em um sistema operacional Linux. * `-timezone Europe/Paris` : Definir o fuso horĂĄrio para o dispositivo virtual * `-screen {touch(default)|multi-touch|o-touch}` : Definir o modo de tela sensĂ­vel ao toque emulado. * **`-writable-system`** : Use esta opção para ter uma imagem de sistema gravĂĄvel durante sua sessĂŁo de emulação. VocĂȘ tambĂ©m precisarĂĄ executar `adb root; adb remount`. Isso Ă© muito Ăștil para instalar um novo certificado no sistema. ## Rooting de um dispositivo da Play Store Se vocĂȘ baixou um dispositivo com a Play Store, nĂŁo conseguirĂĄ obter root diretamente, e vocĂȘ receberĂĄ esta mensagem de erro ``` $ adb root adbd cannot run as root in production builds ``` Usando [rootAVD](https://github.com/newbit1/rootAVD) com [Magisk](https://github.com/topjohnwu/Magisk), consegui fazer root (siga, por exemplo, [**este vĂ­deo**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **ou** [**este aqui**](https://www.youtube.com/watch?v=qQicUW0svB8)). ## Instalar Certificado Burp Verifique a pĂĄgina a seguir para aprender como instalar um certificado CA personalizado: {% content-ref url="install-burp-certificate.md" %} [install-burp-certificate.md](install-burp-certificate.md) {% endcontent-ref %} ## Boas OpçÔes AVD ### Tirar um Snapshot VocĂȘ pode **usar a GUI** para tirar um snapshot da VM a qualquer momento: ![](<../../.gitbook/assets/image (234).png>) {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}