БОТЫ
| |
KPECT | Дата: Понедельник, 03 Сентября 2012, 13:53 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Привет форумчанам! Собственно сабж, может кто поделиться линками и материалами на данную тему.
Интересует механизм создания и методы отлова оных. Создаю браузерную игру(в планах создать отдельным приложением).
Какие способы обычно используют ботоделы и что их может выдать?
Из найденного мной по только эмулятор кликов мышки и шаманство с POST и GET запросами, но знаю что ботоводы справляются и в ситуациях требующих решений(монстров больше чем надо или пришли не оттуда). Сам видел таких, в Рагнарок онлайн, ВоВ.
|
|
| |
FirestorM | Дата: Понедельник, 03 Сентября 2012, 13:57 | Сообщение # 2 |
Блэк-программист
Сейчас нет на сайте
| KPECT, молчание в чате. Они обычно не отвечают на обращения.
Все твои игры говно, ты ничего не умеешь и тебе незачем жить, пока ты не доказал обратного.
|
|
| |
nilrem | Дата: Понедельник, 03 Сентября 2012, 15:39 | Сообщение # 3 |
Просветленный разум
Сейчас нет на сайте
| Где-то на kriconf.ru есть подкаст по разработке онлайн игр. Часть подкаста посвящена борьбе с ботами. Рассказывают, как вычислить бота, и что делать, чтобы поймать ботовода. К сожалению, названия записи не помню.
Windmill 2
WindMill 2D Game Engine
|
|
| |
TimKruz | Дата: Понедельник, 03 Сентября 2012, 17:04 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Quote (KPECT) Из найденного мной по только эмулятор кликов мышки и шаманство с POST и GET запросами В большинстве браузерных игр этого обычно достаточно, настолько примитивно управление там. В некоторых играх тем же способом - эмуляцией нажатий клавиш и мыши - можно упростить игровой процесс, и чаще выигрывать (например, быстрее реагировать, вместо комбинации клавиш нажимать одну и т.п.).
Если игрок играет сам, но с помощью таких приспособлений - вычислить его можно только по постоянным выигрышам, правда, можно обмануться, напав на просто очень опытного игрока. Впрочем, всё-таки отличия заметить можно. И, в конце концов, можно просто в разговоре выяснить правду - вдруг проговорится... Quote (KPECT) но знаю что ботоводы справляются и в ситуациях требующих решений(монстров больше чем надо или пришли не оттуда). Любая онлайн игра что-то отправляет и что-то принимает, и вообще любая игра что-то хранит у себя в памяти. Так что есть два выхода: либо полностью заменить игровой клиент собственной программой - она будет вместо клиента принимать, анализировать и отправлять то, что ей нужно. Либо можно вылавливать "на лету" данные из памяти, предназначенной для клиента игры, анализировать их и эмулировать нажатия клавиш. Первый способ требует тщательного анализа работы игры, чтобы не вызывать подозрений у сервера, для второго же способа нужно знать всего лишь то, где и как располагаются данные в памяти - тут тоже придётся искать и расшифровывать эти данные, но не нужно заботиться об их приёме и отправке. Quote (FirestorM) KPECT, молчание в чате. Они обычно не отвечают на обращения. Теоретически - правильно, но множество игроков молчит почти всегда - то ли они от природы неразговорчивы, то ли печатать не любят, то ли приходят чисто поиграть, то ли не любят разговаривать с незнакомыми игроками, а друзей в данный момент онлайн нет. Поэтому это ненадёжный метод определения ботов. К тому же, теоретически, достаточно продвинутый бот может анализировать сообщения чата и более-менее адекватно отвечать (например, выхватывать из сообщения ключевые слова и отвечать заготовленной короткой фразой, а на повторные запросы молчать; если ответ окажется неадекватным, спрашивающий скорей всего посчитает этого игрока слабоумным и не будет больше задавать вопросов), либо просто выходить из игры (или переходить в другую комнату/карту/бой), когда его пытаются "раскусить". Quote (KPECT) и что их может выдать? Практически все игроки, использующие ботов, периодически играют в эту игру сами, иначе смысла держать бота нет (в большинстве случаев). Поэтому, наблюдая за игроком ходя бы иногда, можно заметить те изменения, которые происходят с его стилем игры или количеством побед (количество побед можно оценить по автоматической статистике, если она ведётся - это проще, чем наблюдать). Однако и тут можно ошибиться - вдруг какой-то игрок одно время играл/играет в игру "профессионально" (проявляет мастерство, стараясь всё время выигрывать и всё такое), а в другое время заходит в игру пообщаться с друзьями или что-нибудь вроде этого. Quote (KPECT) и методы отлова оных Отлавливать можно по-разному, но лучше пытаться предотвратить появление ботов, или усложнить процесс создания бота. Можно использовать сильную шифровку, как при передаче данных, так и при их хранении в памяти - это затруднит поиск требуемых "ниток", за которые нужно "дёргать", чтобы получить требуемый результат. Можно использовать "ложные" данные, всякий мусор, который будет якобы с какой-то целью обрабатываться, отправляться и приниматься - это тоже затруднит поиск. При разработке новых версий игры или раз в несколько дней, неплохо менять ключи/алгоритмы шифра, некоторые способы обработки и варианты хранения данных (положение в памяти отдельных переменных/массивов/структур) - это с определённой вероятностью гарантирует, что старые боты перестанут корректно работать (тут есть ещё один плюс - если сделать подмену этих вещей без предупреждения игроков - многие продолжат использовать старых ботов, и их можно будет поймать на неадекватном поведении персонажа или частом выбрасывании с сервера - старый бот будет отправлять неправильные данные, что может привести в том числе к автокику игрока сервером, ну и если бот будет перезаходить - получится куча подключений-отключений, которые невозможно объяснить чем-либо кроме как неверной работой бота).
Ну и, конечно же, не во всякой игре есть смысл создавать ботов. Обычно используют ботов для быстрого улучшения статистики и характеристик аккаунта/персонажа или получения редких вещей (или большого числа обычных вещей), так что есть вариант сделать статистику, параметры персонажа и вещи второстепенными, либо убрать/уменьшить до минимума. Тогда смысла создавать полностью автономных ботов не будет, останутся только те, которые упрощают сам игровой процесс.
А ещё можно предоставлять игрокам внутри самой игры возможности тех же самых ботов, например: пока игрок оффлайн, его персонаж в игре "живёт" самостоятельно - вступает в случайные сражения, пытается повысить свои характеристики, находит и использует вещи, выполняет заданный игроком план, и, конечно, может просто погибнуть. Впрочем, тут тоже некоторые игроки могут оказаться недовольны - типа этот AI в игре слишком тупой, лучше я свой собственный напишу и буду использовать. Однако разницы остальные игроки не почувствуют, ведь по сути принцип один, и, возможно, бот игрока будет даже слабее серверных ботов.
|
|
| |
KPECT | Дата: Вторник, 04 Сентября 2012, 19:35 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| TimKruz, Спасибо за столь развернутый ответ, есть над чем подумать) Сейчас сам пытаюсь реализовать простейший кликер на C++, а потом отловить его.
p.s. Прятно был удивлен что Visual 2010 теперь фришный ) Давно не имел дело с С++ если бы не форум даже бы и не знал )
Сообщение отредактировал KPECT - Вторник, 04 Сентября 2012, 20:03 |
|
| |
TimKruz | Дата: Среда, 05 Сентября 2012, 19:26 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Quote (KPECT) Сейчас сам пытаюсь реализовать простейший кликер на C++, а потом отловить его. Через WinAPI-функции отправлять сообщения с информацией о позиции курсора и положении кнопок мыши в требуемое окно... Проще всего это сделать на AutoIt - для таких целей его удобнее всего использовать. Там для эмуляции мыши и клавиатуры специальные удобные функции есть (конечно, там ещё много чего интересного).
В одной Flash-игре я видел ещё одну такую фишку: если клики в игре происходят с интервалом менее какого-то числа (десятки миллисекунд) - сервер кикает за "слишком частые запросы". Это тоже кое-какая защита от ботов-кликеров, но обходится она всего лишь увеличением интервала между кликами/нажатиями клавиатуры. Хотя, может быть, они так защищаются от DoS-атаки или чего-то в этом роде - непонятно.
|
|
| |
|