AVD - Android Virtual Device
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Thank you very much to @offsecjay for his help while creating this content.
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 SDK instaladas em: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
No mac você pode baixar as ferramentas SDK e tê-las no PATH executando:
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, 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:
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.
Se você precisar de um telefone com Play Store instalada, selecione um com o ícone do Play Store!
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.
Para executá-la, basta pressionar o Start button.
Primeiramente, você precisa decidir qual telefone deseja usar, para ver a lista de telefones possíveis, execute:
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
:
E baixe o que você deseja usar com:
Uma vez que você tenha baixado a imagem do Android que deseja usar, você pode listar todas as imagens do Android baixadas com:
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:
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:
Já vimos como você pode listar as máquinas virtuais criadas, mas você também pode listá-las usando:
Você pode simplesmente executar qualquer máquina virtual criada usando:
Ou usando opções mais avançadas, você pode executar uma máquina virtual como:
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á executar adb root; adb remount
. Isso é muito útil para instalar um novo certificado no sistema.
Se você baixou um dispositivo com a Play Store, não conseguirá obter root diretamente, e você receberá esta mensagem de erro
Usando rootAVD com Magisk, consegui fazer root (siga, por exemplo, este vídeo ou este aqui).
Verifique a página a seguir para aprender como instalar um certificado CA personalizado:
Install Burp CertificateVocê pode usar a GUI para tirar um snapshot da VM a qualquer momento:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)