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