AVD - Android Sanal Cihaz
Reading time: 10 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)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Bu içeriği oluştururken yardım ettiği için @offsecjay'a çok teşekkürler.
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:
- The Android SDK tools - Download here.
- Or Android Studio (with Android SDK tools) - Download here.
Windows'ta (benim durumumda) Android Studio'yu kurduktan sonra SDK Tools'un kurulu olduğu yer: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
mac üzerinde SDK tools'u indirebilir ve PATH'e eklemek için şu komutu çalıştırabilirsiniz:
brew tap homebrew/cask
brew install --cask android-sdk
Veya Android Studio GUI üzerinden, https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a adresinde belirtildiği gibi; bu, bunları ~/Library/Android/sdk/cmdline-tools/latest/bin/
ve ~/Library/Android/sdk/platform-tools/
ve ~/Library/Android/sdk/emulator/
konumlarına kuracaktır
Java sorunları için:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
Sanal Makineyi Hazırlama
Android Studio'yu yüklediyseniz, ana proje görünümünü açıp şuradan erişebilirsiniz: Tools --> AVD Manager.
.png)
Sonra Create Virtual Device öğesine tıklayın
.png)
Kullanmak istediğiniz telefonu seçin ve Next. öğesine tıklayın.
warning
Eğer Play Store yüklü bir telefona ihtiyacınız varsa Play Store simgesine sahip olanı seçin!
.png)
Bu görünümde telefonun çalıştıracağı Android image'i seçip indirebileceksiniz:
.png)
Dolayısıyla onu seçin; eğer indirilmemişse isimlerin yanındaki Download simgesine tıklayın (görüntü indirilene kadar bekleyin).
Görüntü indirildikten sonra sadece Next
ve Finish
'i seçin.
Sanal makine oluşturulacak. Artık AVD Manager'a eriştiğinizde her zaman burada görünecek.
Sanal Makineyi Çalıştırma
Çalıştırmak için sadece Start button'a basın.
Komut Satırı Aracı
warning
macOS için avdmanager
aracını /Users/<username>/Library/Android/sdk/tools/bin/avdmanager
ve emulator
'ü /Users/<username>/Library/Android/sdk/emulator/emulator
içinde bulabilirsiniz, eğer bunlar yüklüyse.
Öncelikle hangi telefonu kullanmak istediğinize karar vermeniz gerekiyor; kullanılabilir telefonların listesini görmek için şu komutu ç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
[...]
Kullanmak istediğiniz cihazın adını belirledikten sonra, bu cihazda hangi Android görüntüsünü çalıştırmak istediğinize karar vermelisiniz.\
Tüm seçenekleri sdkmanager
kullanarak listeleyebilirsiniz:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
Ve kullanmak istediğiniz birini (veya hepsini) download ile indirin:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
Kullanmak istediğiniz Android imajını indirdikten sonra, indirilen tüm Android imajlarını listeleyebilirsiniz şu komutla:
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
Şu anda kullanmak istediğiniz cihazı belirlediniz ve Android imajını indirdiniz, bu yüzden sanal makineyi şu şekilde oluşturabilirsiniz:
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 adlı bir VM oluşturdum "AVD9" ve cihaz olarak "Nexus 5X" ile Android image olarak "system-images;android-28;google_apis;x86_64" kullandım.
Şimdi oluşturduğunuz sanal makineleri listeleyebilirsiniz şu komutla:
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
warning
macOS için, eğer yüklüyse avdmanager
aracını /Users/<username>/Library/Android/sdk/tools/bin/avdmanager
ve emulator
uygulamasını /Users/<username>/Library/Android/sdk/emulator/emulator
konumlarında bulabilirsiniz.
Oluşturulan sanal makineleri nasıl listeleyebileceğimizi zaten gördük, ancak şunu kullanarak da listeleyebilirsiniz:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Oluşturulan herhangi bir sanal makineyi basitçe çalıştırabilirsiniz şu komutla:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
Veya daha gelişmiş seçenekleri kullanarak şu gibi bir sanal makine çalıştırabilirsiniz:
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; tam listeyi find a complete list here adresinde bulabilirsiniz.
Boot
-snapshot name
: VM snapshot'ını başlat-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Tüm kayıtlı snapshot'ları listeler
Network
-dns-server 192.0.2.0, 192.0.2.255
: VM için DNS sunucularını virgülle ayrılmış şekilde belirtmeye izin verir.-http-proxy 192.168.1.12:8080
: Kullanılacak bir HTTP proxy'sini belirtmeye izin verir (trafiği Burp ile yakalamak için çok kullanışlı).- If the proxy settings aren't working for some reason, try to configure them internally or using an pplication like "Super Proxy" or "ProxyDroid".
-netdelay 200
: Ağ gecikmesi emülasyonunu milisaniye cinsinden ayarlar.-port 5556
: Konsol ve adb için kullanılan TCP port numarasını ayarlar.-ports 5556,5559
: Konsol ve adb için kullanılan TCP portlarını ayarlar.-tcpdump /path/dumpfile.cap
: Tüm trafiği bir dosyaya yakalar
System
-selinux {disabled|permissive}
: Security-Enhanced Linux güvenlik modülünü Linux işletim sisteminde disabled veya permissive moduna ayarlar.-timezone Europe/Paris
: Sanal cihaz için zaman dilimini ayarlar-screen {touch(default)|multi-touch|o-touch}
: Emüle edilmiş dokunmatik ekran modunu ayarlar.-writable-system
: Bu seçeneği emülasyon oturumu sırasında yazılabilir bir sistem imajı kullanmak için kullanın. Ayrıcaadb root; adb remount
komutlarını çalıştırmanız gerekir. Sisteme yeni bir sertifika yüklemek için çok faydalıdır.
Linux CLI setup (SDK/AVD quickstart)
Resmi CLI araçları, Android Studio olmadan hızlı, hata ayıklanabilir emülatörler oluşturmayı kolaylaştırır.
# Directory layout
mkdir -p ~/Android/cmdline-tools/latest
# Download commandline tools (Linux)
wget https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip -O /tmp/cmdline-tools.zip
unzip /tmp/cmdline-tools.zip -d ~/Android/cmdline-tools/latest
rm /tmp/cmdline-tools.zip
# Env vars (add to ~/.bashrc or ~/.zshrc)
export ANDROID_HOME=$HOME/Android
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH
# Install core SDK components
sdkmanager --install "platform-tools" "emulator"
# Install a debuggable x86_64 system image (Android 11 / API 30)
sdkmanager --install "system-images;android-30;google_apis;x86_64"
# Create an AVD and run it with a writable /system & snapshot name
avdmanager create avd -n PixelRootX86 -k "system-images;android-30;google_apis;x86_64" -d "pixel"
emulator -avd PixelRootX86 -writable-system -snapshot PixelRootX86_snap
# Verify root (debuggable images allow `adb root`)
adb root
adb shell whoami # expect: root
Notlar
- Sistem image varyantları: google_apis (hata ayıklanabilir,
adb root
'a izin verir), google_apis_playstore (rootlenemez), aosp/default (hafif). - Build türleri: userdebug genellikle debug-özellikli image'larda
adb root
sağlar. Play Store image'ları üretim derlemeleridir ve root'u engeller. - x86_64 hostlarda, tam sistem ARM64 emülasyonu API 28+ itibarıyla desteklenmiyor. Android 11+ için birçok ARM-only uygulamayı hızlı çalıştırmak adına uygulama başına ARM-to-x86 çevirisini içeren Google APIs/Play image'larını kullanın.
CLI'den Anlık Görüntüler
# Save a clean snapshot from the running emulator
adb -s emulator-5554 emu avd snapshot save my_clean_setup
# Boot from a named snapshot (if it exists)
emulator -avd PixelRootX86 -writable-system -snapshot my_clean_setup
ARM→x86 binary translation (Android 11+)
Android 11+ üzerinde Google APIs ve Play Store imajları, sistemin geri kalanını yerel x86/x86_64 tutarken her süreç için ARM uygulama ikili dosyalarını çevirebilir. Bu, masaüstünde birçok yalnızca ARM uygulamasını test etmek için genellikle yeterince hızlıdır.
İpucu: pentests sırasında Google APIs x86/x86_64 imajlarını tercih edin. Play imajları kullanışlıdır ama
adb root
'u engeller; sadece Play services'e özellikle ihtiyaç duyduğunuzda ve root eksikliğini kabul ettiğinizde kullanın.
Rooting a Play Store device
Eğer Play Store ile bir cihaz indirdiyseniz doğrudan root elde edemeyecek ve şu hata mesajını alacaksınız
$ adb root
adbd cannot run as root in production builds
rootAVD ile Magisk kullanarak cihazı root yapabildim (örneğin this video veya this one).
Burp Sertifikasını Yükleme
Özel bir CA sertifikası nasıl yüklenir öğrenmek için aşağıdaki sayfayı inceleyin:
AVD İçin Faydalı Seçenekler
Anlık Görüntü Alma
VM'nin anlık görüntüsünü istediğiniz zaman almak için GUI'yi kullanabilirsiniz:
Kaynaklar
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- Android Emulator command line
- Run ARM apps on the Android Emulator (x86 translation)
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)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.