AVD - Android Virtual Device
Reading time: 11 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Ευχαριστώ πολύ τον @offsecjay για τη βοήθειά του κατά τη δημιουργία αυτού του περιεχομένου.
Τι είναι
Android Studio επιτρέπει να τρέχετε εικονικές συσκευές Android που μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε APKs. Για να τις χρησιμοποιήσετε θα χρειαστείτε:
- The Android SDK tools - Download here.
- Or 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
Προετοιμασία Εικονικής Μηχανής
If you installed Android Studio, you can just open the main project view and access: Tools --> AVD Manager.
.png)
Then, click on Create Virtual Device
.png)
select the phone you want to use and click on Next.
warning
If you need a phone with Play Store installed select one with the Play Store icon on it!
.png)
Στην τρέχουσα προβολή θα μπορείτε να select and download the Android image που θα τρέχει το τηλέφωνο:
.png)
Έτσι, επιλέξτε το και αν δεν είναι κατεβασμένο κάντε κλικ στο σύμβολο Download δίπλα στο όνομα (now wait until the image is downloaded).
Μόλις η εικόνα κατέβει, απλά επιλέξτε Next
και Finish
.
Η εικονική μηχανή θα δημιουργηθεί. Τώρα every time that you access AVD manager it will be present.
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.
Πρώτα απ' όλα πρέπει να decide which phone you want to use, για να δείτε τη λίστα με τα δυνατά τηλέφωνα εκτελέστε:
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 θέλετε να τρέξετε σε αυτή τη συσκευή.
Μπορείτε να απαριθμήσετε όλες τις επιλογές χρησιμοποιώντας το 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 εικόνα που θέλετε να χρησιμοποιήσετε, μπορείτε να εμφανίσετε όλες τις κατεβασμένες Android εικόνες με:
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 "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
Μπορείτε απλά να τρέξετε οποιαδήποτε δημιουργημένη εικονική μηχανή χρησιμοποιώντας:
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
: Εκκίνηση snapshot της VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Εμφανίζει όλα τα καταγεγραμμένα snapshots
Δίκτυο
-dns-server 192.0.2.0, 192.0.2.255
: Επιτρέπει να υποδείξετε τους DNS servers στην VM, χωρισμένους με κόμμα.-http-proxy 192.168.1.12:8080
: Επιτρέπει να ορίσετε έναν HTTP proxy για χρήση (πολύ χρήσιμο για την καταγραφή της κυκλοφορίας με χρήση του Burp)- Εάν οι ρυθμίσεις proxy δεν λειτουργούν για κάποιο λόγο, δοκιμάστε να τις ρυθμίσετε εσωτερικά ή χρησιμοποιώντας μια εφαρμογή όπως "Super Proxy" ή "ProxyDroid".
-netdelay 200
: Ρυθμίζει την προσομοίωση καθυστέρησης δικτύου σε milliseconds.-port 5556
: Ορίζει τον αριθμό θύρας TCP που χρησιμοποιείται για το console και το adb.-ports 5556,5559
: Ορίζει τις TCP θύρες που χρησιμοποιούνται για το console και το adb.-tcpdump /path/dumpfile.cap
: Καταγράφει όλη την κίνηση σε ένα αρχείο
Σύστημα
-selinux {disabled|permissive}
: Θέτει το Security-Enhanced Linux security module είτε σε disabled είτε σε permissive mode σε ένα λειτουργικό σύστημα Linux.-timezone Europe/Paris
: Ορίζει τη ζώνη ώρας για τη virtual συσκευή-screen {touch(default)|multi-touch|o-touch}
: Ορίζει τη λειτουργία προσομοιωμένης οθόνης αφής.-writable-system
: Χρησιμοποιήστε αυτήν την επιλογή για να έχετε ένα writable system image κατά τη διάρκεια της συνεδρίας emulation. Θα χρειαστεί επίσης να τρέξετεadb root; adb remount
. Αυτό είναι πολύ χρήσιμο για να εγκαταστήσετε ένα νέο πιστοποιητικό στο σύστημα.
Εγκατάσταση Linux CLI (SDK/AVD quickstart)
Τα επίσημα εργαλεία CLI διευκολύνουν τη δημιουργία γρήγορων, debuggable emulators χωρίς 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
Σημειώσεις
- Παραλλαγές system image: google_apis (debuggable, επιτρέπει adb root), google_apis_playstore (όχι rootable), aosp/default (ελαφρύ).
- Τύποι build: userdebug συχνά επιτρέπει
adb root
σε debug-capable images. Play Store images είναι production builds και μπλοκάρουν το root. - Σε hosts x86_64, η full-system ARM64 emulation δεν υποστηρίζεται από API 28+. Για Android 11+ χρησιμοποιήστε Google APIs/Play images που περιλαμβάνουν per-app ARM-to-x86 translation για να τρέξετε πολλές ARM-only apps γρήγορα.
Στιγμιότυπα από 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+)
Τα Google APIs και οι εικόνες Play Store στο Android 11+ μπορούν να μεταφράσουν ARM app binaries ανά διαδικασία, διατηρώντας το υπόλοιπο σύστημα native x86/x86_64. Αυτό είναι συχνά αρκετά γρήγορο για να δοκιμάσετε πολλές εφαρμογές που τρέχουν μόνο σε ARM σε desktop.
Συμβουλή: Προτιμήστε εικόνες Google APIs x86/x86_64 κατά τη διάρκεια pentests. Οι εικόνες Play είναι βολικές αλλά εμποδίζουν το
adb root
; χρησιμοποιήστε τις μόνο όταν χρειάζεστε συγκεκριμένα Play services και αποδέχεστε την έλλειψη root.
Rooting μιας συσκευής με Play Store
Αν κατεβάσατε μια συσκευή με Play Store δεν θα μπορέσετε να πάρετε root απευθείας, και θα λάβετε αυτό το μήνυμα σφάλματος
$ adb root
adbd cannot run as root in production builds
Χρησιμοποιώντας rootAVD με Magisk κατάφερα να το κάνω root (ακολούθησε για παράδειγμα αυτό το βίντεο ή αυτό).
Εγκατάσταση πιστοποιητικού Burp
Δες την παρακάτω σελίδα για να μάθεις πώς να εγκαταστήσεις ένα custom CA cert:
Χρήσιμες επιλογές AVD
Δημιούργησε ένα snapshot
Μπορείς να χρησιμοποιήσεις το GUI για να πάρεις ένα snapshot της VM οποιαδήποτε στιγμή:
Αναφορές
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- Android Emulator command line
- Εκτέλεση εφαρμογών ARM στον Android Emulator (x86 translation)
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.