All about Programming

Windows Keyboard Filter Driver (키보드 필터 드라이버)

민토즈 2020. 12. 31. 15:34
300x250

WDK설치 후 제공되는 소스 코드를 활용해서 Build를 해보고,

특정 키를 눌렀을 때 필터 드라이버에서 캡쳐가 되는지 확인을 해겠습니다. 

 

소스는 WDK 7600에서 제공되는 Kbfilter으로 설치를 합니다. 

 

WDK 7600 다운로드가 더 이상 지원을 하지 않네요. 

 

간단하게 드라이버 설치 방법만 소개하고, WDK 설치 후 자세하게 설명해보겠습니다. 

 

코드 사이닝이 없는 경우 테스트 사이닝으로 하거나, 32비트 Windows 환경에서 드라이버를 설치하세요. 

 

cmd prompt에서 sc.exe를 사용한 디바이스 드라이버 설치

1) kbfiltr.sys 파일을 c:\windows\system32\drivers에 복사 

2) kbfiltr.sys설치: sc.exe create kbfiltr binPath= system32\drivers\kbfiltr.sys type= kernel

3) kbfiltr 삭제: sc.exe delete kbfiltr

 

devcon.exe를 사용해서 upper filter driver로 등록한다. "devcon.exe classfilter keyboard upper +kbfiltr"

 

devcon.exe는 구글에서 검색하면, 다운로드 받을 수 있습니다. 

devcon.exe를 사용하지 않고, 직접 레지스트리에 입력하려면, Regedit를 열고,  

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96b-e325-11ce-bfc1-08002be10318} 키에서 UpperFilters Value에 kbfiltr를 추가하면 됩니다.

 

가상 머신이나 테스트 머신에서 드라이버를 설치하고, 디버깅 설정을 해서 키보드 입력할 때 key code가 제대로 넘어오는지 확인을 합니다. 

 

키보드 코드 값은 다음 사이트를 참조하세요.

docstore.mik.ua/orelly/webprog/DHTML_javascript/0596004672_jvdhtmlckbk-app-b.html

 

https://docstore.mik.ua/orelly/webprog/DHTML_javascript/0596004672_jvdhtmlckbk-app-b.html

Appendix B. Keyboard Key Code Values Key codes are numeric values that correspond to physical keys on the keyboard but do not necessarily correspond to a particular character. For example, the A key on the keyboard produces the same key code when pressed,

docstore.mik.ua

KbFilter_ServiceCallback 루틴에서 

InputDataStart->MakeCode 키보드 코드 값
InputDataStart->Flags         Up & Down 값을 참조하세요.

 

WDK가 설치되어 있지 않아서, 자세한 내용을 올리지 못했네요. 환경 구성 후 다시 업데이트 할 예정입니다. 

 

 

 

 

 

 

300x250