AVD - Android Virtual Device

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

이 콘텐츠를 만드는 동안 @offsecjay님께 많은 도움을 받았습니다.

무엇인가

Android Studio는 APK를 테스트하는 데 사용할 수 있는 Android의 가상 머신을 실행할 수 있습니다. 이를 사용하려면 다음이 필요합니다:

Windows(내 경우)에서 Android Studio를 설치한 후에는 SDK 도구가 설치된 위치: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools

mac에서는 SDK 도구를 다운로드하고 PATH에서 실행할 수 있습니다.

brew tap homebrew/cask
brew install --cask android-sdk

또는 https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a에서 나타나는 Android Studio GUI 또는 ~/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

가상 머신 준비

만약 안드로이드 스튜디오를 설치했다면, 메인 프로젝트 뷰를 열고 다음을 선택할 수 있습니다: 도구 --> AVD 관리자.

그런 다음, _가상 장치 생성_을 클릭합니다.

_사용하려는 휴대폰을 선택_하고 _다음_을 클릭합니다.

Play Store가 설치된 휴대폰이 필요한 경우 Play Store 아이콘이 있는 것을 선택하십시오!

현재 보고 있는 화면에서는 휴대폰이 실행될 Android 이미지를 선택하고 다운로드할 수 있습니다:

그래서 선택하고 다운로드되지 않은 경우 이름 옆의 다운로드 기호를 클릭합니다 (이미지가 다운로드될 때까지 기다립니다). 이미지가 다운로드되면 다음 및 **완료**를 선택합니다.

가상 머신이 생성됩니다. 이제 AVD 관리자에 액세스할 때마다 표시됩니다.

가상 머신 실행

실행하려면 _시작 버튼_을 누르기만 하면 됩니다.

명령줄 도구

먼저 사용할 휴대폰을 결정해야 하며, 가능한 휴대폰 목록을 보려면 실행하세요:

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 이미지를 다운로드했으므로 다음을 사용하여 가상 머신을 생성할 수 있습니다:

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"

마지막 명령어에서 "AVD9" 라는 이름의 VM을 생성했습니다. 디바이스는 "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

가상 머신 실행

이미 생성된 가상 머신 목록을 볼 수 있는 방법을 보았습니다. 또한 다음을 사용하여 목록을 볼 수도 있습니다:

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

명령줄 옵션

그러나 가상 머신을 시작하는 데 사용할 수 있는 다양한 명령줄 유용한 옵션이 많이 있습니다. 아래에서 몇 가지 흥미로운 옵션을 찾을 수 있지만 여기에서 완전한 목록을 찾을 수 있습니다

부팅

  • -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 프록시를 지정하는 것을 허용합니다 (Burp를 사용하여 트래픽을 캡처하는 데 매우 유용함)

  • -port 5556 : 콘솔 및 adb에 사용되는 TCP 포트 번호 설정

  • -ports 5556,5559 : 콘솔 및 adb에 사용되는 TCP 포트 설정

  • -tcpdump /path/dumpfile.cap : 모든 트래픽을 파일에 캡처

시스템

  • -selinux {disabled|permissive} : Linux 운영 체제에서 보안 강화된 Linux 보안 모듈을 비활성화 또는 허용 모드로 설정

  • -timezone Europe/Paris : 가상 장치의 시간대 설정

  • -screen {touch(default)|multi-touch|o-touch} : 에뮬레이션된 터치 스크린 모드 설정

  • -writable-system : 에뮬레이션 세션 중에 쓰기 가능한 시스템 이미지를 사용하려면 이 옵션을 사용하십시오. adb root; adb remount도 실행해야 합니다. 시스템에 새 인증서를 설치하는 데 매우 유용합니다.

Play Store 장치 루팅

Play Store가 포함된 장치를 다운로드했다면 루트 권한을 직접 얻을 수 없으며 다음 오류 메시지가 표시됩니다.

$ adb root
adbd cannot run as root in production builds

AVD Android Virtual Device(Android 가상 장치)를 루팅하기 위해 rootAVDMagisk를 사용하여 루팅할 수 있었습니다(예를 들어 이 비디오 또는 이 비디오를 참고하십시오).

Burp 인증서 설치

사용자 정의 CA 인증서를 설치하는 방법을 알아보려면 다음 페이지를 확인하십시오:

pageInstall Burp Certificate

좋은 AVD 옵션

스냅샷 찍기

GUI를 사용하여 언제든지 VM의 스냅샷을 찍을 수 있습니다:

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법:

Last updated