Добрый вечер.
Подскажите, есть ли программные продукты, предоставляющие следующий функционал.
Полноценный драйвер под Windows, который представляется как драйвер мыши (при этом реальное устройство отсутствует). Также этот драйвер реализует интерфейс для прикладных приложений (API), позволяющий эмулировать простейшие события (перемещение / нажатие мыши).
mouse_event не устраивает, т.к. факт эмуляции детектируется прикладным ПО.
Заранее спасибо за помощь.
Вам кажется удивительным, что подобная борьба может продолжаться бесконечно?
Разработчики драйвера могут обозвать его по-другому или случайным именем, разработчики защиты от эмуляции ввода могут ввести базы сигнатур, алгоритмы эвристики, а первые опять будут обходить детектирование, вторые — улучшать его. Ничего не напоминает?
Речь идет не о крупномасштабном военном сражении, а о том, что чтобы обезглавить противника, нужно, чтобы траектория шашки прошла через шею. Так и в нашем случае цель — подавить появление флага LLKHF_INJECTED. Остальное — за пределами темы.
В статье все написано. SendInput устанавливает злосчастный флаг LLKHF_INJECTED, который рассказывает всем, что ввод эмулирован. Но можно, например, поставить хук на LowLevelKeyboardProc, убрать флаг и пустить подправленные данные дальше.
Ну это понятно. Статья полезная и определённо может пригодиться.
Но дело в том, что прога использует библиотеку DirectX, а точнее функции для работы с устройствами ввода напрямую. Поэтому скорее всего общение с драйвером происходит напрямую, а на сообщения программа не обращает внимания.
Каким именно образом детектируется факт эмуляции? В окно же всё равно в итоге приходит точно такой же эвент? Может оно всё же на уровне повыше вычисляет подвох?