AVD - Android Sanal Cihaz

Reading time: 7 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Bu içeriği oluştururken yardım eden @offsecjay için çok teşekkür ederim.

Nedir

Android Studio, APK'leri test etmek için kullanabileceğiniz Android sanal makinelerini çalıştırmanıza olanak tanır. Bunları kullanmak için şunlara ihtiyacınız olacak:

Windows'ta (benim durumumda) Android Studio'yu kurduktan sonra SDK Araçları şurada yüklüydü: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

Mac'te SDK araçlarını indirebilir ve PATH'te bulundurabilirsiniz:

bash
brew tap homebrew/cask
brew install --cask android-sdk

Android Studio GUI üzerinden veya https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a adresinde belirtildiği gibi, bunları ~/Library/Android/sdk/cmdline-tools/latest/bin/ ve ~/Library/Android/sdk/platform-tools/ ve ~/Library/Android/sdk/emulator/ dizinlerine kuracaktır.

Java sorunları için:

java
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home

GUI

Sanal Makineyi Hazırlayın

Eğer Android Studio'yu kurduysanız, ana proje görünümünü açabilir ve şuraya erişebilirsiniz: Tools --> AVD Manager.

Sonra, Create Virtual Device üzerine tıklayın.

kullanmak istediğiniz telefonu seçin ve Next. üzerine tıklayın.

warning

Eğer Play Store yüklü bir telefona ihtiyacınız varsa, üzerinde Play Store simgesi olan birini seçin!

Mevcut görünümde, telefonun çalıştıracağı Android imajını seçip indirebileceksiniz:

Bunu seçin ve eğer indirilmemişse, isminin yanındaki Download simgesine tıklayın (şimdi imajın indirilmesini bekleyin).
İmaj indirildikten sonra, sadece Next ve Finish seçin.

Sanal makine oluşturulacak. Artık AVD yöneticisine her eriştiğinizde mevcut olacak.

Sanal Makineyi Çalıştırın

Çalıştırmak için sadece Start button üzerine basın.

Komut Satırı Aracı

Öncelikle kullanmak istediğiniz telefonu belirlemeniz gerekiyor, olası telefonların listesini görmek için şunu çalıştırın:

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
[...]

Cihazınızı kullanmak için adını belirledikten sonra, bu cihazda hangi Android görüntüsünü çalıştırmak istediğinize karar vermeniz gerekir.
Tüm seçenekleri sdkmanager kullanarak listeleyebilirsiniz:

bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list

Ve kullanmak istediğiniz birini (veya hepsini) indirin:

bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"

İstediğiniz Android görüntüsünü indirdikten sonra, indirilen tüm Android görüntülerini listeleyebilirsiniz:

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

Bu anda kullanmak istediğiniz cihazı seçtiniz ve Android imajını indirdiniz, bu yüzden sanallaştırma makinesini oluşturmak için:

bash
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"

Son komutta AVD9 adında bir VM oluşturdum ve cihaz olarak Nexus 5X ve Android imajı olarak system-images;android-28;google_apis;x86_64 kullandım.
Artık oluşturduğunuz sanallaştırılmış makineleri listeleyebilirsiniz:

bash
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

Sanal Makineyi Çalıştır

Oluşturulan sanal makineleri nasıl listeleyeceğinizi zaten gördük, ancak bunları da şu şekilde listeleyebilirsiniz:

bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27

Herhangi bir oluşturulmuş sanal makineyi basitçe çalıştırabilirsiniz:

bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"

Daha gelişmiş seçenekler kullanarak bir sanal makine çalıştırabilirsiniz, örneğin:

bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system

Komut satırı seçenekleri

Ancak, sanal makineyi başlatmak için kullanabileceğiniz birçok farklı komut satırı yararlı seçeneği vardır. Aşağıda bazı ilginç seçenekleri bulabilirsiniz, ancak tam listeyi burada bulabilirsiniz

Başlat

  • -snapshot name : VM anlık görüntüsünü başlat
  • -snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img : Kaydedilen tüm anlık görüntüleri listele

  • -dns-server 192.0.2.0, 192.0.2.255 : VM'ye virgülle ayrılmış DNS sunucularını belirtmeye izin verir.
  • -http-proxy 192.168.1.12:8080 : Kullanılacak bir HTTP proxy belirtmeye izin verir (Burp kullanarak trafiği yakalamak için çok yararlıdır)
  • -port 5556 : Konsol ve adb için kullanılan TCP port numarasını ayarla.
  • -ports 5556,5559 : Konsol ve adb için kullanılan TCP portlarını ayarla.
  • -tcpdump /path/dumpfile.cap : Tüm trafiği bir dosyada yakala

Sistem

  • -selinux {disabled|permissive} : Linux işletim sisteminde Güvenlik Geliştirilmiş Linux güvenlik modülünü devre dışı veya izin verici modda ayarla.
  • -timezone Europe/Paris : Sanal cihaz için zaman dilimini ayarla
  • -screen {touch(default)|multi-touch|o-touch} : Taklit dokunmatik ekran modunu ayarla.
  • -writable-system : Emülasyon oturumunuz sırasında yazılabilir bir sistem görüntüsü elde etmek için bu seçeneği kullanın. Ayrıca adb root; adb remount komutunu çalıştırmanız gerekecek. Bu, sistemde yeni bir sertifika yüklemek için çok yararlıdır.

Play Store cihazını rootlama

Eğer Play Store ile bir cihaz indirdiyseniz, doğrudan root almanız mümkün olmayacak ve bu hata mesajını alacaksınız.

$ adb root
adbd cannot run as root in production builds

RootAVD ve Magisk kullanarak bunu kökledim (örneğin bu videoyu veya şu videoyu takip edebilirsiniz).

Burp Sertifikasını Yükle

Özel bir CA sertifikasını nasıl yükleyeceğinizi öğrenmek için aşağıdaki sayfayı kontrol edin:

Install Burp Certificate

Güzel AVD Seçenekleri

Anlık Görüntü Al

VM'nin anlık görüntüsünü istediğiniz zaman GUI'yi kullanarak alabilirsiniz:

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin