IDA を使用したアプリケーションのデバッグ¶
本章では、FIRERPA とその関連機能およびスクリプトを使用して、Android アプリケーションを迅速にデバッグする方法について説明します。デモ環境は Android 10、ホストシステムは Ubuntu 22.04 で、IDA 7.5 (wine)、ADB、jdb、Python などの関連ツールがインストールされています。IDA は 7.5 以上、FIRERPA サーバーは最新バージョンをインストールすることを推奨します。

デバッグ可能モードに設定¶
お使いのシステムがすでにデバッグモードになっている場合は、この手順は不要です。そうでない場合は、FIRERPA リモートデスクトップを開き、ターミナルで setdebuggable と入力してください。コマンドを入力すると、スマートフォンがソフトリブートされますが、心配はいりません。約2分で完全に正常な状態に戻り、スマートフォンはデバッグ可能モードになります。

IDA デバッグサービスのインストール¶
デバッグを続ける前に、IDA に付属している Android デバッグ用のサーバーをデバイスにアップロードする必要があります。IDA のインストールディレクトリにある dbgsrv ディレクトリ内に android_server と android_server64 があります。デバッグ対象のアプリケーションが 32 ビットのライブラリを使用している場合は android_server を、そうでない場合は android_server64 を使用してください。必要なファイルをドラッグ&ドロップでアップロードするか、adb push を使用して Android デバイスに転送し、実行権限を付与してください。
chmod 755 android_server*
実行権限を付与した後、android_server サービスを起動する必要があります。adb(root 権限が必要)またはリモートデスクトップのターミナルからこの実行可能ファイルを実行できます。新しいバージョンのシステム(>=10)では、事前に IDA_LIBC_PATH 環境変数を設定する必要があります。
IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64 -kk
注釈
IDA デバッグサービスのフォワーディング¶
デバッグのようにリアルタイム性やパフォーマンスが要求される場面では、USB 接続を使用することをお勧めします。デバイスを現在のコンピュータに接続し、adb の認証が完了していることを確認してから、以下のコマンドを実行してください。
adb forward tcp:23946 tcp:23946
注釈
アプリケーションのデバッグ開始¶
私たちは多くの作業をしたわけではなく、後続の操作の大部分を自動化するスクリプトをラップしただけです。スクリプトの出力プロンプトに従って操作するだけで、プロジェクトの tools ディレクトリにある ida.py スクリプトを以下のコマンドで使用できます。
python3 ida.py -d 192.168.0.2 -a com.android.settings

ここで、-d パラメータはデバイスの IP、つまり FIRERPA サービスが実行されているデバイスの IP であり、-a パラメータはアプリケーションのパッケージ名です。コマンドを実行すると、IDA ソフトウェアをアプリケーションプロセスにアタッチするように促されます。



これで、すべての手順が完了しました。ida.py のコマンドラインに戻り、Enter キーを押してください。これでデバッグを続けることができます。