¿

Ű ŷ ¥:2022-2-28 3:58:37 ȸ:725
ۼ : daypark
Ʈ : 1200
: 2020-02-14 10:42:05
湮Ƚ : 253
177, 29
Ұ : ڱҰ ԷϽʽÿ.
ۼ

ý Ű ޽ ä Ű ŷ ΰ ִ. ޽ ٸ ̷ Ư Ȱó ٸ.

- ν ޽ ȣǴ ݸ ν Ű ޽ ť ȣȴ. 
- Ÿ ޽ 鿩 ϹǷ Ÿ μ ּ ؾ ý ޽ ť ޽ Ƿ ׷ ʿ䰡 . DLL Ÿ μ Ե ؽƮ Ī ߻Ѵ.
- Ģ Ÿ ϴ. DLL и ʴ ŷ ִ.
- keybd_event ߻Ų ̺Ʈ Űκ ߻ ̺Ʈ ÷ LLKHF_INJECTED Ʈ Ͽ ޽ ִ.
-wParam, lParam ޵Ǵ ٸ. wParam ޽ lParam Ű, ĵ ڵ, ÷, ð, ü ´.

͸ ϸ ޽ ü ϴ ȵȴ. ׷ ޽ ƿ Ծ ο ޽ о ִ ִ. 
ŷ ڷᰡ Ƿ ⼭ ŷ ˾ . 鿩 ޽ ״ ִٴ ưų ʴ. ŷ ׽Ʈ ̴. 

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
HWND hWndMain;
LPCTSTR lpszClass = TEXT("KeyHookLL");

int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance
    , _In_ LPSTR lpszCmdParam, _In_ int nCmdShow)
{
    HWND hWnd;
    MSG Message;
    WNDCLASS WndClass;
    g_hInst = hInstance;

    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    WndClass.hInstance = hInstance;
    WndClass.lpfnWndProc = WndProc;
    WndClass.lpszClassName = lpszClass;
    WndClass.lpszMenuName = NULL;
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&WndClass);

    hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, (HMENU)NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);
    hWndMain = hWnd;

    while (GetMessage(&Message, NULL, 0, 0)) {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
    }
    return (int)Message.wParam;
}

HHOOK hKeyHookLL = NULL;
TCHAR MesName[111];
TCHAR log[256];
TCHAR output[65000];
LRESULT CALLBACK KeyHookProcLL(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode >= 0) {
        KBDLLHOOKSTRUCT* kb = (KBDLLHOOKSTRUCT*)lParam;
        if (wParam == WM_KEYDOWN) lstrcpy(MesName, "Down");
        if (wParam == WM_KEYUP) lstrcpy(MesName, "Up");
        if (wParam == WM_SYSKEYDOWN) lstrcpy(MesName, "SysDown");
        if (wParam == WM_SYSKEYUP) lstrcpy(MesName, "SysUp");
        if ((kb->flags & LLKHF_INJECTED) != 0) lstrcat(MesName, "(Injected)");

        wsprintf(log, "%s - vk = %x(%c), scan = %x, flag=%x, time = %d\r\n", 
            MesName, kb->vkCode, kb->vkCode, kb->scanCode, kb->flags, kb->time);
        lstrcat(output, log);

        // ESC ޽ Ѵ.
        if (wParam == WM_KEYDOWN && kb->vkCode == VK_ESCAPE) {
            lstrcpy(output, "");
        }
        InvalidateRect(hWndMain, NULL, TRUE);

        // 0 ƴ Ͽ Ư Ű Է Ѵ. 
        if (kb->vkCode == '1') {
            return 1;
        }

        // ٸ Ű ٲٴ ȵȴ. 
        if (kb->vkCode == '2') {
            kb->vkCode = '3';
        }

        // Ű Է ϰ ο Ű Է ߻ ִ. 
        if (kb->vkCode == '4') {
            keybd_event('5', 0, wParam == WM_KEYDOWN ? 0: KEYEVENTF_KEYUP, 0);
            return 1;
        }
    }
    return CallNextHookEx(hKeyHookLL, nCode, wParam, lParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT crt;

    switch (iMessage) {
    case WM_CREATE:
        hKeyHookLL = SetWindowsHookEx(WH_KEYBOARD_LL, KeyHookProcLL, g_hInst, NULL);
        return 0;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &crt);
        DrawText(hdc, output, -1, &crt, 0);
        EndPaint(hWnd, &ps);
        return 0;
    case WM_DESTROY:
        if (hKeyHookLL != NULL) UnhookWindowsHookEx(hKeyHookLL);
        PostQuitMessage(0);
        return 0;
    }
    return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}

