
Toolkit basato su Frida per iniezione in .NET Framework e hooking di metodi gestiti, per tracciamento runtime, risoluzione di punti di ingresso nativi e analisi dinamica di processi Windows.
Questo repository contiene due progetti progettati per essere utilizzati insieme:
Frida.dll)Questi progetti hanno come target Windows e presuppongono che tu stia instrumentando processi di tua proprietà o per i quali hai il permesso di testare.
Frida esegue l'hook di indirizzi di codice nativo. In .NET Framework, i metodi gestiti vengono compilati JIT in codice nativo, ma:
Quindi il pattern generale è:
InjectorCli per collegarti/avviare un target e caricare un agente JavaScript di Frida.ManagedHookHostProj.dll per:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) per tracciare le chiamate/loggare gli argomenti/(opzionalmente) alterare il comportamento.InjectorCli (C#)
Frida.DeviceManager e seleziona un dispositivoFrida.Script dal tuo file JavaScript e lo caricascript.MessageAgente (JavaScript)
CreateFileW, MessageBoxW)Module.load() la DLL helper gestitaResolveMethod) tramite NativeFunctionDescribeObjectUtf16 + FreeUtf16) invece di analizzare il layout delle stringhe CLRGetLastErrorUtf16 quando la risoluzione fallisceManagedHookHostProj (libreria di classi C# con esportazioni)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16, ClearLastError)Per illustrare come tutto funziona, supponiamo che il processo target sia compilato per l'architettura 32-bit (WoW64).
frida-clr x86Frida.dll x86 per iniettarla in un processo target x86.cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
Conferma di avere:
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86)Devi aprire InjectorCli.sln in Visual Studio e impostare il target di compilazione su Release | x86.
Oppure da un prompt dei comandi Developer:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll non si trova in dist-x86\bin\Frida.dll, aggiorna il riferimento in InjectorCli.csproj di conseguenza.ManagedHookHostProj (x86)Devi aprire ManagedHookHostProj.sln in Visual Studio e impostare il target di compilazione su Release | x86.
Oppure da un prompt dei comandi Developer:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
Nota: su x86 + StdCall potresti vedere nomi di esportazione decorati (es. _ResolveMethod@16). Lo script agente fornito include un fallback che individua i nomi decorati.
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
Devi prima modificare hook_managed.js, impostando:
helperDllPath sul percorso della ManagedHookHostProj.dll compilatatargetAssemblyPath, targetTypeName, targetMethodName, paramSigQuindi esegui:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig per selezionare l'overload corretto, altrimenti potresti eseguire l'hook su quello sbagliato.Frida.dll x86 + DLL helper x86.MakeString/Box*/DescribeObject) dovrebbero essere trattate solo per compatibilità.Documentazione Injector:
Documentazione DLL helper:
Documentazione Test Target di esempio: