AVD - Android Virtual Device
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Thank you very much to @offsecjay for his help while creating this content.
Android Studio는 APK를 테스트하는 데 사용할 수 있는 Android의 가상 머신을 실행할 수 있게 해줍니다. 이를 사용하기 위해서는 다음이 필요합니다:
Windows에서는 (제 경우) Android Studio를 설치한 후 SDK 도구가: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
에 설치되었습니다.
Mac에서는 SDK 도구를 다운로드하고 PATH에 추가할 수 있습니다:
또는 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 문제에 대해:
Android Studio를 설치했다면, 메인 프로젝트 뷰를 열고 다음 경로로 접근할 수 있습니다: Tools --> AVD Manager.
그런 다음, _Create Virtual Device_를 클릭합니다.
_사용할 전화기를 선택_하고 _Next._를 클릭합니다.
Play Store가 설치된 전화기가 필요하다면 Play Store 아이콘이 있는 것을 선택하세요!
현재 뷰에서는 전화기가 실행할 Android 이미지를 선택하고 다운로드할 수 있습니다:
따라서 선택하고 다운로드되지 않았다면 이름 옆의 Download 기호를 클릭하세요 (이제 이미지가 다운로드될 때까지 기다리세요).
이미지가 다운로드되면 **Next
**와 **Finish
**를 선택하세요.
가상 머신이 생성됩니다. 이제 AVD 매니저에 접근할 때마다 항상 존재할 것입니다.
실행하려면 _Start button_을 누르세요.
먼저 사용할 전화기를 결정해야 합니다. 가능한 전화기 목록을 보려면 다음을 실행하세요:
기기를 사용하기로 결정한 후, 이 기기에서 실행할 Android 이미지를 결정해야 합니다.
sdkmanager
를 사용하여 모든 옵션을 나열할 수 있습니다:
그리고 다운로드 하세요 사용하고 싶은 것(또는 모두)을 위해:
원하는 Android 이미지를 다운로드한 후에는 다음 명령어로 다운로드한 모든 Android 이미지를 나열할 수 있습니다:
이 순간 당신은 사용하고자 하는 장치를 결정하였고 Android 이미지를 다운로드하였으므로 다음과 같이 가상 머신을 생성할 수 있습니다:
마지막 명령어에서 "AVD9"라는 이름의 VM을 생성했습니다 기기 "Nexus 5X"와 안드로이드 이미지 "system-images;android-28;google_apis;x86_64"를 사용하여. 이제 다음 명령어로 생성한 가상 머신 목록을 확인할 수 있습니다:
우리는 이미 생성된 가상 머신을 나열하는 방법을 보았지만 다음과 같이 나열할 수도 있습니다:
당신은 다음을 사용하여 생성된 모든 가상 머신을 간단히 실행할 수 있습니다:
더 고급 옵션을 사용하여 가상 머신을 실행할 수 있습니다:
그러나 가상 머신을 시작하는 데 유용한 다양한 명령줄 옵션이 많이 있습니다. 아래에서 몇 가지 흥미로운 옵션을 찾을 수 있지만 여기에서 전체 목록을 찾을 수 있습니다
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
도 실행해야 합니다. 이는 시스템에 새 인증서를 설치하는 데 매우 유용합니다.
Play Store가 있는 장치를 다운로드한 경우 직접 루트 권한을 얻을 수 없으며, 다음과 같은 오류 메시지가 표시됩니다.
Using rootAVD with Magisk I was able to root it (follow for example this video or this one).
사용자 정의 CA 인증서를 설치하는 방법은 다음 페이지를 확인하세요:
언제든지 VM의 스냅샷을 찍으려면 GUI를 사용할 수 있습니다:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)