Pull to refresh

Comments 67

Для action игр не пробовали писать ботов? ну типо… для World Of Tanks например )))
Чтобы вел врага на прицеле и всегда бил в боеукладку? )
Да я вчера только первый раз в жизни попробовал бота написать :)
сеглдня весь день тестировал, когда убедился в работоспособности решил поделиться
Обалдеть, супер! :) Осталось сделать детектилку мёртвых аукционеров на случай рейда и научить курить по средам. После этого можно запускать на месяц :)
Вообще говоря если в игре есть возможность написания аддонов как в вов, например чтобы над головой врага все время висела плашка уникального цвета, тогда задача нахождния истрельбы по врагу становится довольно простой

если такой возможности нет то без плясок с памятью процесса сделать бота будет довольно сложно (анализ всего экрана игры в посках врага, с учетом что танки ещеи в кафуляже — это уже из области алгоритмов поиска обьектов на фотографиях, а не ботов для игр)
Читал впечатления человека игравшего в эту игру на китайском сервере, тк там у них в игре капча есть и боты кстати не такие уж тупые, например если едут и упираются в стену могу сдать назад или изменить направление пути. А камуфляж там можно заменить на самодельный wotskins.ucoz.ru/ вот сайт со шкурками так что можно хоть ядовито зеленый и розовый.

Если уж речь о шкурках пошла, то официальный сайтздесь. AutoIt в WOT работает отлично, я настроил быстро несмотря на то что раньше программой не пользовался
А администрацию сервера не смутит что персонаж 9 часов подряд бегает в одном и том же направлении? ))
Для этого написано предупреждение :)
вообще говоря ботов в вове довольно много разных: для рыбалки, для сбора травы и так далее. Только по ним очень мало информации потому что они коммерческие по большей части: авторы пытаются их продавать. Поэтому и решил рассказать про свой опыт, потому что мне пришлось до всего самом

вообще говоря отследить такого бота дольно сложно потому что путь ксждый раз разный. А девять часов… Мало ли может мы с женой по очереди бегаем весь день :)
Писать ботов — хорошее, интересное занятие. Постоянное использование в реальной игре — нарушение правил и неуважение к игрокам. Второго делать лично я бы не стал.
Согласен. Да и боты бывают разные. Например, кому какое дело, если игрок использует бота для автоматической ротации дпс? Криворукость игрока остаётся на совести игрока.

Игры надо проектировать так, чтобы не было смысла в ботах…
во всех играх банят в первую очередь популярных или коммерческих ботов, как правило их можно как-то отследить.
различных самодельных отслеживать сложнее, их чаще банят по наводке от игроков.
Хорошая статья, буду ждать продолжения.
Ну тут в основном код для AutoIt, думаю что Warden умеет его определять.
Советую запускать AutoIT от другово юзера и менять название процесса.
Подобных кликеров и имитации клавиатуры довольно много, но молодцы что сами разобрались)

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

Вроде не забанили :))

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

Собственно в следующей статье расскажу про то, как я работал с почтой и с аукционером — условия на переход к следующему этапу цикла, поиск почтового ящика и т.д.
Я давно не играю, но пережил два банхамера один большой связанный с Glider, кстати замечу что он был написан на c#. Потом был mimic, pirox.

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

Мне аукцион неинтересен всегда был, но знаю что большенство кто химичит и работает по схеме купи/продай юзают «Аукционер»(адон не бот — для не играющих), там на сколько знаю всё автоматизированно в плане кликов и забирания с почты.
В препатче катаклизма близзарды сделали что чтобы выставить/забрать вещь с аукциона необхоимо обязательно сделать клик мышью.

Поэтому все эти аддоны автоматизируют одинаково: предоставляют большую кнопку на которую ты сидищь и кликаешь :)

Забираение с почты автоматизировано, но нужно:
1. дойти до почты
2. открыть почтовый ящик
3. нажать кнопку «получить все»
4. определить что ты все забрал что есть либо что сумки заполнены
5. если все забрал идешь обратно на аукцион выставлять.
Интересно и информативно написано. Жду продолжения!
Я тоже писал абсолютно такого же бота(тот же самый пиксель хант, тот же самый AutoIt), но несколько под другие цели. Пользовался порядка 4х месяцев, бана и флага не получил(интересовался у GM висит ли на мне флаг, его вешает warden или GM, по регламенту они должны предоставлять эту информацию по запросу игрока). В принципе я знал о том что не один я до такого додумался =)
ну тут не совсем пиксель хант :)

А семафор с заранее известными координатами пикселей, которые управляют движением.

