AVD - Android Virtual Device

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

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

仮想マシンの準備

Android Studioをインストールした場合、メインプロジェクトビューを開いて、Tools --> AVD Manager にアクセスできます。

次に、Create Virtual Device をクリックします。

使用したい携帯電話を選択 し、Next をクリックします。

Playストアがインストールされた携帯電話が必要な場合は、Playストアアイコンが付いたものを選択してください!

現在のビューでは、携帯電話が実行されるAndroidイメージを選択してダウンロードできます:

それを選択し、ダウンロードされていない場合は名前の横にある_Download_ シンボルをクリックします(イメージがダウンロードされるまでお待ちください)。 イメージがダウンロードされたら、Next を選択して Finish をクリックします。

仮想マシンが作成されます。これで、AVDマネージャにアクセスするたびに表示されます

仮想マシンの実行

実行するには、Startボタン を押してください。

コマンドラインツール

まず、使用する携帯電話を決定する必要があります。可能な携帯電話のリストを表示するには、次のコマンドを実行します:

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

そして、次のコマンドを使用して、好きなものを1つダウンロードしてください:

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"

最後のコマンドでは、デバイス "Nexus 5X" と Androidイメージ "system-images;android-28;google_apis;x86_64" を使用して、"AVD9" という名前のVMを作成しました。 これで、作成した仮想マシンの一覧を表示できます:

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ストアデバイスのルート化

Playストア付きのデバイスをダウンロードした場合、直接ルート権限を取得することはできず、次のエラーメッセージが表示されます

$ adb root
adbd cannot run as root in production builds

Burp証明書のインストール

カスタムCA証明書のインストール方法については、次のページを確認してください:

pageInstall Burp Certificate

便利なAVDオプション

スナップショットを取る

いつでもVMのスナップショットを取るには、GUIを使用できます:

Last updated