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)
このコンテンツの作成中に助けてくれた@offsecjayに感謝します。
Android Studioは、APKをテストするために使用できるAndroidの仮想マシンを実行することを可能にします。これらを使用するには、次のものが必要です:
Android SDKツール - ここからダウンロード。
またはAndroid Studio(Android SDKツール付き) - ここからダウンロード。
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をインストールした場合は、メインプロジェクトビューを開いて、ツール --> _AVDマネージャー_にアクセスできます。
次に、_仮想デバイスの作成_をクリックします。
_使用したい電話を選択し、次へ_をクリックします。
Play Storeがインストールされた電話が必要な場合は、Play Storeアイコンのあるものを選択してください!
現在のビューでは、電話が実行するAndroidイメージを選択してダウンロードできます:
それを選択し、ダウンロードされていない場合は、名前の横にある_ダウンロード_シンボルをクリックします(今はイメージがダウンロードされるまで待ってください)。
イメージがダウンロードされたら、**次へ
と完了
**を選択します。
仮想マシンが作成されます。これで、AVDマネージャーにアクセスするたびにそれが表示されます。
実行するには、_スタートボタン_を押します。
まず、使用したい電話を決定する必要があります。可能な電話のリストを見るには、次のコマンドを実行します:
デバイスの名前を決定したら、このデバイスで実行したいAndroidイメージを決定する必要があります。
sdkmanager
を使用してすべてのオプションをリストできます:
そして、使用したいもの(またはすべて)をダウンロードします:
ダウンロードしたいAndroidイメージをダウンロードしたら、次のコマンドでダウンロードしたすべてのAndroidイメージをリストできます:
この時点で、使用したいデバイスを決定し、Androidイメージをダウンロードしたので、仮想マシンを作成できます:
最後のコマンドで、"AVD9"という名前のVMを作成しました。使用したデバイスは"Nexus 5X"で、Androidイメージは"system-images;android-28;google_apis;x86_64"です。 今、あなたが作成した仮想マシンの一覧を表示するには、次のコマンドを使用できます:
作成された仮想マシンをリストする方法はすでに見ましたが、次の方法でもリストできます:
あなたは単に作成された任意の仮想マシンを実行することができます:
また、より高度なオプションを使用して、次のように仮想マシンを実行できます:
ただし、仮想マシンを起動するために使用できるさまざまな便利なコマンドラインオプションがたくさんあります。以下にいくつかの興味深いオプションを示しますが、完全なリストはここで見つけることができます
ブート
-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オペレーティングシステムでSecurity-Enhanced Linuxセキュリティモジュールを無効または許可モードに設定します。
-timezone Europe/Paris
: 仮想デバイスのタイムゾーンを設定します。
-screen {touch(default)|multi-touch|o-touch}
: エミュレートされたタッチスクリーンモードを設定します。
-writable-system
: エミュレーションセッション中に書き込み可能なシステムイメージを持つためにこのオプションを使用します。adb root; adb remount
も実行する必要があります。これは、システムに新しい証明書をインストールするのに非常に便利です。
Playストアのあるデバイスをダウンロードした場合、直接ルートを取得することはできず、このエラーメッセージが表示されます。
Using rootAVD with Magisk を使用して、ルート化することができました(例えば、この動画 または こちらの動画を参照してください)。
カスタムCA証明書のインストール方法については、以下のページを確認してください:
いつでもGUIを使用してVMのスナップショットを撮ることができます:
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)