# AVD - Android Virtual Device
जानें AWS हैकिंग को शून्य से हीरो तकhtARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **अपने हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
इस सामग्री बनाने में मदद के लिए [**@offsecjay**](https://twitter.com/offsecjay) का बहुत बहुत धन्यवाद।
## क्या है
Android स्टूडियो को **Android के वर्चुअल मशीन चलाने की अनुमति है जिन्हें आप APKs का परीक्षण करने के लिए उपयोग कर सकते हैं**। इनका उपयोग करने के लिए आपको निम्नलिखित की आवश्यकता होगी:
* **Android SDK टूल्स** - [यहाँ से डाउनलोड करें](https://developer.android.com/studio/releases/sdk-tools)।
* या **Android स्टूडियो** (Android SDK टूल्स के साथ) - [यहाँ से डाउनलोड करें](https://developer.android.com/studio)।
Windows में (मेरे मामले में) **Android स्टूडियो स्थापित करने के बाद** मेरे पास **SDK टूल्स स्थापित थे**: `C:\Users\\AppData\Local\Android\Sdk\tools`
Mac में आप **SDK टूल्स डाउनलोड कर सकते हैं** और PATH में रख सकते हैं चलाकर:
```bash
brew tap homebrew/cask
brew install --cask android-sdk
```
या **Android Studio GUI** से जैसा [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) में दिखाया गया है जो इन्हें `~/Library/Android/sdk/cmdline-tools/latest/bin/` और `~/Library/Android/sdk/platform-tools/` और `~/Library/Android/sdk/emulator/` में इंस्टॉल करेगा।
जावा समस्याओं के लिए:
```java
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
```
## GUI
### वर्चुअल मशीन तैयार करें
यदि आपने Android स्टूडियो इंस्टॉल किया है, तो आप सीधे मुख्य परियोजना दृश्य खोल सकते हैं और पहुंच सकते हैं: _**Tools**_ --> _**AVD Manager.**_
फिर, _**Create Virtual Device**_ पर क्लिक करें
_**उस फोन को चुनें जिसका उपयोग करना चाहते हैं_ और _**Next**_ पर क्लिक करें।
{% hint style="warning" %}
यदि आपको Play Store स्थापित फोन की आवश्यकता है तो Play Store आइकन वाला एक चुनें!
![](<../../.gitbook/assets/image (672).png>)
{% endhint %}
वर्तमान दृश्य में आपको **Android इमेज का चयन और डाउनलोड करने की** सुविधा मिलेगी जिस पर फोन चलेगा:
इसलिए, इसे चुनें और यदि यह डाउनलोड नहीं है तो नाम के पास _**Download**_ प्रतीक पर क्लिक करें (**अब तक इमेज डाउनलोड होने तक प्रतीक्षा करें).**\
जब इमेज डाउनलोड हो जाए, तो बस **`Next`** और **`Finish`** का चयन करें।
वर्चुअल मशीन बना दी जाएगी। अब **हर बार जब आप AVD मैनेजर तक पहुंचेंगे तो यह मौजूद होगा**।
### वर्चुअल मशीन चलाएं
इसे **चलाने** के लिए बस _**Start button**_ दबाएं।
![](<../../.gitbook/assets/image (334).png>)
## कमांड लाइन टूल
सबसे पहले आपको **यह तय करना होगा कि आप कौन सा फोन उपयोग करना चाहते हैं**, संभावित फोनों की सूची देखने के लिए निम्नलिखित का प्रयोग करें:
```
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
[...]
```
जैसे ही आप उस उपकरण का नाम तय कर लेते हैं जिसका इस्तेमाल करना चाहते हैं, तो आपको **इस उपकरण में चलाने के लिए कौन सा Android इमेज चाहिए यह तय करना होगा।**\
आप `sdkmanager` का उपयोग करके सभी विकल्पों की सूची देख सकते हैं:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
```
और **डाउनलोड** करें जिसे आप उपयोग करना चाहते हैं (या सभी) के साथ:
{% 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 %}
जब आप वह Android छवि डाउनलोड कर लेते हैं जिसे आप उपयोग करना चाहते हैं, तो आप निम्नलिखित कमांड के साथ **सभी डाउनलोड की गई Android छवियों की सूची** देख सकते हैं:
```
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
```
इस समय आपने यह निर्णय लिया है कि आप कौन सा उपकरण उपयोग करना चाहते हैं और आपने Android छवि डाउनलोड कर ली है, तो **आप वर्चुअल मशीन बना सकते हैं उपयोग करके**:
{% 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 %}
अंतिम कमांड में **मैंने एक वीएम बनाई** "_AVD9_" नामक, **डिवाइस** "_Nexus 5X_" और **एंड्रॉयड इमेज** "_system-images;android-28;google\_apis;x86\_64_" का उपयोग किया।\
अब आप निम्नलिखित के साथ **बनाए गए वर्चुअल मशीनों की सूची** देख सकते हैं:
```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
```
### वर्चुअल मशीन चलाएं
हमने पहले ही देखा है कि आप कैसे बनाई गई वर्चुअल मशीनों की सूची देख सकते हैं, लेकिन **आप इसका उपयोग करके उन्हें सूचीबद्ध कर सकते हैं**:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
```
आप बस निम्नलिखित का उपयोग करके **बनाई गई किसी भी वर्चुअल मशीन को चला सकते हैं**:
{% 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 %}
या आप एक वर्चुअल मशीन चला सकते हैं जैसे:
{% 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 %}
### कमांड लाइन विकल्प
हालांकि, **कई विभिन्न कमांड लाइन उपयोगी विकल्प** हैं जिन्हें आप एक वर्चुअल मशीन प्रारंभ करने के लिए उपयोग कर सकते हैं। नीचे आप कुछ दिलचस्प विकल्प पा सकते हैं लेकिन [**यहाँ पूरी सूची पा सकते हैं**](https://developer.android.com/studio/run/emulator-commandline)
**बूट**
* `-snapshot name` : VM स्नैपशॉट शुरू करें
* `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : रिकॉर्ड किए गए सभी स्नैपशॉट्स की सूची दें
**नेटवर्क**
* `-dns-server 192.0.2.0, 192.0.2.255` : VM के लिए DNS सर्वर को अंकित करने की अनुमति दें।
* **`-http-proxy 192.168.1.12:8080`** : उपयोग करने के लिए एक HTTP प्रॉक्सी को अंकित करने की अनुमति दें (Burp का उपयोग करके ट्रैफिक को कैप्चर करने के लिए बहुत उपयोगी)
* `-port 5556` : कंसोल और adb के लिए उपयोग किए जाने वाले TCP पोर्ट नंबर सेट करें।
* `-ports 5556,5559` : कंसोल और adb के लिए उपयोग किए जाने वाले TCP पोर्ट सेट करें।
* **`-tcpdump /path/dumpfile.cap`** : एक फ़ाइल में सभी ट्रैफ़िक को कैप्चर करें
**सिस्टम**
* `-selinux {disabled|permissive}` : एक लिनक्स ऑपरेटिंग सिस्टम पर सुरक्षा-वर्धित लिनक्स सुरक्षा मॉड्यूल को या तो अक्षम या अनुमोदनात्मक मोड में सेट करें।
* `-timezone Europe/Paris` : वर्चुअल डिवाइस के लिए समय क्षेत्र सेट करें
* `-screen {touch(default)|multi-touch|o-touch}` : नकली टच स्क्रीन मोड सेट करें।
* **`-writable-system`** : अपने अनुकरण सत्र के दौरान एक लिखने योग्य सिस्टम इमेज होने के लिए इस विकल्प का उपयोग करें। आपको `adb root; adb remount` भी चलाने की आवश्यकता होगी। इसका उपयोग सिस्टम में एक नया प्रमाणपत्र स्थापित करने के लिए बहुत उपयोगी है।
## प्ले स्टोर डिवाइस को रूट करना
यदि आपने प्ले स्टोर के साथ एक डिवाइस डाउनलोड किया है तो आप सीधे रूट प्राप्त नहीं कर पाएंगे, और आपको यह त्रुटि संदेश मिलेगा
```
$ adb root
adbd cannot run as root in production builds
```
Using [rootAVD](https://github.com/newbit1/rootAVD) with [Magisk](https://github.com/topjohnwu/Magisk) मैंने इसे रूट करने में सफल रहा (उदाहरण के लिए [**इस वीडियो**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **या** [**इस वीडियो**](https://www.youtube.com/watch?v=qQicUW0svB8) का पालन करें)।
## बर्प प्रमाणपत्र इंस्टॉल करें
कस्टम CA प्रमाणपत्र को कैसे इंस्टॉल करें इसे सीखने के लिए निम्नलिखित पृष्ठ की जाँच करें:
{% content-ref url="install-burp-certificate.md" %}
[install-burp-certificate.md](install-burp-certificate.md)
{% endcontent-ref %}
## अच्छे AVD विकल्प
### स्नैपशॉट लें
आप **GUI का उपयोग** करके किसी भी समय VM का स्नैपशॉट ले सकते हैं:
![](<../../.gitbook/assets/image (336).png>)