ġ ٸ Ű Ÿ WH_KEYBOARD_LL Ѵ. DLL ġ ʿ Ƿ ü ׻ νϽ̸ ϹǷ NULL̴. ν ޽ ȣǹǷ ü ݵ ޽ ־ Ѵ. WM_CREATE ġϰ WM_DESTROY ϸ ε Ű ޽ ν ޴´. 
ν Ű ¸ ϱ ȣǹǷ ̶ GetAsyncKeyState Լ Ű ¸ Ȯ . Ű ° ʿϸ ޽ Ű ¸ ü ؾ Ѵ. wParam ޽ ޵Ǹ lParamδ ü Ѵ. 

typedef struct tagKBDLLHOOKSTRUCT {
  DWORD     vkCode;
  DWORD     scanCode;
  DWORD     flags;
  DWORD     time;
  ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;

о  Ű ô ľѴ. ޽ 0 ϸ ü Ÿ ޽ Ͽ ƹ óȴ. ޽ 0 ƴ , 1 Ͽ ü ʵ Ѵ. 
ν ѽð ޽ ų óؾ ϸ ð ʰϸ ޽ ü ޵ȴ. ѽð Ʈ Ǿ ִµ Ʈ 1̴.
ڵ ޽ α׸ Ͽ  Ű ޽ ش. ٸ α׷ Ű Է 鿩 ִ. 밳 ü ޽ ׳ ʿϴٸ ޽ ų ٲ ִ. esc α׸ ϴµ Ŀ ʾƵ ϴ.
1Ű ؼ 1 Ͽ ޽ Ծ . ü ޽ Ű .  쵵 1Ű ޽ . ߿ winŰ ϸ ȴ. 
2Ű 3Ű Է ٲٴ ȵȴ. vkCode Ű ̸ ٲ۴ٰ ؼ Ÿ ޴ ޽ ޶ ʴ´. ν ޵Ǵ Ķʹ б ̴.
޽ ٲٰ ϴ Ծ keybd_eventԼ ο ŰԷ Ѵ. 4 5 ٲ . ߻ 5 Էµ ν Է ü Ÿ ޵ȴ. Ű Է ޽ flag LLKHF_INJECTED ÷׸ Ѵ.



ٸ 쿡 1, 2, 4 ν ޽  ϴ ִ. ٸ 쿡 ԷµǴ Ű Ư  ϰ κ ϴ. 
  출장마사지 | 구로출장안마 | 광주출장샵 서패동소개팅 명석면소개팅 구황동타이마사지 출장샵 | 삼척출장안마 | 수원출장마사지 중랑출장샵✓옥천출장업소✓굿월헌팅 챗천사 오남동콜걸 치한19만화 약수역소개팅 파일디스크 봉고렌트 귀여운여친 유포 카게히나타피어나다 인천콜걸 군산출장샵

달서구맛집 와디즈펀딩✓재택근무 번역✓카카오 대출 연장 신도림맛집 이너뷰티 육아소통 꽃배달 스타벅스커피✓신한은행 대출 전화번호✓nh 새내기 공무원 대출 사랑중대출승인재테크 의 뜻 홈쇼핑재택근무 반영구 소년 강간 동인지 상주출장마사지 후장 처음 다음 클라우드 화성출장샵

Ϻ Ű ũ


αϼž ֽϴ.