Можно ли отслеживать вызовы (Nt) Send (User) Input и SetWindowsHookEx? - PullRequest
1 голос
/ 01 марта 2012

Я пытаюсь разработать анти-читерскую систему.Система будет работать, идентифицируя приложения, которые используют различные API для ввода с клавиатуры / мыши, такие как SendInput, keybd_event, mouse_event и SetKeyboardState в Windows.Все приложения должны сравниваться с базой данных приложений, которым система может выполнять вызовы этих функций.

Для этого мне нужно знать, можно ли каким-либо образом отслеживать вызовы определенных функций WinAPI.

Мне также необходимо отслеживать вызовы SetWindowsHookEx.

1 Ответ

3 голосов
/ 01 марта 2012

Оба keybd_event и mouse_event используют SendInput под крышками. Хотя вы можете внедрить пользовательскую DLL-библиотеку во все процессы и перехватить эти API-интерфейсы, большинство античит-систем работают не так, потому что ее легко подорвать (например, с помощью батута).

Как правило, античит-программы, желающие отслеживать / обходить эти API, делают это дальше. Например, они будут перехватывать системный вызов NtSendUserInput. GameGuard является примером системы, которая перехватывает как SendInput, так и NtSendUserInput.

Первое, что вы должны осознать при кодировании своей античит-системы, это то, что вы также можете предположить, что ваш код может быть легко взломан или манипулирован злоумышленником. Вы говорите о сравнении с базой данных приложений. Возможно, вы намереваетесь сделать это путем к файлу, который вы получаете через GetProcessImageFileName . Затем вам нужно подумать о том, как вы собираетесь остановить злоумышленника, внедряющего DLL для подключения вашего вызова к этому API, или, возможно, даже загрузить драйвер, который подключается дальше.

Вперед и обратно игра обмана против анти-обмана бесконечна и постоянно меняется (обновляются сигнатуры кода, мошенники перекомпилируются с различной эвристикой, вы перехватываете пользовательский режим, они бьют по батуту, вы привязываете режим ядра, они загружают драйвер в батут и т. Д.) и если вы задаете такие вопросы, скорее всего, вы лучше подходите для покупки решения, чем пытаетесь накатить свое собственное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...