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 후킹을 쉽게 구현할 수 있는 표준 라이브러리라고 보면 됩니다.
'소프트웨어 > Security' 카테고리의 다른 글
| 파일 시스템 미니필터 : Windows 파일 I/O 모니터링/필터링, 수정/방지 (0) | 2025.09.30 |
|---|---|
| 프린트 출력 시 이미지 Overlay : StartPage, EndPage API (0) | 2025.09.29 |