# AVD - Android Sanal Cihazı
htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hacklemeyi öğrenin!
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam vermek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek paylaşın**.
Bu içeriği oluştururken [**@offsecjay**](https://twitter.com/offsecjay)'e çok teşekkür ederim.
## Nedir
Android Studio, **APK'ları test etmek için kullanabileceğiniz Android sanal makinelerini çalıştırmaya izin verir**. Bunları kullanmak için aşağıdakilere ihtiyacınız olacak:
* **Android SDK araçları** - [Buradan indirin](https://developer.android.com/studio/releases/sdk-tools).
* Veya **Android Studio** (Android SDK araçlarıyla birlikte) - [Buradan indirin](https://developer.android.com/studio).
Windows'ta (benim durumumda) **Android Studio'yu yükledikten sonra**, **SDK Araçları'nın yüklendiği konum**: `C:\Users\\AppData\Local\Android\Sdk\tools`
Mac'te SDK araçlarını **indirebilir** ve PATH içinde çalıştırarak sahip olabilirsiniz:
```bash
brew tap homebrew/cask
brew install --cask android-sdk
```
Veya [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) adresinde belirtildiği gibi **Android Studio GUI** üzerinden yapabilirsiniz. Bu yöntem, onları `~/Library/Android/sdk/cmdline-tools/latest/bin/`, `~/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ırlama
Eğer Android Studio'yu yüklediyseniz, ana proje görünümünü açabilir ve şuraya erişebilirsiniz: _**Araçlar**_ --> _**AVD Yöneticisi.**_
Ardından, _**Sanal Cihaz Oluştur**_ üzerine tıklayın.
_**Kullanmak istediğiniz telefonu seçin** ve _**İleri**_ üzerine tıklayın.
{% hint style="warning" %}
Play Store yüklü bir telefona ihtiyacınız varsa, üzerinde Play Store simgesi bulunan birini seçin!
![](<../../.gitbook/assets/image (672).png>)
{% endhint %}
Mevcut görünümde, telefonun çalışacağı **Android görüntüsünü seçip indirebileceksiniz**:
Bu yüzden, seçin ve indirilmediyse adının yanındaki _**İndir**_ simgesine tıklayın (**şimdi görüntünün indirilmesini bekleyin).**\
Görüntü indirildikten sonra, sadece **`İleri`** ve **`Bitir`** seçin.
Sanal makine oluşturulacak. Şimdi **AVD yöneticisine her eriştiğinizde mevcut olacak**.
### Sanal Makineyi Çalıştırma
Çalıştırmak için sadece _**Başlat düğmesine**_ basın.
![](<../../.gitbook/assets/image (334).png>)
## Komut Satırı Aracı
Öncelikle kullanmak istediğiniz telefonu **belirlemeniz gerekmektedir**, olası telefonların listesini görmek için aşağıdaki komutu çalıştırın:
```
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
[...]
```
Bir cihaz adı belirledikten sonra, bu cihazda çalıştırmak istediğiniz Android görüntüsünü belirlemelisiniz.\
Tüm seçenekleri `sdkmanager` kullanarak listeleyebilirsiniz:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
```
Ve istediğiniz bir (veya tümünü) indirin:
{% 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 %}
İstediğiniz Android görüntüsünü indirdikten sonra, **indirilen tüm Android görüntülerini listeleyebilirsiniz**:
```bash
$ avdmanager list avd
```
Bu komut, indirilen tüm Android görüntülerinin bir listesini görüntüler.
```
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
```
Bu noktada kullanmak istediğiniz cihazı seçtiniz ve Android imajını indirdiniz, bu yüzden **aşağıdaki adımları izleyerek sanal makineyi oluşturabilirsiniz**:
{% 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 %}
Son komutta **AVD9** adında bir sanal makine oluşturdum. Bu makineye "_Nexus 5X_" cihazını ve "_system-images;android-28;google\_apis;x86\_64_" Android görüntüsünü kullandım. Şimdi oluşturduğunuz sanal makineleri **listelemek için** şu komutu kullanabilirsiniz:
```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
```
### Sanal Makineyi Çalıştır
Daha önce oluşturulan sanal makineleri nasıl listeleyebileceğinizi zaten gördük, ancak **onları listeleyebilirsiniz** kullanarak:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
```
Aşağıdaki komutu kullanarak oluşturulan herhangi bir sanal makineyi çalıştırabilirsiniz:
{% 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 %}
Daha gelişmiş seçeneklerle bir sanal makine çalıştırabilirsiniz:
{% 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 %}
### Komut satırı seçenekleri
Ancak, bir sanal makineyi başlatmak için kullanabileceğiniz **birçok farklı komut satırı seçeneği** bulunmaktadır. Aşağıda bazı ilginç seçenekleri bulabilirsiniz, ancak [**burada tam bir liste bulabilirsiniz**](https://developer.android.com/studio/run/emulator-commandline)
**Başlatma**
* `-snapshot name` : VM anlık görüntüsünü başlatır
* `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : Kaydedilen tüm anlık görüntüleri listeler
**Ağ**
* `-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'sini belirtmeye izin verir (trafiği Burp kullanarak yakalamak için çok kullanışlıdır)
* `-port 5556` : Konsol ve adb için kullanılan TCP bağlantı noktası numarasını ayarlar.
* `-ports 5556,5559` : Konsol ve adb için kullanılan TCP bağlantı noktalarını ayarlar.
* **`-tcpdump /path/dumpfile.cap`** : Tüm trafiği bir dosyada yakalar
**Sistem**
* `-selinux {disabled|permissive}` : Bir Linux işletim sisteminde Security-Enhanced Linux güvenlik modülünü devre dışı bırakma veya izin verici moduna ayarlar.
* `-timezone Europe/Paris` : Sanal cihaz için zaman dilimini ayarlar
* `-screen {touch(default)|multi-touch|o-touch}` : Taklit edilen dokunmatik ekran modunu ayarlar.
* **`-writable-system`** : Emülasyon oturumu sırasında yazılabilir bir sistem görüntüsüne sahip olmak için bu seçeneği kullanın. Ayrıca `adb root; adb remount` komutlarını da çalıştırmanız gerekecektir. Bu, sisteme yeni bir sertifika yüklemek için çok kullanışlıdır.
## Play Store cihazını rootlama
Play Store ile indirdiyseniz, doğrudan kök erişimi elde edemezsiniz ve aşağıdaki hata mesajını alırsınız
```
$ adb root
adbd cannot run as root in production builds
```
[rootAVD](https://github.com/newbit1/rootAVD) ve [Magisk](https://github.com/topjohnwu/Magisk) ile kullanarak root erişimi elde edebilirsiniz (örneğin [**bu videoyu**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **veya** [**bu videoyu**](https://www.youtube.com/watch?v=qQicUW0svB8) takip edin).
## Burp Sertifikası Yükleme
Özel bir CA sertifikası nasıl yükleneceğini öğrenmek için aşağıdaki sayfayı kontrol edin:
{% content-ref url="install-burp-certificate.md" %}
[install-burp-certificate.md](install-burp-certificate.md)
{% endcontent-ref %}
## Güzel AVD Seçenekleri
### Bir Snapshot Alın
Herhangi bir zamanda VM'in bir snapshot'ını almak için **GUI'yi kullanabilirsiniz**:
![](<../../.gitbook/assets/image (336).png>)
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!
HackTricks'i desteklemenin diğer yolları:
* Şirketinizi HackTricks'te **reklamınızı görmek** veya HackTricks'i **PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek** paylaşın.