Гость Dupper Опубликовано 25 сентября, 2018 Поделиться Опубликовано 25 сентября, 2018 Приветствую всех! Решил для игрушки написать автохила и автоэнергии(маны). Суть в том чтобы при снижении N - количества прожимался скилл/банка. Указатели и оффсеты на здоровье и энергию/ману нашел. Как найти "подобие активации скилла(спелла) через запись памяти, дабы исключить нажатие клавишь. Ах да, игра чует отладчик и при малейшей попытке зависает и закрывается. (Windows 10, CE 6.8.1). У кого другая система(Win Xp, Win7 и др.) отпишитесь , как ваша игра реагирует на отладчик. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 25 сентября, 2018 Поделиться Опубликовано 25 сентября, 2018 (изменено) 1 час назад, Dupper сказал: Как найти "подобие активации скилла(спелла) через запись памяти Искать обработчик нажатия клавиш, это оптимальный вариант, только если умеешь реверсить. Не известно как разработчик решил её сделать, может использовал GetKeyState или Спойлер switch (message) { case WM_KEYUP: case WM_KEYDOWN: switch (wParam) { case VK_LEFT: ... case WM_KEYDOWN: switch (wParam) { case VK_LEFT: ... case WM_CHAR: switch (wParam) { case VK_LEFT: ... Это все проверять надо, а если не повезет, то придется через потоки искать функцию обрабатывающую нажатия клавиш. Если все же хочешь через память делать, можешь попробовать зажимать клавиши и искать неизвестное, отпускаешь клавишу - изменилось и продолжаешь, пока не найдешь что-нибудь (главное зажимать 1 клавишу, возможно у каждой клавиши свой адрес, который просто получает её состояние). Возможно повезет. В разы проще будет использовать SendInput. Изменено 25 сентября, 2018 пользователем Garik66 Любой код, цитата и прочее - должны быть обернуты специальными тэгами. Кроме того, если фрагмент кода достаточно большой (более 10 строк кода), то его необходимо также обернуть тэгом спойлера (скрытый текст). Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Dupper Опубликовано 25 сентября, 2018 Поделиться Опубликовано 25 сентября, 2018 (изменено) Использую на данный момент AutoIT, там есть функция ControlSend , т.е. как я понял отправить команду окну. Всё работает если игра открыта в окне и не свернута. Стоит свернуть и ничего не работает. Может это особенность игры "замораживаться" в свернутом состоянии, но это отдельная тема как я понимаю. Но если кто сталкивался и решил подобную проблему по "заморозке" ?)) Изменено 25 сентября, 2018 пользователем Dupper Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 25 сентября, 2018 Поделиться Опубликовано 25 сентября, 2018 Вполне вероятно, что в игре используется DirectInput, а он не реагирует на нажатия, если окно игры не активно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Dupper Опубликовано 29 сентября, 2018 Поделиться Опубликовано 29 сентября, 2018 В 25.09.2018 в 21:11, Xipho сказал: Вполне вероятно, что в игре используется DirectInput, а он не реагирует на нажатия, если окно игры не активно. ? это никак не обойти? Гугл к сожалению умалчивает ☹️ Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 30 января, 2020 Поделиться Опубликовано 30 января, 2020 Так, что нибудь придумали? Я пробовал в одной игре искать нажатия клавиш и чёт такое себе это дело ( Может кто знает куда более лучший способ поиска обработчика нажатия клавиш? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 30 января, 2020 Поделиться Опубликовано 30 января, 2020 В 29.09.2018 в 09:35, Dupper сказал: это никак не обойти? Почему же никак? Выясняешь, какие функции отвечают за нажатия клавиш в директинпут, инжектишься в игру и вызываешь эти функции Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 30 января, 2020 Поделиться Опубликовано 30 января, 2020 57 минут назад, Xipho сказал: Почему же никак? Выясняешь, какие функции отвечают за нажатия клавиш в директинпут, инжектишься в игру и вызываешь эти функции А без инжекта можно? Ведь по любому где то да проходит обработка событий нажатия клавиши. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 14 часов назад, CrazyNeron сказал: Ведь по любому где то да проходит обработка событий нажатия клавиши. Да. Внутри приложения. Там и нужно его отлавливать и/или имитировать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 14 часов назад, CrazyNeron сказал: А без инжекта можно? А как ты без инжекта будешь создавать поток, вызывающий нажатия клавиш внутри игры? Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 57 минут назад, Xipho сказал: А как ты без инжекта будешь создавать поток, вызывающий нажатия клавиш внутри игры? Ну вообще я представляю это как значение которое хранится в памяти игры, при изменении которого игра должна отреагировать, но похоже я заблуждаюсь, ведь значение нажатия клавиши может и не хранится в памяти как я понимаю. Ну вообще как я понимаю, самый хороший способ, это вызывать внутриигровые функции с аргументами, которые и будут выполнять те или иные действия в игре, но вот тут сразу возникает 2 вопроса, первый как найти такие функции, второй как вызвать такую функцию без инжекта в игру? (Разве такое не возможно?) И была у меня ещё одна идея касательно инжекта, а что если брать какую либо незначительную функцию и заменять её в памяти на нужную тебе, а после возвращаться всё наместо, но мне кажется это очень сложно и может с лёгкостью спровоцировать вылет игры. (Типо не инжект своего кода в игра, а замена сигнатуры на свою и возврат потом назад, той что была.) Не ужели даже cheat engine, что бы считать память что то инжектит в игру? Если да, то я явно многое ещё не понял и попросил бы мне тогда подкинуть список литературы, что бы понимать, что к чему. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 1 час назад, Xipho сказал: А как ты без инжекта будешь создавать поток Силой мысли.. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 2 часа назад, Xipho сказал: А как ты без инжекта будешь создавать поток, вызывающий нажатия клавиш внутри игры? CreateRemoteThread/CreateRemoteThreadEx? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 6 часов назад, partoftheworlD сказал: CreateRemoteThread/CreateRemoteThreadEx Это да, но как ты без инжекта выяснишь девайс, который нужно будет передавать в функцию отправки клавиш DirectInput, я больше про это. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 января, 2020 Поделиться Опубликовано 31 января, 2020 А, вообще, конечно, все сильно зависит от конкретной игры, и нужно смотреть. Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 1 февраля, 2020 Поделиться Опубликовано 1 февраля, 2020 Мне так никто и не ответил ( Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 2 февраля, 2020 Поделиться Опубликовано 2 февраля, 2020 Мне кажется, тебе ответили. Ищи обработчик нажатия клавиш в игре. Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 2 февраля, 2020 Поделиться Опубликовано 2 февраля, 2020 2 часа назад, Xipho сказал: Мне кажется, тебе ответили. Ищи обработчик нажатия клавиш в игре. Как его искать? Ссылка на комментарий Поделиться на другие сайты Поделиться
KRYPTOPUNK Опубликовано 4 февраля, 2020 Поделиться Опубликовано 4 февраля, 2020 (изменено) В 02.02.2020 в 14:25, CrazyNeron сказал: Как его искать? Пожалуйста, изучай. А вообще, я не понимаю, зачем тебе именно прожимать банку, если ты можешь сделать условие и просто ставить или складывать значение в памяти? Зачем усложнять? Изменено 4 февраля, 2020 пользователем KRYPTOPUNK что бы не дублировать сообщения Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 5 февраля, 2020 Поделиться Опубликовано 5 февраля, 2020 А еще можно найти указатель на хп и выставить банку на клавишу Потом читать хп и если оно меньше твоего установленного %, отправлять игре Sendmassage c нажатием клавиши на которой установлена банка Это самый просто вариант, максимально простой Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 5 февраля, 2020 Поделиться Опубликовано 5 февраля, 2020 4 часа назад, roma912 сказал: отправлять игре Sendmassage Если игра использует DirectInput или XInput, то она проигнорирует сообщение нажатия клавиши. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
CrazyNeron Опубликовано 15 февраля, 2020 Поделиться Опубликовано 15 февраля, 2020 CRYPTOPUNK спасибо прочитаю, а вот тут заинтересовал как именно ставить или складывать значения в памяти? Просто я тебе объясню в чём тут дело, я делаю бота для онлайн игры и эмуляцию нажатия клавиш она воспринимает но оставлять комп тупо, что бы бот работал не айс пользоваться тоже охота, то есть игру свернуть и заниматься своими делами, а игра пусть сама играет, да указатели на здоровья и прочее я нашёл, а вот что дальше делать? Ну эмуляцию могу сделать, но вот если бы ты мне подсказал как это должно выглядеть в игре, что я ставлю значение или складываю и банка юзается, я бы был тебе очень благодарен. Ссылка на комментарий Поделиться на другие сайты Поделиться
XAMAC Опубликовано 29 марта, 2020 Поделиться Опубликовано 29 марта, 2020 Если это ммо, то в таком случае ты можешь отследить пакеты которые отправляются на сервер когда игрок прожимает банку с хп. В дальнейшем пишем проверку хп, если ниже указнного отправляем пакеты на сервер. Можешь взглянуть на какие нибудь исходники ботов использующих пакеты в л2 например. Если речь идет о боте который в пасивном режиме что то делает, то придеться либо работать с пакетами либо с памятью. Эмуляция клавиш не подходит, потому что окно окажется неактивным и эмуляция будет уходить в некуда. можно попробовать отреверсить и найти функции которые отвечают за использование тех или иных действий, самое простое нати функцию передвижения например что то вроде "MoveTo" в дальнейшем ты сможешь отправлять своего персонажа куда угодна вне зависимости от нажатий клавиш или открытого окна. Однако тут вопрос безопастности. Безопасная эмуляция или опасные игры с функциями и памятью. В первом случае получаем тупого бота, которому требуется открытое окно, пиксельного бота можно написать за пару часов. С другой сторны ты становишься богом но получаешь вероятность оказаться забаненым. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения