내 예에서 후크 기능을 설치하는 installhook 기능은 다음과 같습니다. Microsoft® Windows™ 운영 체제에서 후크는 함수가 응용 프로그램에 도달하기 전에 이벤트(메시지, 마우스 동작, 키 입력)를 가로챌 수 있는 메커니즘입니다. 함수는 이벤트에 대해 작동할 수 있으며 경우에 따라 이벤트를 수정하거나 삭제할 수 있습니다. 이벤트를 수신하는 함수를 필터 함수라고 하며 가로채는 이벤트 유형에 따라 분류됩니다. 예를 들어 필터 함수는 모든 키보드 또는 마우스 이벤트를 수신하려고 할 수 있습니다. Windows에서 필터 함수를 호출하려면 필터 기능을 설치해야 합니다(예: 키보드 후크)에 Windows 후크에 연결됩니다. 하나 이상의 필터 함수를 후크에 연결하는 것을 후크 설정이라고 합니다. 후크에 두 개 이상의 필터 기능이 연결된 경우 Windows는 필터 함수 체인을 유지 관리합니다. 가장 최근에 설치된 기능은 체인의 시작 부분에 있으며 가장 최근에 설치된 기능은 끝에 있습니다. 키보드 메시지의 식별자입니다.

이 매개 변수는 WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN 또는 WM_SYSKEYUP 중 하나일 수 있습니다. MSDN은 응용 프로그램에서 실행되는 GetMessage가 키보드_hook을 실행한다고 말합니다. 다음 코드로 메시지 상자()를 바꾸기: 지금은 MapVirtualKey에서 반환하는 값을 인쇄하고 있지만 일부 확인을 할 수도 있습니다. 예를 들어: 아래에는 각 응용 프로그램의 몇 가지 예제 출력이 포함되어 있습니다. 참고 디버그 후크는 이러한 유형의 저수준 키보드 후크를 추적할 수 없습니다. 응용 프로그램이 낮은 수준의 후크를 사용해야 하는 경우 작업을 작업자 스레드로 전달한 다음 즉시 반환하는 전용 스레드에서 후크를 실행해야 합니다. 응용 프로그램이 낮은 수준의 후크를 사용해야 하는 대부분의 경우 원시 입력을 대신 모니터링해야 합니다. 이는 원시 입력이 낮은 수준의 후크보다 다른 스레드를 대상으로 하는 마우스 및 키보드 메시지를 비동기적으로 모니터링할 수 있기 때문입니다. 원시 입력에 대한 자세한 내용은 원시 입력을 참조하십시오. 내 예제의 CALLBACK 함수는 아래에 있습니다. wParam 및 lParam 매개 변수에는 키보드 메시지에 대한 정보가 포함되어 있습니다.

제공된 API 후크가 전역이기 때문에 Windows 작업 관리자와 유사한 기능을 가진 다른 프로그램에서 동일한 결과가 표시되는 것을 볼 수 있습니다. 예를 들어, 마크 루시노비치의 프로세스 탐색기입니다. 이 예제에서는 C++를 사용하여 DLL 주입 기술을 설명하기 위해 사용자 모드 DLL을 작성합니다. 이렇게 하려면 프로젝트에 추가될 Mhook 소스의 최신 버전이 필요합니다. Mhook 파일에 대해 미리 컴파일된 헤더는 사용하지 않도록 설정해야 합니다. 후크에 하나 이상의 필터 함수가 연결되어 있고 후크를 트리거하는 이벤트가 발생하면 Windows는 필터 함수 체인의 첫 번째 필터 함수를 호출합니다. 이 작업을 후크 호출이라고 합니다. 예를 들어, 필터 함수가 CBT(컴퓨터 기반 교육) 후크에 연결되어 있고 후크를 트리거하는 이벤트가 발생하는 경우(예: 창이 만들려고 함) Windows는 필터 함수 체인의 첫 번째 함수를 호출하여 CBT 후크를 호출합니다. 여러 API 후킹 라이브러리가 있습니다. 일반적으로 다음을 수행합니다: 오늘 은 프로그램에서 키보드 후크 (C ++)를 설정하는 방법을 보여줍니다. 그것은이 튜토리얼의 끝에서, 당신은 사용자가 자신의 키보드에 키를 누를 때 알 수 있을 거 야, 어떤 키, 때 그는 그것을 해제 합니까, 얼마나 많은 시간 그는 키 등을 누르면 않았다… 갑시다! 현재 문서는 시스템 전체에서 글로벌 API 후크를 설정하기 위한 쉬운 접근 방식에 전념하고 있습니다.

DLL 주입의 경우 AppInit_DLL이라는 레지스트리 키를 활용하고 Windows에서 API 후킹을 수행하여 Mhook 라이브러리를 활용합니다. 이 문서에서는 또한 DLL 주입 예제를 제공 합니다.: 우리는 당신이 쉽게 실행 중인 프로세스 목록에 보이지 않는 calc.exe 프로세스를 만들 수 있는 방법을 보여 줄 것 이다.