Многие пишут ботов, но мало кто делится наработками. Будет больше наработок ботов в открытом доступе — может станет меньше ботов в игре :)
Все же это пиксель хант =) пускай даже эти пиксели создаём сами аддоном, надеюсь ваши статьи не разозлят святую инквизицию.
для хабра было бы интереснее написать парсер веб аукциона на node.js и самого торгового бота. Кол-во транзакций ограничено — в этом есть своя соль.
А вообще есть и бесплатные боты, которые не палятся. И комьюнити у них огого.
Веб акуцион для меня не ауктально: торгую символами, по 400+ лотов на аукционе, в день по 2 000 — 10 000 транзакций. Веб-аукцион это так, закупиться фласками по дороге домой если к рейду опаздываешь
тут хабр, а не вов!
Я хотел сказать что торговый бот через веб аукцион это заведомо бесполезная вещь.
зачем его разрабатывать и писать про него? Это же абсолютно пустая трата времени
Не палится все до поры до времени.
Не заметил обновление Warden'а и все — пока :)
ну забанят пиксели, ну и что?
Тогда с вашей точки зрения всё что в мониторе пиксели, например программисты занимаются разработкой пикселей.
Присядьте. Деньги — это просто бумажки.
Бумажный, довольно защищенный клочок бумаги, эквивалентен к Вашим трудозатратам, который устраняет систему бартера.

А так бы Вам пришлось таскать за собой стадо баранов, чтобы поесть в Макдональтсе.
Деньги — это высшая форма ликвидного товара.
А у вас детские представления.
Увы и ах, но серьезного бота на автоите с вкраплениями Lua не напишешь.
Все боты для WoW (да и для Aion) сейчас пишутся, в основном, на C# с применением библиотек типа BlackMagic, которые позволяют активно читать / писать в память процессе. Соответственно, самый сложный этап — поиск оффсетов в памяти процесса.
Интересующиеся могут даже скачать исходники некоторые OpenSource ботов. Их в изобилии на www.mmowned.com/forums/
Спасибо за ссылку, жалко на эту тему мало русскоязычной информации
<offtopic>
Хм, а почему только в памяти? Я, вобщем-то, совсем не в теме WoW, но самое первое, что пришло в голову это встроиться в передачу пакетов, думаю сетевой протокол уже кто-то разжевал. Или это как-то палится? С другой стороны и внедрение в процесс ведь спалить можно. Как-то не понятно.
</offtopic>
Пакеты в вове начиная с катаклизма зашифрованы с RSA-2048. Подобрать ключ такой длины нереально
Не трогал клиенты ММОРПГ, но подбирать-то зачем?
На клиентской стороне шифруем — в памяти клиента и сырые данные лежат, как минимум, на момент передачи в процедуру шифрования перед отправкой пакета. Наверняка шифруется пакет целиком, а не каждая структура данных по отдельности.
Ну а ключ где вы возмёте, чтоб зашифровать на своей стороне пакет перед отправкой?
Ну клиент-то сам шифрует, значит и ключ у него есть? :)

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

А на практике, если нужно делать что-то кроме пассивного чтения памяти: подмена/инъекция пакетов, модификация памяти, то при любом мелком обновлении придётся полностью анализировать код клиента, чтобы убедиться, что клиент не ввел новую проверку и сервер не обнаружит ваших действий. Цена ошибки высока.

Это примерно как война вирусов с антивирусами (при условии, что вирус уже запущен), и с поправкой на то, что клиенту в случае подозрений достаточно доложить об этом серверу.
Да, о трудоемкости я даже и не заикался, ибо ужс.

Тем более, когда в популярных ботах:
Соответственно, самый сложный этап — поиск оффсетов в памяти процесса.

Немного не понял, как мы можем вызвать функцию шифрования клиента? По моему всё что мы можем это перехватить пакет и заменить на свой. Вмешиваться в регистр и память — помоему не лучший вариант Warden(http://en.wikipedia.org/wiki/Warden_(software) ) сразу распознает такое вмешательство.
Теоретически нам нужны только входящие пакеты — там инфа где персонаж находится, сколько у него жизни/маны, кто находится рядом из игроков и мобов — расстояние до них.
И на этих данных уже можно строить бота куда бежать и что делать. Такие функции как взять цель и т.д реализуется внутри игровыми макросами и посылка пакетов на сервер не нужна.
Я имел в виду только то, что теоретических проблем с подменой пакетов нет. Мы все исходные данные и алгоритмы можем узнать, а значит, можем и проделать те же действия, что и клиент, или заставить его сделать это.

Как тяжко это будет, как обойти античит — это уже отдельные проблемы.

А в данном случае, похоже, лезть глубоко и не надо совсем, как нам автор и показал :)
Заменить пакет, не вмешиваясь в регистр и память нельзя, соединение же шифрованное. Заменим пакет — все последующие пакеты перестанут проходить, т.к. нарушится контрольная сумма.

Может быть возможно сделать MITM и проксировать все пакеты, попутно наблюдая за ними, возможно даже модифицируя.

По крайне мере два года назад в TBC это работало, достаточно было знать пароль к аккаунту. Для аутентификации использовался SRP и полученный ключ использовался для шифрования, ЕМНИП, почти простым xor.

Более того, так как размер пакета передаётся в том же зашифрованном канале в заголовках пакета, то наблюдая за размерами передаваемых блоков данных, и вычисляя тем самым размеры передаваемых пакетов (это можно сделать при условии хорошего интернет-соединения), и сравнивая их с зашифрованными заголовками, можно через несколько минут получить ключ шифрования даже без MITM на этапе соединения!

Хотя вот выше пишут, что начиная с катаклизма шифрование усилили, так что теперь не всё так просто.
ничего там не усилили, по сравнению с WotLK.

xor, заменили на RC4 еще пару лет назад.

просто в Cata стало несколько соединений, клиент переподключается по ходу игры и в разные соединения идут разные данные.

естественно все это нужно отслеживать.

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

самое простое и удобное — это вызовы функций внутри самого клиента (ну и вызовы Lua'шных, с отключеной защитой, там где это удобнее).
Сколько же у вас свободного времени :)

А ведь вы тут изложили реальный пример заработка :) не кому не секрет что эти голды можно продавать ) и не только в этой игре.
насчет заработка — была когда-то в игромании достаточно общая статья, про одного весьма предприимчивого человека. сути полностью она, конечно же, не раскроет, но в целом почитать интересно.
А где собственно процесс торговли?
Что бот скупает, как определяет настоящую цену на товар и по какой цене продает?
А я тоже для аукциона писал, правда на C# и с чтением памяти таки.
Аддон на Lua записывает в массив всю нужную информацию и команды, а в начало массива — сигнатуру (несколько произвольных чисел).
Потом основной процесс ищет в памяти игры сигнатуру, и считывает всю нужную информацию из массива. Так и быстрее и удобнее, чем пикселями.

Правда у меня ещё рандомизация и по времени, и по выбору маршрута.

А что за аддон, не Auc-Advanced ли?
9к за один день без ручного управления — это как-то многовато.
Насчет 9к за один день — я и руками такую прибыль иногда получал.

Начертание оно такое, пока люди говорят что оно не прибыльное, и что его понерфили и т.д. — остальные на нем зарабатывают деньги :)
То есть на профессии?

А ну это не интересно, я думал чистая торговля: «купил/продал», да ещё и чтобы не нужно было вручную анализировать цены.
Да, на профессии.

Не знаю, на профессии заработок устраивает: затраты в день порядка 1-3кг, вычрука 7-12кг

Хотелось автоматизировать просто рутинный процесс обновления аукционов :)
Просто получается, что для этого нужно ещё и играть, знать тонкости профессии, добывать редкие рецепты, прокачивать персонажа до того уровня, чтобы он мог изучить профессию.
Это верно не для всех профессий (в частности для начертания все обстоит не совсем так. из перечисленного спика нужно только докачать персонажа до 68 уровня)
А голд потом продаете или просто себе оставляете?
ни разу не продавал (но практически все раздал/подарил)
Вот это поворот, честно думал что на продажу, хотя я приценивался, если 1кг стоит 30р, то за сколько ж его покупают у фермеров, совсем смешные деньги выходят
Я обычно просто напивался и шел в оргриммар и там набирал пати 5 человек, мы шли в БРД слушать рок-концерт параллельно я устраивал всякие конкурсы-викторины в чате с призами типа 5/10/15кг и т.д., за вечер 50-150 кг сливал на такие развлечения.

Было весело.
Хех сорил монетами значит =) теперь все ясно
следующим шагом предлагаю написать бота для торговли на бирже :)
Goldman Sachs занимаются этим уже не первое десятилетие. Полагаю, они не единственные.
да, не единственные, я тоже этим занимаюсь :) вообщем нас много )
Еще надо, чтоб при виспах бот отключался от сервера.
Если начнут виспать (игроки, ГМ), а при этом игрок молчит и носится от аукциона к ящику — подозрительно. :-)
Берем бота-говорилку, обучаем его на очень-очень ломаном английском — и вуаля, даже если кто поинтересуется — желание интересоваться дальше пропадет почти мгновенно.
это не будет работать на русских серверах.
На русских серверах и так не понятно почти, кто что говорит. =/
Sign up to leave a comment.

Articles