
FridaベースのAndroidアプリ向けランタイムAPIモニターで、事前定義またはカスタムカテゴリにわたって、呼び出されたAPI、パラメータ、戻り値、呼び出し元をログ記録します。

PAPIMonitor (Python API Monitor for Android apps) は、Frida をベースにしたPythonツールで、アプリ実行中にユーザーが選択したAPIを監視します。 アプリは、あらかじめADB経由でPCホストに接続されたエミュレーター内にインストールされている必要があります。 ユーザーは、複数のカテゴリ(例:Device Data、Device Info、SMS)に分割された定義済みのAPIリスト、またはコマンドラインからスクリプトに渡されたカスタムAPIリストを監視対象として選択できます。 このツールは、呼び出されたAPI、パラメータ、戻り値、そしてその呼び出し元の行とファイルを保存します。
以下は出力例です:
{
"category": "Custom",
"class": "com.dave.popupre.MainActivity",
"method": "getText",
"args": [],
"calledFrom": "com.dave.popupre.MainActivity$1.onClick(MainActivity.java:26)",
"returnValue": "Hello Toast!",
"time": "03/09/2021, 14:43:06"
}
⚠️ Google Emulator に関する注意
| Google Emulator | Ubuntu | Windows | MacOS |
|---|---|---|---|
| 7.x x86 | ✔️ | ✔️ | ✔️ |
| 8.x x86 | ✔️ | ✔️ | ✔️ |
| 9.0 x86 | ✔️ | ✔️ | ✔️ |
| 10.0 x86 | ✔️ | ✔️ | ✔️ |
| 11.0 x86 | ✔️ | ✔️ | ✔️ |
| 12.0 x86 | ✔️ | ✔️ | ✔️ |
⚠️ Frida は Android 11-12 (x86_64) (Google Emulator) で動作しないようです。
一般的な要件:
sudo apt-get install libjpeg-dev zlib1g-dev
pyenv install 3.8.0
pyenv virtualenv 3.8.0 papi-monitor
pyenv activate 3.8.0/envs/papi-monitor
pip3 install -r requirements
sudo apt-get install python3-virtualenv
virtualenv env
source env/bin/activate
pip install -r requirements
resources/frida-server/ にダウンロードpython papi_monitor.py --package-name com.package.name --filter "Crypto"
python papi_monitor.py --file-apk app.apk --api-monitor api_personalized.json
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json
python papi_monitor.py --package-name com.package.name --filter "ALL"
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json --store-script True --filter "Crypto" "Crypto - Hash"
python papi_monitor.py --package-name com.package.name --api-monitor api_personalized.json --pinning-bypass --antiroot-bypass
Android 用の Frida スクリプトは多数 こちら にあります。