Как стать автором
Обновить

Комментарии 41

Так держать!
Код не программиста, но для «Инженера» просто здорово.

Да, а в первом абзаце заключения, я бы просто поставил точку вот после этих слов:
Питон отлично подходит людям

  • Поручик, вы и на питоне программировать можете?
  • Могу-с, только ноутбук постоянно соскальзывает.

Это же великолепно!!!
Раньше я для автоматизации рудиментарного бота (зрение+кноподав) пользовался несложным AutoIt — тоже могу порекомендовать.

Пробовал. Штука классная, но питон на порядок богаче по возможностям. В библиотеке pyautogui например есть locateOnScreen('вырезанная_картинка.png') которая позволяет в автоматическом режиме рапознавать изображение на экране и возвращает центр его координат. Таким образом можно например решать простые головоломки в играх или обходить каптчу самописной защиты в LineageII
Ботов для игр проще писать на базе чтения памяти с помощью win32api readProcessMemory или MmCopyMemory.
Естественно. Это как раз и будет материалом следующей статьи. Просто на питоне это делать легко и приятно даже для новичков и я сильно удивлен, почему его еще активно не используют под это дело.
Ну почему ж — в наше время раньше был популярен перл, просто он вдруг стал сложным для большинства :)

Ботик для РО
буду очень ждать. использую struct, ~winapi(readprocessmemory) и ctypes. и пока код не очень красивый.
другой вопрос, как выполнять такие задачи параллельно? допустим, при работе Pyautogui нельзя пользоваться компьютером. ну не запускать же под каждую копию игры виртуалку.
да, я хотел бы видеть в статье подробный разбор readprocessmemory(processHandle, addr, buffer, len(buffer), ctypes.byref(bytesRead)) как при этом читать строки, юникод, байты?
к примеру, где-то для buffer используют ctypes.create_string_buffer(bytes), а где-то ctypes.c_ulonglong()
Готовлю материал. Просто разобрать нужно на каком то интересном примере, а не сферический код в вакууме да еще, чтобы было понятно хотя бы 80% аудитории хабра. Подготовка такой статьи довольно времязатратная штука.
а такое разве не будет палить античит?

Можно через Meltdown.

Два чая этому господину!
Что будет заметно дольше без знания точных адресов, правда.
Практически для любой популярной онлайн игры есть обходы ее античитов в паблик доступе. Если нет в русском сегменте, то точно можно найти в англоязычном. Как говориться волков бояться — в лес не ходить. А вообще процесс python.exe исполняющий ваш код наверняка выглядит менее подозрительным, нежели какой нибудь Xc7$smkT.exe да еще и инжектящий в процесс игры свою библиотеку.
Название процесса звучит как Dr.Web CureIt (правда не уверен насчет инжектов)
А если такое дело пошло, на каком стеке и какими тулзами проще всего писать эффективных(полноценных) ботов для игр?
Исследование игры на нижнем уровне и написание под нее бота — штука комплексная. Есть замечательная книга на эту тему которая на 90% описывает то что вам нужно. gamehacklab.ru/topic/4834-утекла-книга-гейм-хакинг-разработка-автономных-ботов-для-онлайн-игр Найти ее можно и в pdf правда на английском. Если такие вопросы — рекомендую начать с вещей попроще, вроде поиска нужных значений в памяти и программного чтения/записи в них. Например на том же питоне.
На питоне, но в IDA.
После того, как попробовал писать на питоне, слег в больницу с диабетом
Классная шутка, же. Чего сообщество не оценило? Видно, нужно было написать «с синтактическим диабетом»
интересно получилось, как-то давно делал похожее на delphi, для LAII, играл на пиратке с хай рейтом, суть была в том чтобы банки CP использовались автоматически. Кто играл на пвп серверах думаю поймет.
«Спам ГЦП банок». С тех пор придумали игровые мыши с макросами и доп.клавишами)
P.S.: тоже делал, только для спама подходило плохо, а вот циклить макрос /nexttarget /attack /delay 15 /pickup /pickup /pickup получалось замечательно. Ставишь в центр маленькой комнаты в катах и машинка фармит камни за тебя)
Делал подобную конструкцию для другой игры, тоже для новогоднего эвента и тоже ради спортивного интереса… Только использовал связку Python + OpenCV. Нарезал эталонных изображений, которые бот искал на экране и кликал по ним автоматически. На контрастных объектах отрабатывает с довольно высокой точностью.
Главный недостаток Python'а в плане ботостроения — совершенно кошмарная работа с кодировками текста. Как только вы начинаете искать строки в памяти процесса и конвертить их, скажем, из cp1251 в utf-8, вы проклянёте Python. Все эти долбанные декодеры с энкодерами никогда не работают как надо, да к тому же любая ошибка закончится километром бессмысленных логов, увенчанных UnicodeDecodeError, и во всём этом мусоре не будет ни малейшего намёка на строку, реально вызвавшую ошибку.

