Android_emurootは、 Google API Playstoreと呼ばれるGoogleが提供するエミュレータ画像を使用するAndroid仮想マシンで実行されているシェルに、その場でルート特権を付与することを可能にするPythonスクリプトであり、リバースエンジニアが調査に深く入り込むのを支援します。
Android_emurootでは、 Google API PlaystoreエミュレータをQEMU GDB Stubオプション有効にして起動する必要があり、それを使用して、カーネルタスク構造にメモリに保存されているプロセスメタデータを変更します。主なアイデアは、最も低い特権を持つシェルから開始し、カーネルメモリに関連する資格構造を見つけて、最高の特権を持つ別の構造に置き換えることです。
Google API Playstoreエミュレーターにこのメモリの変更を実装すると、次の2つの利点があります。
Android_emurootは、すでに動作するAndroid SDKを持っている必要があります。コマンドラインツールのインストールをお勧めします(Android Studio GUI:ツール> Android> SDK Manager> SDK Toolsからダウンロード可能)。
Android_emurootは、ADB施設と、次の2つのPythonモジュールのGDB施設を使用するPythonスクリプトです。
これらのモジュールがあることを確認するか、PIP: pip3 install -r requirements.txtを介してインストールしてください。
NB:Android_EmurootはPython 2とPython 3をサポートしています。
ハードウェアアーキテクチャとエミュレータのカーネルバージョンに応じて、関連するQEMU画像のメモリレイアウトは異なります。これにより、Android_Emurootによって実装されたメモリパッチの場所も異なります。
今のところ、Android_Emurootは次のバージョンのエミュレーターをサポートしています。
| Androidバージョン | API | 建築 | カーネル | 建てる |
|---|---|---|---|---|
| Android 7.0 | 24 | x86 | 3.10 | Google-Api-Playstore |
| Android 7.1.1 | 25 | x86 | 3.10 | Google-Api-Playstore |
| Android 8.0 | 26 | x86 | 3.18 | Google-Api-Playstore |
| Android 8.1 | 27 | x86 | 3.18 | Google-Api-Playstore |
ルート化するAVDが、このリストの1つのエミュレータに基づいていることを確認してください。
NB:エミュレータはsdkmanager --install "system-images;android-27;google_apis_playstore;x86" GUIまたはコマンドラインを使用して、Android Studio ToolchainのツールであるSdkmanagerを介してダウンロードできます。次に、AVDマネージャーGUIを介して、またはAVDManagerを介してavdmanager create avd -n my_avd_name -k "system-images;android-27;google_apis_playstore;x86"ます。
Android_emurootは両方と対話する必要があります。
以下のスキームは、すべての要素間の相互作用を示しています。

Android Debug Bridge(ADB)は、Android Studioツールチェーンのコマンドラインツールで、Androidデバイスと通信できます。 ADBサーバーは、Android_Emurootとデバイスで起動するADBデーモンとの間の通信を管理するコンポーネントです。デフォルトでは、ADBサーバーは127.0.0.1ポート5037でリッスンします。 adb start-server使用すると、サーバーが実行されていることを確認できます。
ADBサーバーが実行されていることを確認してください。
Android_emurootを使用する他の要件は、GDBサーバーを起動時にAVDに接続することです。 Android Studio Toolchainの別のコマンドラインツールであるエミュレータは、多くのオプションを備えたAVDを起動できます。その中には、TCPポート1234にGDBサーバーを開くと、 -qemu -s ( -qemu -gdb tcp::1234のShorthang)。
このオプションを使用して、GDBサーバーを利用可能にします。
エミュレータの使用の簡単な例は次のとおりです。
emulator -avd my_avd_name [options] -qemu -s
このようにして、GDBサーバーがAVD my_avd_nameに添付され、Android_emurootはGDBクライアントを生成してメモリパッチを実行できます。
ADBサーバーとGDBサーバーの両方が動作可能になったら、Android_emurootを使用する準備ができています。
Android_emurootには3つのモードがあります。
single --magic-name NAME :パラメーターに与えられた1つのシェルのみにルート特権を与えるにはadbd [--stealth] : adbdサーバー全体にルート特権を与える。それぞれの新しいシェルはルートとして生成されますsetuid --path NAME :ファイルシステムにsetUidルートバイナリをインストールするには使用法とツールの内部の詳細:詳細な使用法
Android_emurootは、Airbus-SeclabのMouad AbouhaliとAnaïsGantetによって書かれています。
Android_EmurootはGPLV2でリリースされます。