AVD - Android वर्चुअल डिवाइस
Reading time: 12 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
इस सामग्री को बनाने में उनकी मदद के लिए @offsecjay का बहुत-बहुत धन्यवाद।
क्या है
Android Studio आपको Android की virtual machines चलाने की अनुमति देता है जिन्हें आप APKs टेस्ट करने के लिए उपयोग कर सकते हैं। इनका उपयोग करने के लिए आपको निम्न की आवश्यकता होगी:
- The Android SDK tools - Download here.
- या Android Studio (with Android SDK tools) - Download here.
Windows में (मेरे मामले में) Android Studio इंस्टॉल करने के बाद मेरे पास SDK Tools इस स्थान पर इंस्टॉल थे: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
mac पर आप SDK tools डाउनलोड कर सकते हैं और PATH में जोड़ने के लिए चला सकते हैं:
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 में बताया गया है, जो इन्हें ~/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
Prepare Virtual Machine
यदि आपने Android Studio इंस्टॉल किया है, तो आप मुख्य प्रोजेक्ट व्यू खोलकर सीधे Tools --> AVD Manager तक पहुँच सकते हैं।
.png)
फिर, Create Virtual Device पर क्लिक करें
.png)
वह फोन चुनें जिसे आप उपयोग करना चाहते हैं और Next पर क्लिक करें।
warning
यदि आपको Play Store इंस्टॉल किया हुआ फोन चाहिए तो Play Store आइकन वाले फोन का चयन करें!
.png)
वर्तमान दृश्य में आप उस Android image को चुन (select) और डाउनलोड कर पाएँगे जिसे फोन चलाएगा:
.png)
इसे चुनें और अगर यह डाउनलोड नहीं हुआ है तो नाम के बगल में Download आइकन पर क्लिक करें (डाउनलोड पूरा होने तक प्रतीक्षा करें)।
जब image डाउनलोड हो जाए, तो बस Next
और Finish
चुनें।
वर्चुअल मशीन बन जाएगी। अब हर बार जब आप AVD manager को खोलेंगे यह वहाँ मौजूद रहेगा।
Run Virtual Machine
इसे run करने के लिए बस Start button दबाएँ।
Command Line tool
warning
For macOS you can find the avdmanager
tool in /Users/<username>/Library/Android/sdk/tools/bin/avdmanager
and the emulator
in /Users/<username>/Library/Android/sdk/emulator/emulator
if you have them installed.
सबसे पहले आपको निर्णय लेना होगा कि आप कौन सा फोन उपयोग करना चाहते हैं, संभावित फोन की सूची देखने के लिए निम्न कमांड चलाएँ:
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
[...]
एक बार जब आप उस डिवाइस का नाम तय कर लें जिसे आप उपयोग करना चाहते हैं, तो आपको यह तय करना होगा कि आप इस डिवाइस में कौन सा Android image चलाना चाहते हैं।
आप sdkmanager
का उपयोग करके सभी विकल्प सूचीबद्ध कर सकते हैं:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
और डाउनलोड करें उस एक (या सभी) को जिसे आप उपयोग करना चाहते हैं:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
एक बार जब आपने उपयोग करने के लिए Android image डाउनलोड कर लिया हो, तब आप निम्न के साथ डाउनलोड की गई सभी Android images को सूचीबद्ध कर सकते हैं:
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
इस समय आपने वह डिवाइस चुन लिया है जिसका आप उपयोग करना चाहते हैं और आपने Android image डाउनलोड कर ली है, इसलिए आप वर्चुअल मशीन का निर्माण निम्न का उपयोग करके कर सकते हैं:
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"
पिछली कमांड में मैंने VM बनाया जिसका नाम "AVD9" था, डिवाइस "Nexus 5X" और Android image "system-images;android-28;google_apis;x86_64".
अब आप वर्चुअल मशीनों की सूची जिन्हें आपने बनाया है, निम्न के साथ देख सकते हैं:
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
वर्चुअल मशीन चलाएँ
warning
macOS के लिए आप avdmanager
टूल को /Users/<username>/Library/Android/sdk/tools/bin/avdmanager
और emulator
को /Users/<username>/Library/Android/sdk/emulator/emulator
में पा सकते हैं यदि वे इंस्टॉल हैं।
हम पहले ही देख चुके हैं कि आप बनाए गए वर्चुअल मशीनों को कैसे सूचीबद्ध कर सकते हैं, लेकिन आप इन्हें निम्न का उपयोग करके भी सूचीबद्ध कर सकते हैं:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
आप बस निम्नलिखित का उपयोग करके बनी हुई किसी भी virtual machine को चला सकते हैं:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
या अधिक उन्नत विकल्पों का उपयोग करके आप इस तरह एक वर्चुअल मशीन चला सकते हैं:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
कमांड लाइन विकल्प
हालाँकि वर्चुअल मशीन शुरू करने के लिए आप उपयोग कर सकते हैं कई अलग-अलग उपयोगी कमांड लाइन विकल्प। नीचे कुछ दिलचस्प विकल्प दिए गए हैं लेकिन आप find a complete list here
बूट
-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 proxy बताने की अनुमति देता है (Burp का उपयोग करके ट्रैफ़िक कैप्चर करने के लिए बहुत उपयोगी)- अगर किसी कारण से proxy सेटिंग्स काम नहीं कर रही हैं, तो उन्हें आंतरिक रूप से कॉन्फ़िगर करने की कोशिश करें या "Super Proxy" या "ProxyDroid" जैसे ऐप्लिकेशन का उपयोग करें।
-netdelay 200
: नेटवर्क विलंबता एमुलेशन (मिलीसेकंड में) सेट करें।-port 5556
: उस TCP पोर्ट नंबर को सेट करें जिसका उपयोग console और adb के लिए किया जाता है।-ports 5556,5559
: console और adb के लिए उपयोग किए जाने वाले TCP पोर्ट सेट करें।-tcpdump /path/dumpfile.cap
: सभी ट्रैफ़िक को एक फ़ाइल में कैप्चर करें
सिस्टम
-selinux {disabled|permissive}
: Linux ऑपरेटिंग सिस्टम पर Security-Enhanced Linux सुरक्षा मॉड्यूल को disabled या permissive मोड में सेट करें।-timezone Europe/Paris
: वर्चुअल डिवाइस के लिए टाइमज़ोन सेट करें-screen {touch(default)|multi-touch|o-touch}
: इम्यूलेटेड टच स्क्रीन मोड सेट करें।-writable-system
: इस विकल्प का उपयोग करें ताकि आपके एमुलेशन सत्र के दौरान सिस्टम इमेज लिखने योग्य हो। आपको साथ हीadb root; adb remount
भी चलाना होगा। यह सिस्टम में नया प्रमाणपत्र इंस्टॉल करने के लिए बहुत उपयोगी है।
Linux CLI setup (SDK/AVD quickstart)
आधिकारिक CLI tools Android Studio के बिना तेज़, डिबग करने योग्य इम्यूलेटर्स बनाना आसान बनाते हैं।
# 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
नोट्स
- सिस्टम इमेज फ्लेवर्स: google_apis (debuggable, adb root की अनुमति), google_apis_playstore (rootable नहीं), aosp/default (हल्का).
- बिल्ड प्रकार: userdebug अक्सर debug-capable images पर
adb root
की अनुमति देता है। Play Store images प्रोडक्शन बिल्ड होते हैं और root को ब्लॉक करते हैं। - x86_64 होस्ट्स पर, API 28+ से पूर्ण-सिस्टम ARM64 इम्यूलेशन समर्थित नहीं है। Android 11+ पर तेज़ी से कई ARM-only apps चलाने के लिए उन Google APIs/Play images का उपयोग करें जिनमें per-app ARM-to-x86 translation शामिल है।
CLI से स्नैपशॉट्स
# 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 बाइनरी अनुवाद (Android 11+)
Android 11+ पर Google APIs और Play Store images प्रति प्रोसेस ARM app binaries का अनुवाद कर सकते हैं, जबकि सिस्टम के बाकी हिस्से को native x86/x86_64 पर रखा जाता है। यह अक्सर desktop पर कई ARM-only apps का परीक्षण करने के लिए पर्याप्त तेज़ होता है।
टिप: pentests के दौरान Google APIs x86/x86_64 images को प्राथमिकता दें। Play images सुविधाजनक हैं लेकिन
adb root
को ब्लॉक करती हैं; इन्हें तभी उपयोग करें जब आपको विशेष रूप से Play services की आवश्यकता हो और root के अभाव को स्वीकार कर लें।
Rooting a Play Store device
यदि आपने Play Store वाला device डाउनलोड किया है तो आप सीधे root प्राप्त नहीं कर पाएंगे, और आपको यह त्रुटि संदेश मिलेगा
$ adb root
adbd cannot run as root in production builds
Using rootAVD with Magisk का उपयोग करके मैं इसे root कर पाया (उदाहरण के लिए यह वीडियो या यह वाला).
Burp Certificate इंस्टॉल करें
custom CA cert कैसे इंस्टॉल करें जानने के लिए निम्नलिखित पृष्ठ देखें:
उपयोगी AVD विकल्प
स्नैपशॉट लें
आप किसी भी समय VM का स्नैपशॉट लेने के लिए GUI का उपयोग कर सकते हैं:
संदर्भ
- 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 हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।