В 3-ей версии Python "Все эти долбанные декодеры с энкодерами" всегда работают как надо. А километровые логи на много короче чем в Java и слева указывают имя модуля, имя функции, а справа номер строки для более полного понимания в каком месте произошла ошибка. Или Вы ожидаете от ЯП подобного:
Error in line 13 you meant print() instead pirnt()

«Error in line 13 you meant print() instead pirnt()»
clang и GCC вроде в последних версиях так и делают
Если вы «труъ» программист и готовы брызжа слюной доказывать, что питон фигня и новичков сразу нужно макать в ручное управление памятью, яки младенца в святую воду — можете смело закрывать статью.

Как бы между Python и ручным управлением памятью есть и промежуточное звено: языки с автоматической сборкой мусора.


Питон отлично подходит людям с базовыми знаниями в области программирования и гуглинга для решения интересных задач.

А C#, Kotlin да и другие языки не подходят?


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

Очень спорное утверждение. Как раз таки в Python ошибок может быть только больше из-за его динамической природы.


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

Опять-таки. А к другим языкам это не относится?


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

Помимо Python вы знаете только C++?


Документация. По простоте, понятности и лаконичности ближайший аналог видел только у PHP.

Да куча документации хорошей и разной по популярным языкам.


В питоне прослеживаются черты линукс философии. Даже установка новых модулей легка и приятна и не вызовет у вас трудностей если вы освоили какой нибудь apt или yum

nuget для C#, maven для Java.


Питон удобен для создания всяких хаков и автоматизаций в играх, особенно тех, где требуется частая модификация.

Какая модификация?

Если вы «труъ» программист и готовы брызжа слюной доказывать, что питон фигня и новичков сразу нужно макать в ручное управление памятью, яки младенца в святую воду — можете смело закрывать статью.
Как бы между Python и ручным управлением памятью есть и промежуточное звено: языки с автоматической сборкой мусора.

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

А C#, Kotlin да и другие языки не подходят?

На шарпе переделывал инъектор для игры Rust, опять же при помощи гугла и советов коллеги — то еще удовольствие если с языком не работаешь каждый день. Так же, если на питоне понравилась программка или модуль — то ты открываешь, изучаешь и копируешь нужный код. В c# для подобного пришлось качать net reflector и прогонять прогу через деобфускатор de4dot. Я думаю не стоит тут упоминать как выглядит код после деобфускации, кто ковырял сам знает.
Очень спорное утверждение. Как раз таки в Python ошибок может быть только больше из-за его динамической природы.

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

На мой, достаточно субъективный, взгляд накладывается опыт разбирательств с другими языками. Питон сообщество нацелено не только на профессионалов, вот в чем его плюс. Возможно, если вы опытный программист, вы не заметите разницу в общении на форумах или в подаче документации, но для начинающих важно чтобы объяснялось для их уровня. И да, никто не будет делать на c# или java программки для системного администрирования,
а на питоне будут. Это и создает ту экосистему для людей-не-программистов.
Помимо Python вы знаете только C++

