Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DotNetHookerToolkit — Frida 기반 .NET Framework 인젝터 및 관리형 메서드 후킹 도구 키트로, 런타임 추적, 네이티브 진입점 해석, Windows 프로세스의 동적 분석을 위한 도구입니다. | Kitploit
도구/GitHubGitHub/sensepost/dotnethookertoolkit
Dynamic Analysis (Sandboxing)Code AnalysisExploitationReverse EngineeringDebuggersPenetration TestingBinary Analysis
GitHubsensepost/dotnethookertoolkit

DotNetHookerToolkit

Frida 기반 .NET Framework 인젝터 및 관리형 메서드 후킹 도구 키트로, 런타임 추적, 네이티브 진입점 해석, Windows 프로세스의 동적 분석을 위한 도구입니다.

저장소 보기
115개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

InjectorCli + ManagedHookHostProj

이 저장소는 함께 사용하도록 설계된 두 개의 프로젝트를 포함합니다:

  • InjectorCli: .NET Framework 4.8 기반의 콘솔 인젝터로, frida-clr (Frida.dll) 위에 구축됨
  • ManagedHookHostProj: .NET Framework 4.8 기반의 헬퍼 DLL로, 네이티브 익스포트 ( 3F .NET DllExport 사용)를 통해 관리형 메서드를 네이티브 진입점으로 변환하여 Frida가 연결할 수 있도록 함
  • TestTarget32: 후킹을 테스트하기 위한 예제 .NET Framework 4.8 프로그램

이러한 프로젝트는 Windows를 대상으로 하며, 사용자가 소유하거나 테스트 권한이 있는 프로세스를 계측한다고 가정합니다.

두 프로젝트가 필요한 이유

Frida는 네이티브 코드 주소를 후킹합니다. .NET Framework에서 관리형 메서드는 JIT 컴파일되어 네이티브 코드로 변환되지만, 다음과 같은 문제가 있습니다:

  • Frida는 .NET Framework에 대해 안정적인 “관리형 메서드 이름으로 후킹” API를 제공하지 않음
  • JIT가 메서드를 컴파일하기 전까지 메서드 주소를 알 수 없음

따라서 전체적인 패턴은 다음과 같습니다:

  1. InjectorCli를 사용하여 대상에 연결/생성하고 Frida JavaScript 에이전트를 로드합니다.
  2. 대상 내부에서 ManagedHookHostProj.dll을 사용하여 다음을 수행합니다:
    • 리플렉션으로 관리형 메서드 찾기
    • 강제로 JIT 컴파일 (RuntimeHelpers.PrepareMethod)
    • 메서드의 네이티브 진입점 반환 (GetFunctionPointer)
  3. 에이전트로 돌아와 Interceptor.attach(entrypoint, ...)를 호출하여 호출 추적/인수 로깅/(선택 사항) 동작 변경을 수행합니다.

함께 작동하는 방식 (데이터 흐름)

InjectorCli (C#)

  • Frida.DeviceManager를 생성하고 장치를 선택
  • 프로세스를 생성(spawn)하거나 연결(attach)
  • JavaScript 파일에서 Frida.Script를 생성하고 로드
  • script.Message를 통해 에이전트의 메시지를 출력

에이전트 (JavaScript)

  • 일반적인 Win32 API를 직접 후킹 가능 (예: CreateFileW, MessageBoxW)
  • 선택적으로 Module.load()를 통해 관리형 헬퍼 DLL을 로드
  • NativeFunction을 통해 익스포트된 헬퍼 (예: ResolveMethod)를 호출
  • 관리형 UTF-16 버퍼 (DescribeObjectUtf16 + FreeUtf16)를 사용하여 CLR 문자열 레이아웃 파싱 대체
  • 해결 실패 시 GetLastErrorUtf16을 사용하여 헬퍼 진단 정보 쿼리 가능
  • 반환된 주소를 사용하여 후크 연결

ManagedHookHostProj (익스포트가 있는 C# 클래스 라이브러리)

  • 대상의 CLR 내부에서 실행
  • 리플렉션을 사용하여 원하는 메서드를 이름으로 찾음 (+ 선택적 오버로드 시그니처)
  • 강제 JIT 컴파일 후 네이티브 진입점 주소 반환
  • 참조 전달 값(ReadInt32 / WriteInt32 / WriteBool)을 위한 안전한 기본형 읽기/쓰기 익스포트 제공
  • 스레드-로컬 헬퍼 진단 정보 제공 (GetLastErrorUtf16, ClearLastError)

빠른 시작 (32비트 대상)

모든 것이 어떻게 작동하는지 설명하기 위해, 대상 프로세스가 32비트 (WoW64) CPU 아키텍처를 대상으로 컴파일되었다고 가정합니다.

1) frida-clr x86 빌드

  • x86 대상 프로세스에 인젝션하려면 x86 Frida.dll이 필요합니다.
  • 예시 명령어 (Visual Studio Developer Command Prompt에서):
root@kitploit:~
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)

