
Frida-basiertes .NET Framework-Injektor und Managed-Method-Hooking-Toolkit für Laufzeitverfolgung, native Einstiegspunktauflösung und dynamische Analyse von Windows-Prozessen.
Dieses Repository enthält zwei Projekte, die dazu entwickelt wurden, gemeinsam genutzt zu werden:
Frida.dll)Diese Projekte zielen auf Windows ab und setzen voraus, dass Sie Prozesse instrumentieren, die Ihnen gehören oder für die Sie eine Testberechtigung haben.
Frida hookt native Code-Adressen. Im .NET Framework werden verwaltete Methoden per JIT in nativen Code kompiliert, aber:
Das allgemeine Muster ist daher:
InjectorCli, um einen Zielprozess anzuheften/zu starten und einen Frida JavaScript-Agenten zu laden.ManagedHookHostProj.dll, um:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...) auf, um Aufrufe zu verfolgen/Argumente zu protokollieren/(optional) das Verhalten zu ändern.InjectorCli (C#)
Frida.DeviceManager und wählt ein Gerät ausFrida.Script aus Ihrer JavaScript-Datei und lädt esscript.Message ausAgent (JavaScript)
CreateFileW, MessageBoxW)Module.load() ladenResolveMethod) über NativeFunction aufDescribeObjectUtf16 + FreeUtf16) anstelle der CLR-String-Layout-AnalyseGetLastErrorUtf16 abfragenManagedHookHostProj (C#-Klassenbibliothek mit Exports)
ReadInt32 / WriteInt32 / WriteBool)GetLastErrorUtf16, ClearLastError)Um zu veranschaulichen, wie alles zusammenarbeitet, nehmen wir an, dass der Zielprozess für die 32-Bit (WoW64)-CPU-Architektur kompiliert ist.
frida-clr x86Frida.dll, um sie in einen x86-Zielprozess zu injizieren.cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
Stellen Sie sicher, dass Sie Folgendes haben:
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86)Sie müssen InjectorCli.sln in Visual Studio öffnen und das Build-Ziel auf Release | x86 setzen.
Oder aus einer Entwicklereingabeaufforderung:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll nicht unter dist-x86\bin\Frida.dll befindet, aktualisieren Sie den Verweis in InjectorCli.csproj entsprechend.ManagedHookHostProj (x86)Sie müssen ManagedHookHostProj.sln in Visual Studio öffnen und das Build-Ziel auf Release | x86 setzen.
Oder aus einer Entwicklereingabeaufforderung:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
Hinweis: Unter x86 + StdCall können dekorationierte Exportnamen angezeigt werden (z. B. _ResolveMethod@16). Das bereitgestellte Agent-Skript enthält einen Fallback, der dekorationierte Namen findet.
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
Sie sollten zunächst hook_managed.js bearbeiten, indem Sie Folgendes setzen:
helperDllPath auf die erstellte ManagedHookHostProj.dlltargetAssemblyPath, targetTypeName, targetMethodName, paramSigDann ausführen:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig, um die richtige Überladung auszuwählen, andernfalls hooken Sie möglicherweise die falsche.Frida.dll + x86-Hilfs-DLL.MakeString/Box*/DescribeObject) sollten nur als Kompatibilitätsfunktionen betrachtet werden.Injector-Dokumentation:
Hilfs-DLL-Dokumentation:
Beispiel-Testziel-Dokumentation: