
Frida-आधारित .NET Framework injector और managed method hooking toolkit runtime tracing, native entrypoint resolution, और Windows processes के dynamic analysis के लिए।
इस रिपॉजिटरी में दो प्रोजेक्ट शामिल हैं जिन्हें एक साथ उपयोग करने के लिए डिज़ाइन किया गया है:
Frida.dll) पर बनाया गया है।ये प्रोजेक्ट विंडोज को लक्षित करते हैं और मानते हैं कि आप उन प्रक्रियाओं को इंस्ट्रूमेंट कर रहे हैं जिनके मालिक हैं या जिनका परीक्षण करने की अनुमति है।
Frida मूल कोड पतों को हुक करता है। .NET Framework पर, प्रबंधित विधियाँ JIT-संकलित होकर मूल कोड में बदल जाती हैं, लेकिन:
इसलिए समग्र पैटर्न इस प्रकार है:
InjectorCli का उपयोग करके किसी लक्ष्य को संलग्न/स्पॉन करें और Frida JavaScript एजेंट लोड करें।ManagedHookHostProj.dll का उपयोग करके:
Interceptor.attach(entrypoint, ...) को कॉल करें ताकि कॉल को ट्रेस कर सकें/आर्ग लॉग कर सकें/(वैकल्पिक रूप से) व्यवहार बदल सकें।InjectorCli (C#)
Frida.DeviceManager बनाता है और एक डिवाइस चुनता है।Frida.Script बनाता है और लोड करता है।script.Message के माध्यम से एजेंट से संदेश प्रिंट करता है।एजेंट (JavaScript)
CreateFileW, MessageBoxW) को हुक कर सकता है।Module.load() कर सकता है।NativeFunction के माध्यम से निर्यातित सहायकों (जैसे ResolveMethod) को कॉल करता है।DescribeObjectUtf16 + FreeUtf16) का उपयोग करता है।GetLastErrorUtf16 का उपयोग करके हेल्पर डायग्नोस्टिक्स पूछ सकता है।ManagedHookHostProj (निर्यात के साथ C# क्लास लाइब्रेरी)
ReadInt32 / WriteInt32 / WriteBool)।GetLastErrorUtf16, ClearLastError) को उजागर करता है।यह बताने के लिए कि ये सभी कैसे काम करते हैं, हम मान लेंगे कि लक्ष्य प्रक्रिया 32-बिट (WoW64) CPU आर्किटेक्चर के लिए संकलित है।
frida-clr x86 बनानाFrida.dll चाहिए।cd C:\path\to\frida-clr
configure.bat --prefix="%CD%\dist-x86" --build=windows-x86-md
cd build
make.bat
make.bat install
पुष्टि करें कि आपके पास:
dist-x86\bin\Frida.dll (PE32)InjectorCli (x86) बनानाआपको विजुअल स्टूडियो में InjectorCli.sln खोलना होगा, और बिल्ड लक्ष्य को Release | x86 पर सेट करना होगा।
या डेवलपर कमांड प्रॉम्प्ट से:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll dist-x86\bin\Frida.dll पर नहीं है, तो InjectorCli.csproj में संदर्भ को तदनुसार अपडेट करें।ManagedHookHostProj (x86) बनानाआपको विजुअल स्टूडियो में ManagedHookHostProj.sln खोलना होगा, और बिल्ड लक्ष्य को Release | x86 पर सेट करना होगा।
या डेवलपर कमांड प्रॉम्प्ट से:
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll
नोट: x86 + StdCall पर आप सजावटी निर्यात नाम देख सकते हैं (जैसे _ResolveMethod@16)। दिए गए एजेंट स्क्रिप्ट में एक फॉलबैक शामिल है जो सजावटी नामों का पता लगाता है।
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js
आपको पहले hook_managed.js को संपादित करना चाहिए, और सेट करना चाहिए:
helperDllPath को बिल्ट ManagedHookHostProj.dll पर।targetAssemblyPath, targetTypeName, targetMethodName, paramSig.फिर चलाएँ:
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"
paramSig का उपयोग करें, अन्यथा आप गलत को हुक कर सकते हैं।Frida.dll + x86 हेल्पर DLL आवश्यक है।MakeString/Box*/DescribeObject) को केवल संगतता-मात्र माना जाना चाहिए।इंजेक्टर दस्तावेज़:
हेल्पर DLL दस्तावेज़:
उदाहरण परीक्षण लक्ष्य दस्तावेज़: