
Kit de herramientas de inyección para .NET Framework basado en Frida y hooking de métodos administrados para rastreo en tiempo de ejecución, resolución de puntos de entrada nativos y análisis dinámico de procesos de Windows.
Este repositorio contiene dos proyectos diseñados para ser usados juntos:
Frida.dll)Estos proyectos están dirigidos a Windows y asumen que estás instrumentando procesos que posees o tienes permiso para probar.
Frida engancha direcciones de código nativo. En .NET Framework, los métodos administrados se compilan JIT a código nativo, pero:
Por lo tanto, el patrón general es:
InjectorCli para adjuntar/crear un objetivo y cargar un agente JavaScript de Frida.ManagedHookHostProj.dll para:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) para rastrear llamadas/registrar argumentos/(opcionalmente) alterar el comportamiento.InjectorCli (C#)
Frida.DeviceManager y selecciona un dispositivoFrida.Script a partir de tu archivo JavaScript y lo cargascript.MessageAgente (JavaScript)
CreateFileW, MessageBoxW)Module.load() el DLL auxiliar administradoResolveMethod) a través de NativeFunctionDescribeObjectUtf16 + FreeUtf16) en lugar del análisis de diseño de cadenas CLRGetLastErrorUtf16 cuando la resolución fallaManagedHookHostProj (biblioteca de clases C# con exportaciones)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16, ClearLastError)Para ilustrar cómo funcionan todos estos, asumiremos que el proceso objetivo está compilado para la arquitectura de CPU de 32 bits (WoW64).
frida-clr x86Frida.dll x86 para inyectar en un proceso objetivo x86.cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
Confirma que tienes:
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86)Necesitas abrir InjectorCli.sln en Visual Studio y establecer el destino de compilación en Release | x86.
O desde un Símbolo del sistema para desarrolladores:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll no está en dist-x86\bin\Frida.dll, actualiza la referencia en InjectorCli.csproj en consecuencia.ManagedHookHostProj (x86)Necesitas abrir ManagedHookHostProj.sln en Visual Studio y establecer el destino de compilación en Release | x86.
O desde un Símbolo del sistema para desarrolladores:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
Nota: en x86 + StdCall puedes ver nombres de exportación decorados (ej. _ResolveMethod@16). El script del agente proporcionado incluye un mecanismo de respaldo que localiza nombres decorados.
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
Primero debes editar hook_managed.js, estableciendo:
helperDllPath a la ubicación del ManagedHookHostProj.dll compiladotargetAssemblyPath, targetTypeName, targetMethodName, paramSigLuego ejecuta:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig para seleccionar la sobrecarga correcta, de lo contrario podrías enganchar la incorrecta.Frida.dll x86 + DLL auxiliar x86.MakeString/Box*/DescribeObject) deben tratarse solo como compatibilidad.Documentación del inyector:
Documentación del DLL auxiliar:
Documentación del ejemplo Test Target: