Я не знаю технических подробностей, но в программе BlitzIn шахматного клуба Intenet, похоже, есть встроенная функция обнаружения переключения программ. Это, конечно, для обнаружения людей, использующих шахматный движок на стороне и не имеющих непосредственного отношения к вашему случаю, но вы можете экстраполировать аппроксимацию на что-то вроде того, если процесс X занимает больше чем Z% процессорного времени в следующих циклах Y, это вероятно бот работает.
Что в дополнение к «вы не должны запускать что-либо еще во время игры, чтобы иметь право на получение призов», как часть правил конкурса, может работать.
Кроме того, суровое правило «мы можем решить в любое время и по любой причине, что вы использовали бота и дисквалифицируете вас», также помогает с эвристическим подходом, описанным выше (используется в призовых шахматных турнирах ICC).
Все эти вопросы легко решаются по правилу 1 выше:
* how to detect if another application makes periodical screenshots?
* how to detect if another application scans our process memory?
* what are good ways to determine whether user input (mouse movement, keyboard input) is human-generated and not automated?
* is it possible to detect if another application requests informations about controls in our application (position of controls etc)?
Я думаю, что хороший способ усложнить задачу взломщикам - это иметь на своих серверах единственные достоверные копии игрового состояния, только отправляя и получая обновления от клиентов, чтобы вы могли встроить их в протокол связи. Сама проверка клиента (что он не был взломан и, следовательно, правила обнаружения все еще действуют). Это, и активный мониторинг нового странного поведения может привести вас к тому, что вы хотите.