2) InjectorCli 빌드 (x86)

  • Visual Studio에서 InjectorCli.sln을 열고 빌드 대상을 Release | x86으로 설정합니다.

  • 또는 Developer Command Prompt에서:

root@kitploit:~
msbuild \InjectorCli\InjectorCli.sln /p:Configuration=Release /p:Platform=x86
  • Frida.dll이 dist-x86\bin\Frida.dll에 없는 경우 InjectorCli.csproj의 참조를 적절히 업데이트합니다.

3) (선택 사항) ManagedHookHostProj 빌드 (x86)

  • Visual Studio에서 ManagedHookHostProj.sln을 열고 빌드 대상을 Release | x86으로 설정합니다.

  • 또는 Developer Command Prompt에서:

root@kitploit:~
msbuild \ManagedHookHostProj\ManagedHookHostProj.sln /p:Configuration=Release /p:Platform=x86
  • 그런 다음 Developer Command Prompt에서 다음 명령을 실행하여 익스포트를 확인할 수 있습니다:
root@kitploit:~
dumpbin /exports examples\ManagedHookHostProj\bin\Release\ManagedHookHostProj.dll

참고: x86 + StdCall의 경우 데코레이션된 익스포트 이름(예: _ResolveMethod@16)이 보일 수 있습니다. 제공된 에이전트 스크립트에는 데코레이션된 이름을 찾는 폴백이 포함되어 있습니다.

4) 실행: 네이티브 트레이싱 (관리형 헬퍼 불필요)

  • 기존 PID에 연결:
root@kitploit:~
FridaClrInjector.exe --pid 1234 --script hooks\hook_createfilew.js
  • 일시 중단된 상태로 생성, 인젝션, 재개:
root@kitploit:~
FridaClrInjector.exe --spawn "C:\Windows\SysWOW64\notepad.exe" --script hooks\hook_messagebox.js

5) 실행: 관리형 메서드 해석 + 트레이싱 (헬퍼 DLL 사용)

  • 먼저 hook_managed.js를 편집하여 다음을 설정합니다:

    • helperDllPath를 빌드된 ManagedHookHostProj.dll의 경로로
    • targetAssemblyPath, targetTypeName, targetMethodName, paramSig
  • 그런 다음 실행:

root@kitploit:~
FridaClrInjector.exe --pid 1234 --script "C:\path\to\hook_managed.js"

제한 사항

  • 인라이닝: 작은 메서드는 Release 빌드에서 인라인될 수 있으며, 후크가 트리거되지 않습니다.
  • 오버로드: paramSig를 사용하여 올바른 오버로드를 선택하지 않으면 잘못된 메서드를 후킹할 수 있습니다.
  • 비트 일치 필요: x86 대상에는 x86 인젝터 + x86 Frida.dll + x86 헬퍼 DLL이 필요합니다.
  • 원시 관리형 참조는 취약함: 레거시 헬퍼 익스포트(MakeString/Box*/DescribeObject)는 호환성 전용으로 취급해야 합니다.

추가 문서

  • 인젝터 문서:

    • Injector README
    • 작동 원리
    • 문제 해결
  • 헬퍼 DLL 문서:

    • Helper DLL README
    • 작동 원리
    • 문제 해결
  • 예제 테스트 대상 문서:

    • TestTarget32 README
    • 테스트 케이스 실행
도구 다운로드