AVD - Android Virtual Device
Reading time: 8 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.
Muito obrigado a @offsecjay pela ajuda na criação deste conteĂșdo.
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.
- Ou Android Studio (com ferramentas do Android SDK) - Baixe aqui.
No Windows (no meu caso) apĂłs instalar o Android Studio eu tinha as ferramentas do SDK instaladas em: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
No mac vocĂȘ pode baixar as ferramentas do SDK e tĂȘ-las no PATH executando:
brew tap homebrew/cask
brew install --cask android-sdk
Ou a partir do Android Studio GUI conforme indicado em https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a, que os instalarĂĄ em ~/Library/Android/sdk/cmdline-tools/latest/bin/
e ~/Library/Android/sdk/platform-tools/
e ~/Library/Android/sdk/emulator/
Para os problemas de 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.
.png)
EntĂŁo, clique em Create Virtual Device
.png)
selecione o telefone que vocĂȘ deseja usar e clique em Next.
warning
Se vocĂȘ precisar de um telefone com o Play Store instalado, selecione um com o Ăcone do Play Store nele!
.png)
Na visualização atual, vocĂȘ poderĂĄ selecionar e baixar a imagem do Android que o telefone irĂĄ executar:
.png)
EntĂŁo, selecione e, se nĂŁo estiver baixado, 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.
Command Line tool
Primeiramente, vocĂȘ precisa decidir qual telefone deseja usar, para ver a lista de telefones possĂveis, execute:
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
[...]
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
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
E baixe o que vocĂȘ deseja usar com:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
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\<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
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:
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"
No Ășltimo comando eu criei uma VM chamada "AVD9" usando o dispositivo "Nexus 5X" e a imagem do Android "system-images;android-28;google_apis;x86_64".
Agora vocĂȘ pode listar as mĂĄquinas virtuais que vocĂȘ criou com:
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
Executar MĂĄquina Virtual
JĂĄ vimos como vocĂȘ pode listar as mĂĄquinas virtuais criadas, mas vocĂȘ tambĂ©m pode listĂĄ-las usando:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
VocĂȘ pode simplesmente executar qualquer mĂĄquina virtual criada usando:
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 usando opçÔes mais avançadas, vocĂȘ pode executar uma mĂĄquina virtual como:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
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
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ĂĄ executaradb 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 com Magisk, consegui fazer root (siga por exemplo este vĂdeo ou este aqui).
Instalar Certificado Burp
Verifique a pĂĄgina a seguir para aprender como instalar um certificado CA personalizado:
OpçÔes AVD Interessantes
Tirar um Snapshot
VocĂȘ pode usar a GUI para tirar um snapshot da VM a qualquer momento:
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.