Android / 中級 / 読了目安:18分
REA の Android 解析:この APK はどこへ通信する?
REA で Android APK を解析。リクエストを組み立てるコードと呼び出し元を追い、候補のエンドポイントと実際に観測した通信を区別します。
このページの内容
一つの機能からリクエスト生成までを結ぶ、注釈付きの経路。ホスト、パス、パラメーターの候補を含みます。
必要なもの調査可能な APK、完全な JDK 17+、インストール済みの jadx-headless-mcp 0.7.1 JAR。使用する OS へのプロバイダーの対応も確認してください。
01. 画面か操作を一つ選ぶ
「すべての API を列挙して」は範囲が広すぎます。公開カタログの読み込みなど、目に見える操作から始めてください。APK のバージョンと画面名を記録します。探すのはリクエストを作るコードであり、パッケージ内の URL らしい文字列すべてではありません。
これは静的調査であり、APK は起動しません。埋め込み文字列には、廃止されたホスト、テスト環境、実行時設定と組み合わせるパスが含まれる場合があります。
REA で /absolute/path/app.apk を調べてください。公開カタログを読み込むコードを探し、該当しそうな画面またはリポジトリクラスから通信メソッドまで追います。ホスト、パス、HTTP メソッド、パラメーター候補を、クラスとメソッドの根拠付きで報告してください。静的な宣言と、実行時に確認された通信を区別してください。02. Android プロバイダーに接続する
コンパイラーモジュールを含む完全な JDK を使います。インストール済みプロバイダーの JAR を REA に指定してください。エージェント経由で REA を使う場合は、そのサーバーにも同じ環境を設定して再起動します。別のターミナルで変数を設定しても、既存プロセスには反映されません。
export REA_JADX_MCP_JAR="/absolute/path/jadx-headless-mcp-0.7.1-all.jar"
npx -y [email protected] inspect-android-package "/absolute/path/app.apk" --json
npx -y [email protected] search-android-classes "/absolute/path/app.apk" Catalog --json03. クラスを調べてからメソッドを選ぶ
クラス検索はクラス名を対象とし、メソッド本体の任意の文字列は検索しません。機能名や Api、Service、Repository などの通信関連名を試してください。難読化されたパッケージでは、マニフェストの Activity から依存先へたどるなど、別の入口が必要になることがあります。
以下のクラス名を、検索が返した正確な名前に置き換えます。メソッドを選ぶ前にメンバーを確認してください。同名のオーバーロードがある場合は、クラス一覧が返したオーバーロード番号を使います。
npx -y [email protected] inspect-android-class "/absolute/path/app.apk" com.example.CatalogRepository --json
npx -y [email protected] inspect-android-method "/absolute/path/app.apk" com.example.CatalogRepository loadCatalog --json04. リクエストの組み立てと呼び出し元を別々に追う
リクエストを作る場所と、メソッドが呼ばれる場所を読みます。固定のベース URL は一部にすぎません。ビルダーで置き換えられたり、インターセプターがパラメーターを追加したり、ネイティブライブラリに処理が隠れていたりします。各境界を記録してください。
参照元の一覧が示すのは、解析エンジンが把握した静的な関係です。リフレクションや動的に読み込まれるコードは漏れることがあります。Java の代わりに smali が返った場合も、同じメソッドの別表現として明示的に調べてください。
npx -y [email protected] trace-android-references "/absolute/path/app.apk" com.example.CatalogRepository --method-name loadCatalog --json- どの呼び出し元が、このメソッドと選んだ機能を結び付けるか?
- ベース URL はリテラル、リソース、設定値、実行時の結果のどれか?
- 実際にリクエストへ追加されるフィールドは何か?
- 静的な追跡はどこで止まるか?
05. 調査結果を小さな仕様にまとめる
候補メソッド、URL の組み立て方、パラメーター名、根拠となるメソッド参照を表にします。実行時にしか分からない値は不明のまま残してください。ローカルのモックサーバーを使い、この仕様に対する自分のクライアントを試作できます。
静的なエンドポイント一覧を、通信の取得に成功した結果と数えないでください。そう主張するには、適切なテスト環境で一致する版のアプリを実行し、別途記録する必要があります。このチュートリアルは調査手順を示すもので、特定 APK の検証や API レスポンスの取得を主張しません。
コマンドは REA 6.4.0 で確認済みです。対象固有の結果は、ファイルとプロバイダーに依存します。 元の資料と対象範囲を読む →