
Frida 기반 .NET Framework 인젝터 및 관리형 메서드 후킹 도구 키트로, 런타임 추적, 네이티브 진입점 해석, Windows 프로세스의 동적 분석을 위한 도구입니다.
이 저장소는 함께 사용하도록 설계된 두 개의 프로젝트를 포함합니다:
Frida.dll) 위에 구축됨이러한 프로젝트는 Windows를 대상으로 하며, 사용자가 소유하거나 테스트 권한이 있는 프로세스를 계측한다고 가정합니다.
Frida는 네이티브 코드 주소를 후킹합니다. .NET Framework에서 관리형 메서드는 JIT 컴파일되어 네이티브 코드로 변환되지만, 다음과 같은 문제가 있습니다:
따라서 전체적인 패턴은 다음과 같습니다:
InjectorCli를 사용하여 대상에 연결/생성하고 Frida JavaScript 에이전트를 로드합니다.ManagedHookHostProj.dll을 사용하여 다음을 수행합니다:
RuntimeHelpers.PrepareMethod)GetFunctionPointer)Interceptor.attach(entrypoint, ...)를 호출하여 호출 추적/인수 로깅/(선택 사항) 동작 변경을 수행합니다.InjectorCli (C#)
Frida.DeviceManager를 생성하고 장치를 선택Frida.Script를 생성하고 로드script.Message를 통해 에이전트의 메시지를 출력에이전트 (JavaScript)
CreateFileW, MessageBoxW)Module.load()를 통해 관리형 헬퍼 DLL을 로드NativeFunction을 통해 익스포트된 헬퍼 (예: ResolveMethod)를 호출DescribeObjectUtf16 + FreeUtf16)를 사용하여 CLR 문자열 레이아웃 파싱 대체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)Visual Studio에서 InjectorCli.sln을 열고 빌드 대상을 Release | x86으로 설정합니다.
또는 Developer Command Prompt에서:
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
Frida.dll이 dist-x86\bin\Frida.dll에 없는 경우 InjectorCli.csproj의 참조를 적절히 업데이트합니다.ManagedHookHostProj 빌드 (x86)Visual Studio에서 ManagedHookHostProj.sln을 열고 빌드 대상을 Release | x86으로 설정합니다.
또는 Developer Command Prompt에서:
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 문서:
예제 테스트 대상 문서: