MinHook는 Windows 환경에서 API 후킹을 쉽게 구현할 수 있게 해주는 경량 C/C++ 라이브러리입니다. 주로 디버깅, 게임 모드, 보안 솔루션 개발 등에서 사용됩니다. 핵심 포인트를 정리하면:

 

https://github.com/TsudaKageyu/minhook

 

GitHub - TsudaKageyu/minhook: The Minimalistic x86/x64 API Hooking Library for Windows

The Minimalistic x86/x64 API Hooking Library for Windows - TsudaKageyu/minhook

github.com

1. 기능

  • API 후킹: 사용자 정의 함수로 Win32 API 또는 내부 함수(NTDLL 등)를 가로챌 수 있음.
  • Inline Hooking: 함수 시작 부분에 JMP를 삽입하여 호출을 가로채는 방식.
  • 32/64비트 지원: x86, x64 모두 지원.
  • 간단한 초기화: MH_Initialize(), MH_CreateHook(), MH_EnableHook() 순으로 사용.

2. 기본 사용 예시 (C++)

#include <windows.h>
#include "MinHook.h"

// 후킹할 원래 함수 포인터
typedef int(WINAPI* MessageBoxW_t)(HWND, LPCWSTR, LPCWSTR, UINT);
MessageBoxW_t fpMessageBoxW = nullptr;

// 후킹 함수
int WINAPI HookedMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
    return fpMessageBoxW(hWnd, L"Hooked!", lpCaption, uType);
}

int main()
{
    MH_Initialize();
    MH_CreateHook(&MessageBoxW, &HookedMessageBoxW, reinterpret_cast<LPVOID*>(&fpMessageBoxW));
    MH_EnableHook(&MessageBoxW);

    MessageBoxW(NULL, L"Original", L"Test", MB_OK);  // "Hooked!"로 바뀜

    MH_DisableHook(&MessageBoxW);
    MH_Uninitialize();
    return 0;
}

3. 장점

  • 가볍고 빠름: 자체 종속성 거의 없음.
  • 안정적: Windows 내부 API 후킹에 최적화.
  • 광범위 사용: 게임, 디버깅, 보안 솔루션 등에서 상용 사용 사례 있음.

4. 단점 / 주의점

  • 커널 모드에서는 사용 불가(사용하려면 별도 드라이버 필요).
  • Anti-Cheat나 보안 솔루션에 걸릴 수 있음.
  • 후킹 실패 시 프로세스 크래시 가능.

즉, 사용자 모드에서 Win32/Nt API 후킹을 쉽게 구현할 수 있는 표준 라이브러리라고 보면 됩니다.

+ Recent posts