MASTG-TOOL-0036 r2frida

r2frida は、radare2 を Frida に接続できるプロジェクトであり、radare2 の強力なリバースエンジニアリング機能と Frida の動的計装ツールキットを効果的に融合しています。r2frida は Android と iOS の両方で使用でき、以下のことが可能です。

  • USB または TCP 経由で、任意のローカルプロセスまたはリモート frida-server に radare2 をアタッチします。

  • ターゲットプロセスからのメモリを読み書きします。

  • マップ、シンボル、インポート、クラス、メソッドなどの Frida 情報を radare2 にロードします。

  • Frida Javascript API に r2pipe インタフェースを公開して、Frida から r2 コマンドを呼び出します。

r2frida の公式インストール手順 を参照してください。

frida-server が実行中であれば、pid、spawn パス、ホストとポート、デバイス ID を使用してアタッチできるはずです。たとえば PID 1234 にアタッチするには以下のようにします。

r2 frida://1234

frida-server への接続方法のさまざまな例については、r2frida の README ページの usage セクションを参照してください

以下の例は Android アプリを使用して実行していますが、iOS アプリにも適用できます。

r2frida セッションに入ると、すべてのコマンドは : または =! で始まります。たとえば、radare2 ではバイナリ情報を表示するために i を実行しますが、r2frida では :i を使用します。

r2 frida://? ですべてのオプションを表示します。

[0x00000000]> :i
arch                x86
bits                64
os                  linux
pid                 2218
uid                 1000
objc                false
runtime             V8
java                false
cylang              false
pageSize            4096
pointerSize         8
codeSigningPolicy   optional
isDebuggerAttached  false

メモリ内で特定のキーワードを検索するには、検索コマンド :/ を使用します。

検索結果を JSON 形式で出力するには、前の検索コマンドに (r2 シェルで行うのと同様に) j を追加するだけです。これはほとんどのコマンドで使用できます。

ロードされたライブラリをリストするには、コマンド :il を使用し、コマンド ~ で radare2 内部の grep を使用して結果をフィルタします。たとえば、以下のコマンドは keystoresslcrypto というキーワードにマッチするロードされたライブラリをリストします。

同様に、エクスポートをリストし、特定のキーワードで結果をフィルタするには、以下のようにします。

ブレークポイントをリストまたは設定するには、コマンド db を使用します。これはメモリを解析/変更する際に便利です。

最後に、:. にスクリプト名を加えることで、Frida JavaScript コードを実行できることも覚えておいてください。

Wiki プロジェクトの r2frida の使い方 に多くの例があります。

Last updated

Was this helpful?