È possibile impedire l'emulazione di input con SetWindowsHookEx in un'applicazione specifica?

2

Quello della tecnica di protezione dell'emulazione di input con strumenti di automazione come AutoIt o ACTools usato la maggior parte dei semplici programmi bot del gioco è SetWindowsHookEx utilizzo WH_KEYBOARD_LL flags. Questa soluzione non è Silver bullet e (ad esempio) il software bot può utilizzare il driver PS / 2 per emulare l'input hardware. Questa domanda presuppone che il problema PS / 2 sia già stato risolto.

WH_KEYBOARD_LL installs a hook procedure that monitors low-level keyboard input events. For more information, see the LowLevelKeyboardProc hook procedure.

WH_KEYBOARD_LL è usato (invece di WH_KEYBOARD) a causa di solo LowLevelKeyboardProc contiene il puntatore a KBDLLHOOKSTRUCT con flag iniettati da eventi, codice di contesto e flag di stato di transizione. Il codice di protezione di esempio è abbastanza semplice:

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);

Ma se l'applicazione utilizza questo codice, potrebbe essere esteso al sistema.

Domande:

  • Se esiste un modo per limitarlo a un'applicazione specifica?
  • Esistono altri modi per impedire l'emulazione di input in un'applicazione specifica?
posta misterion 28.01.2016 - 11:12
fonte

0 risposte

Leggi altre domande sui tag