Задать вопрос
Ответы пользователя по тегу Боты
  • [Python + pywin32] Как эмулировать движения курсора, клики кнопками мыши и нажатия клавиш клавиатуры в игре WoT?

    TrueBers
    @TrueBers
    Гуглю за еду
    вожусь уже 4-ю неделю, и на данный момент прямых ответов не нашел.
    Что можно было делать 4 недели, если ответ гуглится за 4 секунды? За 4 недели можно было игру дизассемблировать и посмотреть, как там всё устроено.

    Способов обработки ввода как минимум несколько. На одном Window Message Loop Legacy Input, который ты насилуешь, свет клином не сошёлся. Он никогда не считался подходящим для игр и точного ввода, почему им пользуется огромное количество игр — загадка. Либо банальная человеческая лень.

    Есть DirectInput, есть XInput, есть window message loop input events, есть RawInput, и GameInput. Первые два давно уже устаревшими помечены, не развиваются с 2000-х и не рекомендуются к использованию в современных играх. Устаревшие ивенты из window message loop, которые ты пытаешься посылать в окно, никогда не рекомендовались для реалтаймовых игр, где важна скорость реакции и точность наведения курсора. Остаётся RawInput. Ну а GameInput — слишком новая, высокоуровневая и специфическая штука, чтобы её часто использовали. Более того, все эти *Input базируются на низком уровне как раз на RawInput.

    Обрати внимание на ивенты, которые приходят перед нужными тебе. WM_INPUT, вот он как раз относится к RawInput. Его то и обрабатывает приложение. Сначала приходит WM_INPUT, а потом за ним старое сообщение просто для совместимости с древними хендлерами. Приходят старые сообщения потому, что разработчики не отключили их генерацию флагом RIDEV_NOLEGACY, либо есть какая-то логика отката к старому обработчику.
    И самое главное, WM_INPUT генерируется HID-железкой внутри самого системного хендлера событий. То есть самому послать это сообщение от лица пользователя невозможно.

    Эмулировать RawInput можно только аппаратно/драйвером/гипервизором, либо внедрившись в код игры. Придётся реверсить игру и разбираться в логике обработки сообщений. Возможно, можно как-то заабьюзить логику, которая проверяет, будет ли обрабатывать сырой ввод, и вдруг есть какое-то условие или флаг из конфига, при котором произойдёт fallback, который сбросит обработку WM_INPUT на старые ивенты.

    PS. С ответа про обработку ввода через графические API поржал :D. Нормальная шутка, смешная.
    Ответ написан
    3 комментария
  • Что изучать для создания ботов на андроид-игры?

    TrueBers
    @TrueBers
    Гуглю за еду
    Есть 2 варианта:
    1) Реверсить игру, инжектиться в память, вытаскивать внутренние структуры и использовать их для бота.
    2) Писать на машинном зрении систему уровня автопилота Теслы.

    В первом варианте нужно потратить несколько тысяч человеко-часов на реверс игры, извлечение нужных ресурсов и написание самой системы. Нужно знать как работают ОС на низком уровне, отлично знать реверс-инжиниринг.

    Во втором: обмазаться лекциями каких-нибудь классических профессоров по этой тематике, тех же Andrew Ng и Sebastian Thrun. Изучить, как делается примитивный автопилот на машинном зрении, и пытаться применить его в боте.

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

    TrueBers
    @TrueBers
    Гуглю за еду
    Если вам нужно быстро и просто, не вдаваясь в дизассемблеры и реверс-инжиниринг, то пройдите туториал утилиты Cheat Engine. Там отлично и просто рассказано, как искать такие адреса.
    А дальше уже напишете свой сканер под это дело, если нужно.
    Ответ написан
    Комментировать
  • Какие наилучшие материалы по реверс-инжинирингу (игр)?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хоть и некропостинг, но уж наткнулся случайно. Раз уж помеченного ответа нет, отвечу, если ещё не забросили эту тему и не поломали пару онлайн игр =).

    Введение в крекинг с нуля Рикардо Нарвахи -- прекрасный курс. Написано очень подробно, куча полезных маст-хев трюков. Однозначно, курить! (если ещё не прошли)
    Все команды ассемблера знать, конечно, не нужно. Достаточно основных пары десятков, знать какие флаги меняют, какие операнды используются, и т. д. Остальные легко найти в Intel Software Developer Manuals.

    Из тулзов маст-хев OllyDbg в качестве отладчика, в нём удобно смотреть в реалтайме что там происходит, что-то изменять, колдовать, исследовать, находить ключевые точки для последующего реверса.

    Далее, когда уже найден какой-то ключевой поинт, в котором, кажется, кроется нужная фича, берём IDA Pro и в качестве дизассемблера/декомпилятора потихоньку реверсим алгоритм. Дальше нужно будет курить IDA Script или IdaPython для автоматизации рутинных действий.

    Также ещё довольно полезной фичей будет инструментация кода с помощью фреймворков типа Intel Pin Tool или DynamoRio. Но тут уже надо иметь скилл повыше, чем 2+2 в ассемблере, но результат стоит того.
    Ответ написан
    Комментировать