No podes hookear el equivalente porque no existe el equivalente, ese tipo de eventos van de la mano con el modo usuario. Existe la implementación, pero dista de ser una equivalencia en modo kernel, de hecho SetWindowsHookEx es solo un wrapper de lo que ya te mostró Eternal.
Hay
muchas formas de hacer un keylogger en modo usuario, algunas serán mejores que otras, pero evitando una no implica evitar las otras. Por lo tanto, si intentas hacer un método que evite un tipo especifico, te vas a volver loco para evitarlos todos.
Lo principal es que tengas en claro el diagrama del sistema y en cuenta todas las formas que hay para interceptar eventos (por lo menos la mayoría). Partiendo de ahí, podes ingeniar algo que acabe con gran parte de esos métodos, pero luego tendrás que meterte indefectiblemente con los que te menciona Eternal, que de hecho los filtros de modo kernel son muy comunes en los rootkits.
No se si los habrás leído, pero si todavía no lo hiciste, recomendado que te metas con:
"Programming the Microsoft Windows Driver Model"
"Rootkits - Subverting the Windows Kernel"
En cuanto al WinDBG, carga Win32k.sys, y luego pasas como comando al WinDBG:
uf ntusersetwindowshookex
Saludos!