
Fridaベースの.NET Frameworkインジェクターおよびマネージドメソッドフッキングツールキット。ランタイムトレース、ネイティブエントリポイント解決、Windowsプロセスの動的解析用。
このリポジトリには、一緒に使用するために設計された2つのプロジェクトが含まれています:
Frida.dll) 上に構築されていますこれらのプロジェクトはWindowsを対象としており、自分が所有しているかテストの許可を得ているプロセスをインストルメントすることを前提としています。
Fridaはネイティブコードアドレスをフックします。.NET Frameworkでは、マネージドメソッドはJITコンパイルされてネイティブコードになりますが:
したがって、全体的なパターンは次のとおりです:
InjectorCli を使用してターゲットにアタッチ/スポーンし、Frida JavaScriptエージェントをロードします。ManagedHookHostProj.dll を使用して:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) を呼び出して呼び出しをトレース/引数をログ/(オプションで)動作を変更します。InjectorCli (C#)
Frida.DeviceManager を作成し、デバイスを選択しますFrida.Script を作成し、ロードしますscript.Message を介してエージェントからのメッセージを表示しますAgent (JavaScript)
CreateFileW、MessageBoxW)Module.load() でマネージドヘルパーDLLをロードできますNativeFunction を介してエクスポートされたヘルパー(例: ResolveMethod)を呼び出しますDescribeObjectUtf16 + FreeUtf16)を使用しますGetLastErrorUtf16 を使用してヘルパーの診断情報を問い合わせることができますManagedHookHostProj (エクスポート付きC#クラスライブラリ)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16、ClearLastError)これらすべての動作を説明するために、ターゲットプロセスが 32ビット (WoW64) CPUアーキテクチャ向けにコンパイルされていると仮定します。
frida-clr x86 のビルドFrida.dll が必要です。cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
以下が存在することを確認してください:
dist-x86\bin\Frida.dll (PE32)InjectorCli をビルドする (x86)Visual Studio で InjectorCli.sln を開き、ビルドターゲットを Release | x86 に設定する必要があります。
または Developer Command Prompt から:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll が dist-x86\bin\Frida.dll にない場合は、InjectorCli.csproj 内の参照を適宜更新してください。ManagedHookHostProj をビルドする (x86)Visual Studio で ManagedHookHostProj.sln を開き、ビルドターゲットを Release | x86 に設定する必要があります。
または Developer Command Prompt から:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
注: x86 + StdCall では装飾されたエクスポート名(例: _ResolveMethod@16)が表示される場合があります。提供されているエージェントスクリプトには、装飾された名前を見つけるフォールバックが含まれています。
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
最初に hook_managed.js を編集し、次の項目を設定する必要があります:
helperDllPath をビルドした ManagedHookHostProj.dlltargetAssemblyPath、targetTypeName、targetMethodName、paramSig次に実行:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig を使用して正しいオーバーロードを選択してください。そうしないと、間違ったメソッドをフックする可能性があります。Frida.dll + x86ヘルパーDLLが必要です。MakeString/Box*/DescribeObject)は互換性のみを目的として扱うべきです。Injector ドキュメント:
Helper DLL ドキュメント:
テストターゲットの例 ドキュメント: