¿Es posible evitar la emulación de entrada con SetWindowsHookEx en una aplicación específica?

2

La técnica de protección de emulación de entrada con herramientas de automatización como AutoIt o ACTools utilizado en la mayoría de los programas de bot de juegos simples es SetWindowsHookEx usa las marcas WH_KEYBOARD_LL . Esta solución no es una bala de plata y (por ejemplo) el software del bot puede usar el controlador PS / 2 para emular la entrada de hardware. Es esta pregunta, asumamos que el problema PS / 2 ya se ha resuelto.

  

WH_KEYBOARD_LL instala un procedimiento de enlace que supervisa los eventos de entrada de teclado de bajo nivel. Para obtener más información, consulte el LowLevelKeyboardProc procedimiento de gancho .

WH_KEYBOARD_LL se usa (en lugar de WH_KEYBOARD) solo por LowLevelKeyboardProc contiene un puntero a KBDLLHOOKSTRUCT con banderas de eventos inyectados, código de contexto y bandera de estado de transición. El código de protección de muestra es bastante simple:

LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) {
  if (code < 0)
    return CallNextHookEx(_hookKeybrd, code, wParam, lParam);

  KBDLLHOOKSTRUCT& ll = *(KBDLLHOOKSTRUCT*)lParam;
  if (ll.flags & LLKHF_INJECTED)
    return 1; //emulation case

  return CallNextHookEx(_hookKeybrd, code, wParam, lParam);
}
...
SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, GetModuleHandle(NULL), 0);

Pero si la aplicación usa este código, debería estar en todo el sistema.

Preguntas:

  • ¿Hay alguna forma de limitar esto a una aplicación específica?
  • ¿Hay alguna otra forma de evitar la emulación de entrada en una aplicación específica?
pregunta misterion 28.01.2016 - 11:12
fuente

0 respuestas

Lea otras preguntas en las etiquetas