Hooking - 1 후킹이란 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트에어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 출처: 위키피디아 키보드 후킹 소스코드를 살펴보며 후킹에 대해 이해해보자. void Stealth() { HWND Stealth; AllocConsole(); Stealth = FindWindowA( "ConsoleWindowClass" , NULL); ShowWindow(Stealth, 0 ); } 후킹 소스에서 공통적으로 볼 수 있는 형태의 로직으로 이는 콘솔 프로그램 실행 시 콘솔 창을 드러내지 않고 동작시키는 내용이다. 사용된 함수 하나 씩 살펴보자. BOOL WINAPI AllocConsole(void): 호출 프로세스에 새로운 콘솔을 할당하는 함수로 실패 시 Zero를 반환한다. MSDN HWND WINAPI FindWindowA( In_opt LPCTSTR lpClassName, In_opt LPCTSTR lpWindowName ); ClassName과 윈도우 명이 일치하는 경우 윈도우 핸들을 가져온다. 실패 시 NULL을 반환한다. MSDN BOOL WINAPI ShowWindow( In HWND hWnd, In int nCmdShow ); 윈도우 보여주기 상태를 설정한다. SW_HIDE: 0 으로 설정 시 창을 숨기고 다른 창을 활성화한다. 이제 이번 예제의 핵심 함수 GetAsyncKeyState() 와 GetKeyState() 를 살펴보자. SHORT WINAPI GetAsyncKeyState( In int vKey ); 가상 키코드 를 인자로 하여 함수가 호출되는 시점에 키를 누르고 있는지 아닌지와 이전에 누른적이 ...