Fridaを使用してlibmedia内の関数呼び出しを検索する方法


まず、以下の手順に従ってFridaをセットアップします:

  1. Pythonのパッケージマネージャーであるpipを使用して、Fridaをインストールします:

    $ pip install frida
  2. Androidデバイスと接続するために、Fridaが提供するadbツールを使用します:

    $ adb start-server
  3. ターゲットのAndroidデバイス上でFridaサーバを起動します:

    $ frida-server

次に、Fridaを使用してlibmedia内の関数呼び出しを追跡するスクリプトを作成します。以下は、スクリプトの例です:

const moduleName = "libmedia.so";
const functionName = "yourTargetFunction";
function traceFunction() {
  const module = Process.getModuleByName(moduleName);
  const targetFunction = module.findExportByName(functionName);
  if (targetFunction !== null) {
    console.log(`Found function at address: ${targetFunction}`);
    Interceptor.attach(targetFunction, {
      onEnter: function (args) {
        console.log(`Called ${functionName}`);
        // ここに任意の追加の処理を追加できます
      },
      onLeave: function (retval) {
        // ここに任意の追加の処理を追加できます
      },
    });
  } else {
    console.log(`Function ${functionName} not found in ${moduleName}`);
  }
}
// アプリケーション起動時に呼び出される関数
Java.perform(function () {
  traceFunction();
});

上記のスクリプトでは、moduleNameには対象のライブラリ名(libmedia.so)を、functionNameには追跡したい関数の名前を指定します。onEnterおよびonLeaveハンドラ内には、関数呼び出し時に実行される追加の処理を追加できます。

スクリプトを実行するには、以下のコマンドを使用します:

$ frida -U -f <アプリのパッケージ名> -l <スクリプトのパス>

このコマンドは、対象のアプリを起動し、Fridaスクリプトをロードします。スクリプトが関数呼び出しを追跡し、コンソールに結果を表示します。

以上で、Fridaを使用してlibmedia内の関数呼び出しを検索する方法を説明しました。この方法を使用すると、アプリケーションの動作やAPIの使用方法を理解するのに役立ちます。