А кто сказал что я знаю python и с++? Я знаю базовые для всех языков конструкции и как пользоваться гуглом. Дополнительный синтаксис осваивается за пару часов ( если это конечно не lisp или брэйнфак ). Это как раз та фишка о которой я и говорил в статье — питон не нужно хорошо знать чтобы решать на нем задачи.
Да куча документации хорошей и разной по популярным языкам.

Опять же с точки зрения профессионального программиста да, а с точки зрения не программиста вопрос очень спорный. Отписал выше.
nuget для C#, maven для Java

Не спорю. Тут это просто плюс, по сравнению с языками, в которой таких систем нет.
Какая модификация?

В играх отвратительно часто встречаются апдейты меняющие статические адреса и указатели, хранящие скорость, коэффициент разброса оружия или еще какую нибудь интересную переменную. Или например ввели в игре временное изменение и кликер тыкает уже не туда, куда ему положено.
Большое спасибо за статью, дали пищу для размышлений :) Плюс пока не могу поставить — карма низковата, но считайте этот плюс плюсом в свою личную карму ;)
Я немного поворчу, если позволите
мой быдлокод будет резать вам глаз

То, что Вы это признали — хороший признак того, что Вы от него хотите избавиться и писать труЪ-код. Одно дело — хвастаться и буквально кичиться быдлокодерством, и совсем другое — признать и активно с ним бороться. Сейчас сам на этом или чуть более раннем этапе.

расхвалить питон и показать еще не освоившим, что с ним может делать человек-не-программист

Именно это как раз важно. Это как выучиться на сварщика, но работать/подрабатывать в оркестре барабанщиком (и делать это хорошо).
Статья хорошая, осталось чуть-чуть подтянуть правописание (судя по комментариям, Вы умеете писать грамотно, что не очень часто встречается — просто не торопитесь с публикацией)).
Всё, перестаю ворчать.
Отлично! Хочу ещё python магии. )
Мы не можем ставить исполнение программы на паузу применив классический sleep() т.к. все собьется да и вообще кругляши летят достаточно быстро.
Что-то туплю… Почему собьется? По поводу скорости: а sleep(0.01) не пробовали?
Смысл в том, что кругляш едет до центра около 2-х секунд и кнопку нужно нажимать через 2 секунды, после того как его засекаем программно. то Есть если поставить time.sleep(2) а потом нажать кнопку, кнопка то нажмется, но в эти 2 секунды программа не будет ловить другие кружки а тупо ждать.
А не подскажете модуль (не нашел, мб плохо искал) который анализирует звук исходящий из игры? И при помощи которого можно сделать специальные триггеры на определенный звук? Как выше в комментариях написано было, например,
locateOnScreen('вырезанная_картинка.png')
Занятная статья. Также, хотелось бы увидеть пару слов о защите в таких играх.
У меня накопилось некоторое количество опыта по обходу защит и даже кое какие свои наработки, но боюсь ответ значительно превосходит формат комментария. Вроде статья неплохо зашла, думаю и на тему защит напишу со временем.
НЛО прилетело и опубликовало эту надпись здесь
Ну у меня нет мании величия и я ни в коем образе не утверждал, что мой метод правильный и изящный. Всегда найдется тот, кто сделает лучше, выше, быстрее, сильнее. Суть статьи в том, чтобы показать, что человеку можно чуть чуть погуглить и сделать на питоне какую то интересную вундервафлю, даже если он не разу не профессионал. Ваш OpenCV гугл кстати не разу не выдал когда я искал либы под это дело. Если бы он мне попался на глаза первым — возможно в статье был бы он. В любом случае спасибо за инфу, буду иметь в виду.
НЛО прилетело и опубликовало эту надпись здесь
Арбитраж!))) А вообще понравилась, интересная идея и доведение её на результата
Ребят, а кто имеет ботов для телеграмм игр? тот же Chat Wars?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории