2008-09-27 4 views
7

Один из наших следующих проектов должен быть основанной на MS Windows игрой (написанной на C# с графическим интерфейсом winform и интегрированным управлением отображением DirectX) для клиента, который хочет отдать призы лучшим игрокам , Этот проект рассчитан на пару лет, с чемпионатами, лестницами, турнирами, игроками и игроками и так далее.Защита от автоматизации

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

Так что мой вопрос: какие технические возможности мы должны обнаружить ботовую активность? Конечно, мы можем отслеживать количество часов играли, анализ стратегий для выявления аномалий и так далее, но, насколько этот вопрос, то я был бы более интересно узнать подробности, как

  • как обнаружить, если другое приложение делает периодические скриншоты?
  • как определить, сканирует ли другое приложение нашу память процесса?
  • Каковы хорошие способы определения, является ли пользовательский ввод (движение мыши, ввод с клавиатуры) генерируется человеком и не автоматизирован?
  • Можно ли определить, запрашивает ли другое приложение информацию об элементах управления в нашем приложении (положение элементов управления и т. Д.)?
  • Какие существуют другие способы существования, когда мошенник может собирать информацию о текущем состоянии игры, передавать их боту и отправлять определенные действия клиенту?

Ваш отзыв высоко оценен!

+0

Вы можете легко подключить другой компьютер к камере и поддельную клавиатуру/мышь. Который победил бы все. – 2008-09-29 20:14:42

+0

Вам не нужна была бы другая камера - запустите ее внутри виртуальной машины, бот будет работать снаружи. – 2010-07-02 21:40:53

ответ

0

Вы должны изучить, что входит в Punkbuster, Valve Anti-Cheat и некоторые другие анти-читы для некоторых указателей.

Редактировать: Что я имею в виду, посмотрите на , как они делают это; как они обнаруживают этот материал.

+0

Мы уже проверили Punkbuster и др., Но, насколько мы понимаем, основная цель этих инструментов - обнаружить известные читы, эксплоиты и т. Д. В нашем случае это не применимо, поскольку из-за ограниченной пользовательской базы это будет с большей вероятностью столкнуться с обычаями. Изменить: Спасибо за новый ответ. Я понял, что вы сказали, но, например, Punkbuster (и это действительно то же самое с другими продуктами в этой области), в основном действуют как своего рода вирус-сканирование, поиск сомнительных отпечатков пальцев, процессов, изменений в API и т. П. (см. также http: //en.wikipedia.o – Grimtron 2008-09-27 08:41:59

5

Просто подумайте, что, если «cheater» запускает ваше программное обеспечение на виртуальной машине (например, vmware) и делает скриншоты этого окна? Я сомневаюсь, что вы можете защититься от этого.

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

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

+0

Как раз о VM - вы можете использовать Shader Model 2.0 для игры, в которой в настоящее время никакая виртуальная машина не может работать на оборудовании. – OregonGhost 2008-09-27 08:51:01

0

Я не знаю технических деталей, но программа BlitzIn Intenet Chess Club, похоже, интегрировала обнаружение программных переключений. Это, конечно, для обнаружения людей, работающих с шахматным движком на стороне и не имеющих прямого отношения к вашему делу, но вы можете экстраполировать apporach на что-то вроде того, если процесс 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)? 

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

+2

А как насчет старых компьютеров, на которых запущено программное обеспечение? является очень неопределенным и туманным способом обнаружения автоматизации. – 2008-09-27 09:39:34

+0

Он должен работать не в абсолютном выражении, а относительно самого компьютера. В любом случае, больше, чем эвристика, остальная часть комментария является наиболее актуальной, imo – 2008-09-27 10:56:23

3

Лучшая защита от автоматизации - это не выполнение задач, требующих шлифования.

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

Однако, исходя из вашего вопроса, я бы сказал, что лучше всего не использовать функции анти-автоматизации на C#. У вас мало шансов обнаружить хорошо написанные хаки/боты из управляемого кода, особенно когда все, что нужно хакеру, это просто перейти в ring0, чтобы избежать обнаружения с помощью любого стандартного метода. Я бы рекомендовал Warden-подобный подход (модуль для загрузки, который вы можете обновлять, когда захотите) в сочетании с драйвером Kernel Mode, который перехватывает все функции API Windows и наблюдает за ними за «неуместные» вызовы. Обратите внимание, однако, что вы столкнетесь с множеством ложных срабатываний, поэтому вам не нужно основывать свою запретную систему на ваших автоматизированных данных. Перед тем, как запретить, всегда нужно посмотреть на человека.

1

У меня нет более глубокого понимания того, как работают PunkBuster и такие Softwar, но это так, я бы:

Iintercept вызовы функций API, которые обрабатывают материал памяти как ReadProcessMemory, WriteProcessMemory и так далее.

Вы обнаружили, что ваш процесс задействован в вызове, зарегистрируйте его и верните трамвай обратно к исходной функции.

Это также должно работать для снятия скриншотов, но вы можете перехватить функцию BitBlt.

Вот основной учебник относительно функции перехвата: Intercepting System API Calls

7

Я написал d2botnet, а .net Диабло 2 автоматизации двигателя некоторое время назад, и то, что вы можете добавить в свой список вещей, чтобы наблюдать за являются уродливы/недействительные/поддельные пакеты. Я предполагаю, что эта игра будет связываться через TCP. Пакетное обнюхивание и ковка - это, как правило, первый способ игры (онлайн в любом случае). Я знаю, что Blizzard обнаружит искаженные пакеты, и я попытался держаться подальше от d2botnet.

Поэтому убедитесь, что вы обнаруживаете недействительные пакеты. Шифруйте их. Хеши их. сделать somethign, чтобы убедиться, что они действительны. Если вы подумаете об этом, если кто-то может точно знать, что каждый пакет означает, что отправляется туда и обратно, им даже не нужно запускать клиентское программное обеспечение, которое затем делает любое обнаружение на основе процесса спорным. Таким образом, вы также можете добавить какой-то ответ на запрос на основе пакетов, который ваш ум должен знать, как реагировать.

2

Обычный способ прослушивания ввода-вывода клавиатуры и мыши в приложении устанавливает крючок окон с помощью SetWindowsHookEx. Поставщики обычно пытаются защитить свое программное обеспечение во время установки, так что хакер не будет автоматизировать и взломать/найти серийный номер для своего приложения. Google термин: «Key Loggers» ... Вот article, который описывает проблему и методы ее предотвращения.

Смежные вопросы