# AVD - Android Virtual Device
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ๐ฌ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ๐ฆ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
Thank you very much to [**@offsecjay**](https://twitter.com/offsecjay) for his help while creating this content.
## What is
Android Studio๋ **APK๋ฅผ ํ
์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ Android์ ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค**. ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์์ด ํ์ํฉ๋๋ค:
* **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\\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
### ๊ฐ์ ๋จธ์ ์ค๋น
Android Studio๋ฅผ ์ค์นํ๋ค๋ฉด, ๋ฉ์ธ ํ๋ก์ ํธ ๋ทฐ๋ฅผ ์ด๊ณ ๋ค์ ๊ฒฝ๋ก๋ก ์ ๊ทผํ ์ ์์ต๋๋ค: _**Tools**_ --> _**AVD Manager.**_
๊ทธ๋ฐ ๋ค์, _**Create Virtual Device**_๋ฅผ ํด๋ฆญํฉ๋๋ค.
_**์ฌ์ฉํ ** ์ ํ๊ธฐ๋ฅผ ์ ํ_ํ๊ณ _**Next.**_๋ฅผ ํด๋ฆญํฉ๋๋ค.
{% hint style="warning" %}
Play Store๊ฐ ์ค์น๋ ์ ํ๊ธฐ๊ฐ ํ์ํ๋ค๋ฉด Play Store ์์ด์ฝ์ด ์๋ ๊ฒ์ ์ ํํ์ธ์!
{% endhint %}
ํ์ฌ ๋ทฐ์์๋ **์ ํ๊ธฐ๊ฐ ์คํํ Android ์ด๋ฏธ์ง๋ฅผ ์ ํํ๊ณ ๋ค์ด๋ก๋**ํ ์ ์์ต๋๋ค:
๋ฐ๋ผ์ ์ ํํ๊ณ ๋ค์ด๋ก๋๋์ง ์์๋ค๋ฉด ์ด๋ฆ ์์ _**Download**_ ๊ธฐํธ๋ฅผ ํด๋ฆญํ์ธ์ (**์ด์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ธ์).**\
์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋๋ฉด **`Next`**์ **`Finish`**๋ฅผ ์ ํํ์ธ์.
๊ฐ์ ๋จธ์ ์ด ์์ฑ๋ฉ๋๋ค. ์ด์ **AVD ๋งค๋์ ์ ์ ๊ทผํ ๋๋ง๋ค ํญ์ ์กด์ฌํ ๊ฒ์
๋๋ค.**
### ๊ฐ์ ๋จธ์ ์คํ
**์คํ**ํ๋ ค๋ฉด _**Start button**_์ ๋๋ฅด์ธ์.
![](<../../.gitbook/assets/image (518).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_"๋ผ๋ ์ด๋ฆ์ VM์ ์์ฑํ์ต๋๋ค** **๊ธฐ๊ธฐ** "_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 %}
### Command line options
๊ทธ๋ฌ๋ **๊ฐ์ ๋จธ์ ์ ์์ํ๋ ๋ฐ ์ ์ฉํ ๋ค์ํ ๋ช
๋ น์ค ์ต์
์ด ๋ง์ด ์์ต๋๋ค**. ์๋์์ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์ต์
์ ์ฐพ์ ์ ์์ง๋ง [**์ฌ๊ธฐ์์ ์ ์ฒด ๋ชฉ๋ก์ ์ฐพ์ ์ ์์ต๋๋ค**](https://developer.android.com/studio/run/emulator-commandline)
**Boot**
* `-snapshot name` : VM ์ค๋
์ท ์์
* `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : ๊ธฐ๋ก๋ ๋ชจ๋ ์ค๋
์ท ๋ชฉ๋ก
**Network**
* `-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`** : ํ์ผ์ ๋ชจ๋ ํธ๋ํฝ์ ์บก์ฒํฉ๋๋ค.
**System**
* `-selinux {disabled|permissive}` : Linux ์ด์ ์ฒด์ ์์ ๋ณด์ ๊ฐํ Linux ๋ณด์ ๋ชจ๋์ ๋นํ์ฑํ ๋๋ ํ์ฉ ๋ชจ๋๋ก ์ค์ ํฉ๋๋ค.
* `-timezone Europe/Paris` : ๊ฐ์ ์ฅ์น์ ์๊ฐ๋๋ฅผ ์ค์ ํฉ๋๋ค.
* `-screen {touch(default)|multi-touch|o-touch}` : ์๋ฎฌ๋ ์ด์
๋ ํฐ์น ์คํฌ๋ฆฐ ๋ชจ๋๋ฅผ ์ค์ ํฉ๋๋ค.
* **`-writable-system`** : ์๋ฎฌ๋ ์ด์
์ธ์
๋์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ์์คํ
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด ์ต์
์ ์ฌ์ฉํ์ญ์์ค. `adb root; adb remount`๋ ์คํํด์ผ ํฉ๋๋ค. ์ด๋ ์์คํ
์ ์ ์ธ์ฆ์๋ฅผ ์ค์นํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
## Rooting a Play Store device
Play Store๊ฐ ์๋ ์ฅ์น๋ฅผ ๋ค์ด๋ก๋ํ ๊ฒฝ์ฐ ์ง์ ๋ฃจํธ ๊ถํ์ ์ป์ ์ ์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
```
$ adb root
adbd cannot run as root in production builds
```
Using [rootAVD](https://github.com/newbit1/rootAVD) with [Magisk](https://github.com/topjohnwu/Magisk) I was able to root it (follow for example [**this video**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **or** [**this one**](https://www.youtube.com/watch?v=qQicUW0svB8)).
## Burp ์ธ์ฆ์ ์ค์น
์ฌ์ฉ์ ์ ์ CA ์ธ์ฆ์๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์:
{% content-ref url="install-burp-certificate.md" %}
[install-burp-certificate.md](install-burp-certificate.md)
{% endcontent-ref %}
## ๋ฉ์ง AVD ์ต์
### ์ค๋
์ท ์ฐ๊ธฐ
์ธ์ ๋ ์ง VM์ ์ค๋
์ท์ ์ฐ์ผ๋ ค๋ฉด **GUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค**:
![](<../../.gitbook/assets/image (234).png>)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ๐ฌ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ๐ฆ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}