2023-08-03 19:12:22 +00:00
# AVD - Android虚拟设备
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
## AVD - Android虚拟设备
2022-05-01 13:25:53 +00:00
2022-04-28 16:01:33 +00:00
< details >
2023-08-21 15:11:47 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks云 ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
* 你在一家**网络安全公司**工作吗? 你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组** ](https://discord.gg/hRep4RUj7f )或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **提交PR来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
< / details >
2023-08-03 19:12:22 +00:00
非常感谢[**@offsecjay**](https://twitter.com/offsecjay)在创建此内容时的帮助。
2020-09-10 15:57:58 +00:00
2023-08-21 15:11:47 +00:00
## 什么是
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
Android Studio允许**运行Android的虚拟机, 用于测试APK文件**。为了使用它们,您需要:
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
* **Android SDK工具** - [在这里下载 ](https://developer.android.com/studio/releases/sdk-tools )。
* 或者**Android Studio**( 带有Android SDK工具) - [在这里下载 ](https://developer.android.com/studio )。
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
在Windows中( 以我的情况为例) , **安装Android Studio后**,我将**SDK工具安装在**: `C:\Users\<用户名>\AppData\Local\Android\Sdk\tools`
2020-09-09 20:29:38 +00:00
2023-08-21 15:11:47 +00:00
在Mac上, 您可以**下载SDK工具**并将其放在PATH中运行:
2021-04-07 12:08:35 +00:00
```bash
2023-08-21 15:11:47 +00:00
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
2021-04-07 12:08:35 +00:00
```
2022-05-01 13:25:53 +00:00
## GUI
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
### 准备虚拟机
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
如果你已经安装了Android Studio, 你可以打开主项目视图并访问: _**工具**_ --> _**AVD管理器**_ 。
2020-09-09 20:29:38 +00:00
2022-12-24 12:04:26 +00:00
![](< .. / . . / . gitbook / assets / image ( 330 ) . png > )
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
然后,点击 _**创建虚拟设备**_ , _**选择**_ 你想要使用的手机,并点击 _**下一步**_ 。\
2023-08-21 15:11:47 +00:00
在当前视图中,你将能够**选择和下载**手机将要运行的Android镜像:
2020-09-09 20:29:38 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . . / . gitbook / assets / image ( 331 ) . png > )
2020-09-09 20:29:38 +00:00
2023-08-21 15:11:47 +00:00
所以,选择它并点击 _**下载**_ ( **现在等待镜像下载完成)。**\
**一旦镜像下载完成,只需选择** `下一步` 和 `完成` 。
2020-09-09 20:29:38 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . . / . gitbook / assets / image ( 332 ) . png > )
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
虚拟机将被创建。现在,**每次访问AVD管理器时, 它都会出现**。
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
### 运行虚拟机
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
为了**运行**它,只需点击 _**启动按钮**_ 。
2020-09-09 20:29:38 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . . / . gitbook / assets / image ( 334 ) . png > )
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
## 命令行工具
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
首先,你需要**决定要使用哪个手机**,为了查看可能的手机列表,请执行:
2021-10-18 11:21:18 +00:00
```
2020-09-09 20:29:38 +00:00
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
2023-08-21 15:11:47 +00:00
d: 0 or "automotive_1024p_landscape"
Name: Automotive (1024p landscape)
2023-08-03 19:12:22 +00:00
OEM : Google
2023-08-21 15:11:47 +00:00
Tag : android-automotive-playstore
2020-09-09 20:29:38 +00:00
---------
2023-08-21 15:11:47 +00:00
id: 1 or "Galaxy Nexus"
2023-08-03 19:12:22 +00:00
Name: Galaxy Nexus
OEM : Google
2020-09-09 20:29:38 +00:00
---------
2023-08-21 15:11:47 +00:00
id: 2 or "desktop_large"
Name: Large Desktop
2023-08-03 19:12:22 +00:00
OEM : Google
2023-08-21 15:11:47 +00:00
Tag : android-desktop
2020-09-09 20:29:38 +00:00
---------
2023-08-21 15:11:47 +00:00
id: 3 or "desktop_medium"
Name: Medium Desktop
2023-08-03 19:12:22 +00:00
OEM : Google
2023-08-21 15:11:47 +00:00
Tag : android-desktop
2020-09-09 20:29:38 +00:00
---------
2023-08-21 15:11:47 +00:00
id: 4 or "Nexus 10"
Name: Nexus 10
2023-08-03 19:12:22 +00:00
OEM : Google
2023-08-21 15:11:47 +00:00
[...]
2020-09-09 20:29:38 +00:00
```
2023-08-21 15:11:47 +00:00
一旦您决定要使用的设备名称,您需要**决定在此设备上运行哪个Android映像**。\
2023-08-03 19:12:22 +00:00
您可以使用`sdkmanager`列出所有选项:
2020-09-10 15:57:58 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
```
2023-08-03 19:12:22 +00:00
并使用以下命令**下载**您想要使用的一个(或全部):
2023-08-21 15:11:47 +00:00
{% code overflow="wrap" %}
2020-09-10 15:57:58 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
```
2023-08-21 15:11:47 +00:00
{% endcode %}
2023-08-03 19:12:22 +00:00
一旦你下载了想要使用的Android映像, 你可以使用以下命令**列出所有已下载的Android映像**:
2021-10-18 11:21:18 +00:00
```
2020-09-09 20:29:38 +00:00
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
id: 1 or "android-28"
2023-08-03 19:12:22 +00:00
Name: Android API 28
Type: Platform
API level: 28
Revision: 6
2020-09-09 20:29:38 +00:00
----------
id: 2 or "android-29"
2023-08-03 19:12:22 +00:00
Name: Android API 29
Type: Platform
API level: 29
Revision: 4
2020-09-09 20:29:38 +00:00
```
2023-08-03 19:12:22 +00:00
此时, 您已经决定要使用的设备, 并且已经下载了Android映像, 因此**您可以使用以下步骤创建虚拟机**:
2023-08-21 15:11:47 +00:00
{% code overflow="wrap" %}
2020-09-09 20:29:38 +00:00
```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"
```
2023-08-21 15:11:47 +00:00
{% endcode %}
2023-08-03 19:12:22 +00:00
在上一个命令中, 我使用设备“Nexus 5X”和Android镜像“system-images;android-28;google\_apis;x86\_64”创建了一个名为“_AVD9_”的虚拟机。\
现在,您可以使用以下命令列出您创建的虚拟机:
2020-09-09 20:29:38 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd
2023-08-03 19:12:22 +00:00
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
2020-09-09 20:29:38 +00:00
The following Android Virtual Devices could not be loaded:
2023-08-03 19:12:22 +00:00
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
2020-09-09 20:29:38 +00:00
```
2023-08-03 19:12:22 +00:00
### 运行虚拟机
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
我们已经看到了如何列出创建的虚拟机,但是**你也可以使用以下方法列出它们**:
2020-09-09 20:29:38 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
```
2023-08-21 15:11:47 +00:00
您可以使用以下命令**运行任何创建的虚拟机**:
{% code overflow="wrap" %}
2020-09-09 20:29:38 +00:00
```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"
```
2023-08-21 15:11:47 +00:00
{% endcode %}
或者使用更高级的选项,您可以运行一个虚拟机,比如:
{% code overflow="wrap" %}
2020-09-09 20:29:38 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
```
2023-08-21 15:11:47 +00:00
{% endcode %}
2023-08-03 19:12:22 +00:00
### 命令行选项
2020-09-09 20:29:38 +00:00
2023-08-21 15:11:47 +00:00
然而,有很多不同的命令行选项可以用来启动虚拟机。下面是一些有趣的选项,但你可以在[这里找到完整的列表](https://developer.android.com/studio/run/emulator-commandline)。
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
**启动**
2020-09-09 22:20:01 +00:00
2023-08-03 19:12:22 +00:00
* `-snapshot name` :启动虚拟机快照
* `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` :列出所有记录的快照
2020-09-09 22:20:01 +00:00
2023-08-03 19:12:22 +00:00
**网络**
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
* `-dns-server 192.0.2.0, 192.0.2.255` : 允许指定逗号分隔的DNS服务器给虚拟机。
* **`-http-proxy 192.168.1.12:8080`**: 允许指定要使用的HTTP代理( 非常有用, 可以使用Burp来捕获流量)
* `-port 5556` : 设置用于控制台和adb的TCP端口号。
* `-ports 5556,5559` : 设置用于控制台和adb的TCP端口。
* **`-tcpdump /path/dumpfile.cap`**:将所有流量捕获到文件中
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
**系统**
2020-09-09 20:29:38 +00:00
2023-08-21 15:11:47 +00:00
* `-selinux {disabled|permissive}` : 在Linux操作系统上将Security-Enhanced Linux安全模块设置为禁用或宽容模式。
2023-08-03 19:12:22 +00:00
* `-timezone Europe/Paris` :设置虚拟设备的时区
* `-screen {touch(default)|multi-touch|o-touch}` :设置模拟的触摸屏模式。
* **`-writable-system`**:在仿真会话期间使用此选项来拥有可写的系统映像。您还需要运行`adb root; adb remount`。这对于在系统中安装新证书非常有用。
2020-09-09 20:29:38 +00:00
2023-08-03 19:12:22 +00:00
## 在虚拟机上安装Burp证书
2020-09-09 20:40:34 +00:00
2023-08-21 15:11:47 +00:00
首先, 您需要从Burp中下载Der证书。您可以在_Proxy_ --> _Options_ --> _Import / Export CA certificate_ 中完成此操作。
2020-09-09 20:40:34 +00:00
2023-06-06 22:57:49 +00:00
![](< .. / . . / . gitbook / assets / image ( 367 ) . png > )
2020-09-09 20:40:34 +00:00
2023-08-03 19:12:22 +00:00
以Der格式**导出证书**,然后将其转换为**Android**能够**理解的形式**。请注意, 为了在AVD中配置Burp证书, 您需要使用**`-writable-system`**选项运行此虚拟机。例如,您可以这样运行它:
2023-08-21 15:11:47 +00:00
{% code overflow="wrap" %}
2020-09-09 20:40:34 +00:00
```bash
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
```
2023-08-21 15:11:47 +00:00
{% endcode %}
2023-08-03 19:12:22 +00:00
然后,要**配置Burp的证书**,请执行以下操作:
2020-09-09 20:40:34 +00:00
```bash
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
mv burp_cacert.pem $CERTHASHNAME #Correct name
2023-08-21 15:11:47 +00:00
adb root && sleep 2 && adb remount #Allow to write on /syste
2020-09-09 20:40:34 +00:00
adb push $CERTHASHNAME /sdcard/ #Upload certificate
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
adb reboot #Now , reboot the machine
```
2023-08-03 19:12:22 +00:00
一旦**机器完成重启**, burp证书将被其使用!
2020-09-09 20:40:34 +00:00
2023-08-03 19:12:22 +00:00
## 拍摄快照
2020-09-09 22:20:01 +00:00
2023-08-03 19:12:22 +00:00
您可以使用GUI随时拍摄虚拟机的快照:
2020-09-09 22:20:01 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . . / . gitbook / assets / image ( 336 ) . png > )
2022-04-28 16:01:33 +00:00
< details >
2023-08-21 15:11:47 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-08-21 15:11:47 +00:00
* 您在**网络安全公司**工作吗? 您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
2023-08-03 19:12:22 +00:00
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组** ](https://discord.gg/hRep4RUj7f )或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
2023-08-21 15:11:47 +00:00
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **提交PR来分享您的黑客技巧。**
2022-04-28 16:01:33 +00:00
< / details >