
Boîte à outils d'injection et de hooking de méthodes managées basée sur Frida pour le traçage d'exécution, la résolution de points d'entrée natifs et l'analyse dynamique des processus Windows.
Ce dépôt contient deux projets conçus pour être utilisés ensemble :
Frida.dll)Ces projets ciblent Windows et supposent que vous instrumentez des processus que vous possédez ou pour lesquels vous avez la permission de tester.
Frida accroche les adresses de code natif. Sur .NET Framework, les méthodes managées sont compilées en JIT en code natif, mais :
Ainsi, le schéma général est le suivant :
InjectorCli pour attacher/générer une cible et charger un agent JavaScript Frida.ManagedHookHostProj.dll pour :
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) pour tracer les appels, journaliser les arguments et (éventuellement) modifier le comportement.InjectorCli (C#)
Frida.DeviceManager et sélectionne un périphériqueFrida.Script à partir de votre fichier JavaScript et le chargescript.MessageAgent (JavaScript)
CreateFileW, MessageBoxW)Module.load()ResolveMethod) via NativeFunctionDescribeObjectUtf16 + FreeUtf16) au lieu d'analyser la disposition des chaînes CLRGetLastErrorUtf16 en cas d'échec de résolutionManagedHookHostProj (bibliothèque de classes C# avec exports)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16, ClearLastError)Pour illustrer le fonctionnement de l'ensemble, nous supposerons que le processus cible est compilé pour une architecture CPU 32 bits (WoW64).
frida-clr x86Frida.dll x86 pour injecter dans un processus cible x86.cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
Confirmez que vous avez :
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86)Vous devez ouvrir InjectorCli.sln dans Visual Studio et définir la cible de compilation sur Release | x86.
Ou depuis une invite de commandes développeur :
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll ne se trouve pas dans dist-x86\bin\Frida.dll, mettez à jour la référence dans InjectorCli.csproj en conséquence.ManagedHookHostProj (x86)Vous devez ouvrir ManagedHookHostProj.sln dans Visual Studio et définir la cible de compilation sur Release | x86.
Ou depuis une invite de commandes développeur :
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
Remarque : sur x86 + StdCall, vous pouvez voir des noms d'export décorés (ex. _ResolveMethod@16). Le script d'agent fourni inclut un mécanisme de secours qui localise les noms décorés.
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
Vous devez d'abord modifier hook_managed.js, en définissant :
helperDllPath vers la ManagedHookHostProj.dll compiléetargetAssemblyPath, targetTypeName, targetMethodName, paramSigEnsuite exécutez :
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig pour sélectionner la bonne surcharge, sinon vous risquez d'accrocher la mauvaise.Frida.dll x86 + DLL d'assistance x86.MakeString/Box*/DescribeObject) doivent être traités comme étant uniquement pour la compatibilité.Documentation de l'injecteur :
Documentation de la DLL d'assistance :
Documentation de l'exemple de cible de test :