まず、以下の手順に従ってFridaをセットアップします:
-
Pythonのパッケージマネージャーであるpipを使用して、Fridaをインストールします:
$ pip install frida
-
Androidデバイスと接続するために、Fridaが提供するadbツールを使用します:
$ adb start-server
-
ターゲットの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の使用方法を理解するのに役立ちます。