mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
207 lines
12 KiB
Markdown
207 lines
12 KiB
Markdown
# AVD - Android Virtual Device
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
Ευχαριστώ πολύ τον [**@offsecjay**](https://twitter.com/offsecjay) για τη βοήθειά του κατά τη δημιουργία αυτού του περιεχομένου.
|
||
|
||
## Τι είναι
|
||
|
||
Το Android Studio επιτρέπει να **τρέχετε εικονικές μηχανές Android που μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε APKs**. Για να τις χρησιμοποιήσετε θα χρειαστείτε:
|
||
|
||
- Τα **εργαλεία Android SDK** - [Κατεβάστε εδώ](https://developer.android.com/studio/releases/sdk-tools).
|
||
- Ή **Android Studio** (με εργαλεία Android SDK) - [Κατεβάστε εδώ](https://developer.android.com/studio).
|
||
|
||
Στα Windows (στην περίπτωσή μου) **μετά την εγκατάσταση του Android Studio** είχα τα **εργαλεία SDK εγκατεστημένα στο**: `C:\Users\<UserName>\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:
|
||
```java
|
||
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
|
||
```
|
||
## GUI
|
||
|
||
### Prepare Virtual Machine
|
||
|
||
Αν έχετε εγκαταστήσει το Android Studio, μπορείτε απλά να ανοίξετε την κύρια προβολή του έργου και να αποκτήσετε πρόσβαση: _**Tools**_ --> _**AVD Manager.**_
|
||
|
||
<div align="center" data-full-width="false">
|
||
|
||
<figure><img src="../../images/image (1142).png" alt="" width="293"><figcaption></figcaption></figure>
|
||
|
||
</div>
|
||
|
||
Στη συνέχεια, κάντε κλικ στο _**Create Virtual Device**_
|
||
|
||
<figure><img src="../../images/image (1143).png" alt="" width="188"><figcaption></figcaption></figure>
|
||
|
||
_**επιλέξτε** το τηλέφωνο που θέλετε να χρησιμοποιήσετε_ και κάντε κλικ στο _**Next.**_
|
||
|
||
> [!WARNING]
|
||
> Αν χρειάζεστε ένα τηλέφωνο με εγκατεστημένο το Play Store, επιλέξτε ένα με το εικονίδιο του Play Store πάνω του!
|
||
>
|
||
> <img src="../../images/image (1144).png" alt="" data-size="original">
|
||
|
||
Στην τρέχουσα προβολή θα μπορείτε να **επιλέξετε και να κατεβάσετε την εικόνα Android** που θα τρέξει το τηλέφωνο:
|
||
|
||
<figure><img src="../../images/image (1145).png" alt="" width="375"><figcaption></figcaption></figure>
|
||
|
||
Έτσι, επιλέξτε το και αν δεν έχει κατέβει, κάντε κλικ στο σύμβολο _**Download**_ δίπλα στο όνομα (**τώρα περιμένετε μέχρι να κατέβει η εικόνα).**\
|
||
Μόλις η εικόνα κατέβει, απλά επιλέξτε **`Next`** και **`Finish`**.
|
||
|
||
Η εικονική μηχανή θα δημιουργηθεί. Τώρα **κάθε φορά που αποκτάτε πρόσβαση στον AVD manager, θα είναι παρούσα**.
|
||
|
||
### Run Virtual Machine
|
||
|
||
Για να **τρέξετε** την εικονική μηχανή, απλά πατήστε το _**Start button**_.
|
||
|
||
.png>)
|
||
|
||
## Command Line tool
|
||
|
||
Πρώτα απ' όλα, πρέπει να **αποφασίσετε ποιο τηλέφωνο θέλετε να χρησιμοποιήσετε**, για να δείτε τη λίστα των πιθανών τηλεφώνων εκτελέστε:
|
||
```
|
||
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`:
|
||
```bash
|
||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
|
||
```
|
||
Και **κατεβάστε** αυτό (ή όλα) που θέλετε να χρησιμοποιήσετε με:
|
||
```bash
|
||
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, οπότε **μπορείτε να δημιουργήσετε την εικονική μηχανή χρησιμοποιώντας**:
|
||
```bash
|
||
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_".\
|
||
Τώρα μπορείτε να **καταγράψετε τις εικονικές μηχανές** που έχετε δημιουργήσει με:
|
||
```bash
|
||
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
|
||
```
|
||
### Εκτέλεση Εικονικής Μηχανής
|
||
|
||
Έχουμε ήδη δει πώς μπορείτε να καταγράψετε τις δημιουργημένες εικονικές μηχανές, αλλά **μπορείτε επίσης να τις καταγράψετε χρησιμοποιώντας**:
|
||
```bash
|
||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
|
||
AVD9
|
||
Pixel_2_API_27
|
||
```
|
||
Μπορείτε απλά να **εκτελέσετε οποιαδήποτε εικονική μηχανή έχει δημιουργηθεί** χρησιμοποιώντας:
|
||
```bash
|
||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
|
||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
|
||
```
|
||
Ή χρησιμοποιώντας πιο προηγμένες επιλογές μπορείτε να εκτελέσετε μια εικονική μηχανή όπως:
|
||
```bash
|
||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
|
||
```
|
||
### Επιλογές γραμμής εντολών
|
||
|
||
Ωστόσο, υπάρχουν **πολλές διαφορετικές χρήσιμες επιλογές γραμμής εντολών** που μπορείτε να χρησιμοποιήσετε για να ξεκινήσετε μια εικονική μηχανή. Παρακάτω μπορείτε να βρείτε μερικές ενδιαφέρουσες επιλογές αλλά μπορείτε [**να βρείτε μια πλήρη λίστα εδώ**](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` : Επιτρέπει να υποδείξετε τους διακομιστές DNS χωρισμένους με κόμμα στη VM.
|
||
- **`-http-proxy 192.168.1.12:8080`** : Επιτρέπει να υποδείξετε έναν HTTP proxy προς χρήση (πολύ χρήσιμο για την καταγραφή της κίνησης χρησιμοποιώντας το Burp)
|
||
- `-port 5556` : Ορίστε τον αριθμό θύρας TCP που χρησιμοποιείται για την κονσόλα και το adb.
|
||
- `-ports 5556,5559` : Ορίστε τις θύρες TCP που χρησιμοποιούνται για την κονσόλα και το adb.
|
||
- **`-tcpdump /path/dumpfile.cap`** : Καταγράψτε όλη την κίνηση σε ένα αρχείο
|
||
|
||
**Σύστημα**
|
||
|
||
- `-selinux {disabled|permissive}` : Ορίστε το module ασφαλείας Security-Enhanced Linux σε κατάσταση είτε απενεργοποιημένη είτε επιτρεπτική σε ένα λειτουργικό σύστημα Linux.
|
||
- `-timezone Europe/Paris` : Ορίστε τη ζώνη ώρας για τη εικονική συσκευή
|
||
- `-screen {touch(default)|multi-touch|o-touch}` : Ορίστε τη λειτουργία οθόνης αφής που προσομοιώνεται.
|
||
- **`-writable-system`** : Χρησιμοποιήστε αυτή την επιλογή για να έχετε μια εγγράψιμη εικόνα συστήματος κατά τη διάρκεια της συνεδρίας προσομοίωσης σας. Θα χρειαστεί επίσης να εκτελέσετε `adb root; adb remount`. Αυτό είναι πολύ χρήσιμο για την εγκατάσταση ενός νέου πιστοποιητικού στο σύστημα.
|
||
|
||
## Rooting μιας συσκευής Play Store
|
||
|
||
Εάν κατεβάσατε μια συσκευή με Play Store, δεν θα μπορείτε να αποκτήσετε root άμεσα, και θα λάβετε αυτό το μήνυμα σφάλματος
|
||
```
|
||
$ adb root
|
||
adbd cannot run as root in production builds
|
||
```
|
||
Χρησιμοποιώντας [rootAVD](https://github.com/newbit1/rootAVD) με [Magisk](https://github.com/topjohnwu/Magisk) κατάφερα να το ριζώσω (ακολουθήστε για παράδειγμα [**αυτό το βίντεο**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **ή** [**αυτό εδώ**](https://www.youtube.com/watch?v=qQicUW0svB8)).
|
||
|
||
## Εγκατάσταση Πιστοποιητικού Burp
|
||
|
||
Ελέγξτε την παρακάτω σελίδα για να μάθετε πώς να εγκαταστήσετε ένα προσαρμοσμένο πιστοποιητικό CA:
|
||
|
||
{{#ref}}
|
||
install-burp-certificate.md
|
||
{{#endref}}
|
||
|
||
## Ωραίες Επιλογές AVD
|
||
|
||
### Λάβετε μια Στιγμιότυπη Εικόνα
|
||
|
||
Μπορείτε **να χρησιμοποιήσετε το GUI** για να λάβετε μια στιγμιότυπη εικόνα της VM οποιαδήποτε στιγμή:
|
||
|
||
.png>)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|