frida-workflow について
Fridaによる計装を計画・実行するためのオーケストレーションスキルです。許可確認、環境の把握、アタッチまたはスポーンの選択、フック検証を扱い、作業を目的別のFridaスキルに振り分けます。
主な機能
- 01許可と対象範囲の確認
- 02Frida環境の把握
- 03アタッチ・スポーン・Gadgetの選択
- 04最小限のフックと動作検証
- 05目的別Fridaスキルへの振り分け
活用シーン
- 01計装セッションの計画
- 02対象に応じたFridaモードの選択
- 03フック検証と再現可能な実行記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rudra-ravi/ frida-skills --skill frida-workflowインストール後、Claude Code で/frida-workflowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/frida-sources.mdscripts/frida-env-check.sh詳細
Frida ワークフロー
Frida のインストルメンテーションを記述または実行する前に、オーケストレーションスキルとして使用してください。
運用ルール
- サードパーティ製ソフトウェアにインストルメンテーションを行う前に、許可と対象範囲を確認してください。
- 動作がバージョン、デバイスモード、Java ブリッジ、Gadget、CLI フラグに依存する場合は、最新の Frida ドキュメントを調べてください。
- Frida クライアント、サーバー、Gadget、OS、アーキテクチャ、パッケージ/バンドル/プロセス ID、アタッチ/スポーンモードを正確に記録してください。
- まず観察用フックから始め、対象と呼び出し形式が確認できてから変更に移ってください。
- フックは小さく、元に戻せるものにし、ログを残してください。広範なバイパススクリプトより、対象を絞ったクラス/関数フックを優先してください。
スキルの使い分け
- ホスト、デバイス、バージョン、またはトランスポートの状態が不明な場合は、フック作業の前に
frida-setup-checklistを使用してください。 frida、frida-ps、frida-ls-devices、frida-trace、frida-discover、frida-kill、frida-createのどれを使うか選ぶ際は、frida-tools-referenceを使用してください。- クラス、シンボル、モジュール、メソッド、または呼び出し経路が不明な場合は、
frida-tracing-discoveryを使用してください。 - TypeScript エージェント、再利用可能なスクリプトプロジェクト、RPC エクスポート、パッケージ化、複数スクリプトの構成には、
frida-agent-builderを使用してください。 Interceptor、NativeFunction、メモリスキャン、エクスポート、インポート、シンボル、CModule、ホットなネイティブ処理経路には、frida-native-hooksを使用してください。Java.perform、クラスローダー、オーバーロード、JNI、Android のピンニング分析、APK を使ったワークフローには、frida-android-hooksを使用してください。ObjC、Swift/Objective-C メソッド、モジュール、iOS のピンニング分析、rootless 脱獄の制約には、frida-ios-hooksを使用してください。- Java、ObjC、Flutter、React Native、BoringSSL/OpenSSL、Conscrypt、OkHttp、SecTrust の各経路における TLS/SSL ピンニングの分析とバイパス作業には、
frida-tls-pinningを使用してください。 - Anti-Frida、root/脱獄、エミュレーター、デバッガー、ptrace、ポートスキャン、スレッド名、整合性チェックには、
frida-anti-instrumentationを使用してください。 - HTTP、ヘッダー、トークン、JSON、暗号処理の入出力、設定、ファイル、SQLite、メモリバッファーなど、実行時データの観察が目的の場合は、
frida-data-extractionを使用してください。 - CodeShare の検索、スクリプトの抽出、ソースの確認、公開スニペットのローカルエージェントまたは
--codeshareコマンドへの変換には、frida-codeshare-searchを使用してください。 - 公開スクリプト、生成スクリプト、広範なスクリプト、ネイティブポインターを多用するスクリプト、または変更を多用するスクリプトを実行する前に、
frida-script-reviewを使用してください。 - アタッチ/スポーンに失敗する、フックが発火しない、対象がクラッシュする、
ObjC/Javaを利用できない、またはバージョンが一致しない場合は、frida-troubleshootingを使用してください。
ワークフロー
- 目的を定義する:観察または変更する動作、期待する証拠、ロールバック条件を明記してください。
- 環境を把握する:
frida --version frida-ps -Uai frida-ls-devices - モードを選択する:
- アプリの初期化時にフックする場合は、スポーンを使用してください。
- すでに実行中のプロセスには、アタッチを使用してください。
- アタッチがブロックされている場合、root/脱獄の方法がない場合、またはアプリ内部からインストルメンテーションを読み込む必要がある場合は、Gadget を使用してください。
- フックの前に調査する:
- ネイティブ:モジュール、エクスポート、インポート、シンボル、読み取り可能な文字列を列挙します。
- Android:読み込まれたクラス/メソッドを列挙し、正しいクラスローダーを確認します。
- iOS:
ObjC.availableを確認し、クラス/モジュールを列挙して、必要に応じて Swift シンボルを解決します。
- フックを最小限にする:エントリー、引数、戻り値、必要に応じてスレッド/バックトレースを記録し、その後対象を絞り込みます。
- 検証する:対象の動作でフックが発火すること、クラッシュしないこと、期待どおりのログが出ることを確認します。使用したコマンドとスクリプトのバージョンを保存してください。
実践者向けプレイブック
- Frida CodeShare と公開スニペットを、偵察とパターンのライブラリとして活用します。実行する前にスクリプトを読み、アプリの実際のフレームワーク/バージョンに合致するフックだけをコピーします。
- フックを段階的に追加します。まず高レベル API から始め、スタックトレース/呼び出し元をログに記録し、証拠が示す場合にのみ、フレームワーク、JNI/ネイティブ、暗号、TLS、システムコールの境界へと掘り下げます。
- 対象の経路が判明したら、「万能バイパス」バンドルより、対象を絞ったスクリプトを優先します。幅広いバンドルは、可能性のある対象箇所の発見には役立ちますが、どのフックが実際に効果を発揮したのかが分かりにくくなります。
- 難読化されたアプリでは、名前ではなくデータを追います。URL、ヘッダー、バイト配列、暗号処理の入力/出力、ファイルパス、リフレクション呼び出し、動的な DEX の読み込み、ネイティブライブラリの読み込みを追跡します。
- すべての実験を再現可能な状態に保ちます。正確なコマンド、対象のバージョン、デバイス、Frida のバージョン、スクリプトのハッシュまたはファイル名、確認できた動作上の証拠を記録します。
- 対象にインストルメンテーション対策がある場合、まず検出の原因が root/脱獄、Frida の痕跡、デバッガー/ptrace、エミュレーター/デバイスの識別情報、パッケージの整合性、タイミングのどれなのかを確認します。
Frida に関する最新の注意事項
- Frida 17 では Java ランタイムブリッジが GumJS から分離されました。TypeScript/コンパイル済みエージェントで Java API をバンドルする場合、npm 依存関係として
frida-java-bridgeが必要になることがあります。 - Frida ツールとリモートの
frida-server/Gadget のバージョンを揃えます。バージョンの不一致は、アタッチやプロトコルの失敗のよくある原因です。 Interceptor.onLeave()のretvalは再利用されるため、後で使うために保存しないでください。コールバック内で値を変換またはコピーします。Memory.allocUtf8String()/UTF-16 ヘルパーで割り当てた文字列は、対象が使用する可能性がある間は存続させてください。
参考資料
最新のドキュメント、バージョン確認、出典の明記が必要な場合は、references/frida-sources.md を参照してください。
コメント
Markdown 対応