
Kit de injeção no .NET Framework e hooking de métodos gerenciados baseado em Frida para rastreamento em tempo de execução, resolução de pontos de entrada nativos e análise dinâmica de processos Windows.
Este repositório contém dois projetos que foram projetados para serem usados juntos:
Frida.dll)Estes projetos têm como alvo o Windows e assumem que você está instrumentando processos que possui ou tem permissão para testar.
O Frida faz hook em endereços de código nativo. No .NET Framework, os métodos gerenciados são compilados JIT em código nativo, mas:
Portanto, o padrão geral é:
InjectorCli para anexar/criar um alvo e carregar um agente JavaScript do Frida.ManagedHookHostProj.dll para:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) para rastrear chamadas/registrar argumentos/ (opcionalmente) alterar o comportamento.InjectorCli (C#)
Frida.DeviceManager e seleciona um dispositivoFrida.Script a partir do seu arquivo JavaScript e o carregascript.MessageAgente (JavaScript)
CreateFileW, MessageBoxW)Module.load() a DLL auxiliar gerenciadaResolveMethod) via NativeFunctionDescribeObjectUtf16 + FreeUtf16) em vez de parsing de layout de strings do CLRGetLastErrorUtf16 quando a resolução falhaManagedHookHostProj (biblioteca de classe C# com exports)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16, ClearLastError)Para ilustrar como tudo funciona, assumiremos que o processo alvo foi compilado para a arquitetura de CPU de 32 bits (WoW64).
frida-clr x86Frida.dll x86 para injetar em um processo alvo x86.cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
Confirme que você tem:
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86)Você precisa abrir InjectorCli.sln no Visual Studio e definir o destino de build como Release | x86.
Ou a partir de um Prompt de Comando do Desenvolvedor:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll não estiver em dist-x86\bin\Frida.dll, atualize a referência em InjectorCli.csproj adequadamente.ManagedHookHostProj (x86)Você precisa abrir ManagedHookHostProj.sln no Visual Studio e definir o destino de build como Release | x86.
Ou a partir de um Prompt de Comando do Desenvolvedor:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
Nota: em x86 + StdCall você pode ver nomes de exports decorados (ex.: _ResolveMethod@16). O script do agente fornecido inclui um fallback que localiza nomes decorados.
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
Você deve primeiro editar hook_managed.js, definindo:
helperDllPath para o caminho do ManagedHookHostProj.dll compiladotargetAssemblyPath, targetTypeName, targetMethodName, paramSigEm seguida, execute:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig para selecionar a sobrecarga correta, caso contrário, você pode fazer hook na errada.Frida.dll x86 + DLL helper x86.MakeString/Box*/DescribeObject) devem ser tratados apenas para compatibilidade.Documentação do injetor:
Documentação da DLL helper:
Documentação do exemplo de alvo de teste: