Наверно каждый на своей волне. Или скорее моя волна низко волновом диапазоне.
Ну сейчас у меня проблема, что не работает не один из способов отправки клика(send,post, вчера мучал translate не знаю пока работает нет), в начале поста написано, что это из-за gameguarda который "блочич" winapiшные функции. И тут ты приводишь пример получения адреса функции обработчика сообщений, а дальше нам с ним, что делать? формировать структуру MSG и кидать ссылку на нее, куда?(это функция вроде должна брать события\евенты своим первым параметром). Вообщем я тут могу дойти до полной ахинеи, ибо не знаю внутренностей виндовс.
Поэтому моя мысль была проста, если предлагают получать адрес, наверно и есть функции помогающие записать нужное на этот адрес.
нет, я имел ввиду, что ты сам можешь вызвать их обработчик минуя всяческие API, т.е. наборы функций. Можешь через IDA просто посмотреть какую функцию дёргает оконная процедура для обработки кликов. Можешь дёргать сразу её. Таким образом ты минуешь все защиты, которые стоят ДО.
Цитата:
Сообщение от nonenicks
Ну если бы я писал набор функций для автокликера для с++ то, FindWindow() для поучения заголовка Handle_MyGame = FindWindow("My_Game", NULL), ну и PostMessage(); c аргументами wm_keydown(он же 0x0100), wm_keyup(он же 0x0101), и wm_char(он же 0x0102); PostMessage(Handle_MyGame, wm_keydown, 0x41, 0); 0x41 номер кнопки(смотреть анси2).
Для автокликера этого достаточно, если не брать в расчет защиты. Мож даже кому пригодится.
Ой,мышь забыл, завтра в обед допишу если оно кому интересно
понимаешь, первая же ссылка в гугле даст тебе готовое решение по кликеру. Эта же тема о защите, тут увы инфы мало.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Набор каких функций? Чтобы клики слать? Какой-то это неправильный подход к делу. Начнём с того, что твоё приложение не будет видеть окно игры. Дальше что? Чем тебе поможет набор функций для кликинга?
Dark, не совсем уверен, что мы об одном, но, пока искал кликеры, по твоему совету, заметил, что многие из них видят окно Арки, но события туда передать не могут. Протестил около 10 различных кликеров и макро-менеджеров, лишь на 2 из них ругнулся ГГ, остальные запустились без проблем. Но вот с передачей движения мыши или нажатия клавиши не справился ни один.
Таким образом, как я понял, для написания кликера под Арку наиболее важной задачей ставится обход ГГшных хуков: SendMessageA, DispatchMessageW, SendInput, PostMessageA, PostMessageW
nonenicks просто кликер тут не поможет. Надо писать решение, которое надолго вырубит ГГ или отведёт его глаза от того бесчинства, которое ты задумал.
Dark, не совсем уверен, что мы об одном, но, пока искал кликеры, по твоему совету, заметил, что многие из них видят окно Арки, но события туда передать не могут. Протестил около 10 различных кликеров и макро-менеджеров, лишь на 2 из них ругнулся ГГ, остальные запустились без проблем. Но вот с передачей движения мыши или нажатия клавиши не справился ни один.
Таким образом, как я понял, для написания кликера под Арку наиболее важной задачей ставится обход ГГшных хуков: SendMessageA, DispatchMessageW, SendInput, PostMessageA, PostMessageW
nonenicks просто кликер тут не поможет. Надо писать решение, которое надолго вырубит ГГ или отведёт его глаза от того бесчинства, которое ты задумал.
Так о том и речь, пару способов - изменить драйвер клавы(для меня не реально, перехадить со скриптовых языков, на написание драйверов), вытащить функцию из ddl user32, опять уровень бога. Найти исходники на x7 oscareditor, более реально. Еще вроде есть мифические исходники на windows, можно оттуда вытащить эти функции.
Вот дарк еще предложил, в принципе вариант попроще, Но метод получается не универсальный + нужно знание ассемблера + опыт взлома, знание языка с вставками ассемблера.
Вообщем все варианты не для любителя, только профи, только хардкор. Что ж, надежда умирает последней.
Недавно видел, продают за 2000р длл + usb физическое устройство, там реализованы мышь+клава. Получается тотже OscarEditor только дороже и возможностей чуть более. Да и самопаянный usb device внушает опасения. Если бы прикрутить MemoryOpen\Read\Write, и пару функций типа GetPixel, то это уже был бы товар. Можно попробовать поискать.
Добавлено через 48 минут
Цитата:
Сообщение от Тигрь
ну так для начала сам посмотри тот видос который ты тут скидывал.
Смотрел конечно, там с 3 видео начинают пропускать часть лекций. И переходят wasm кодингу. Не откажусь от книги по программированию в виндовс, где затрагивается тема взаимодействия приложений. Хотя конечно понимаю, что тема сложна и врятле описана в одной книге. Это как минимум библиотека книг, жаль нету этой самой библиотеки в форме уроков от а до я от 1ого автора или группы. Вот по этому я и предложил смотреть лекции от институтов, чем сча и занимаюсь. Но опять там пропускают часть лекций, не полная подача, но покрайнемере информация имеет поступательную форму.
Добавлено через 1 час 36 минут
Цитата:
Сообщение от dark
нет, я имел ввиду, что ты сам можешь вызвать их обработчик минуя всяческие API, т.е. наборы функций. Можешь через IDA просто посмотреть какую функцию дёргает оконная процедура для обработки кликов. Можешь дёргать сразу её. Таким образом ты минуешь все защиты, которые стоят ДО.
понимаешь, первая же ссылка в гугле даст тебе готовое решение по кликеру. Эта же тема о защите, тут увы инфы мало.
Спасибо. Ты принижаешь значение советов всем очевидных вещей. Люди разные и возможно именно твое изложение станет понятным. Про защиту в гугле стало чуть больше, способ ты предложил достаточно простой, хоть и "процитировал" заглавие учебника о win приложений, но с твоим изложением стало жить веселее.
Последний раз редактировалось nonenicks; 05.02.2016 в 01:01.
Причина: Добавлено сообщение
Во-первых, хуки ты можешь обходить.
Во-вторых, ты можешь получить адрес функции обработчика оконных сообщений (допустим, через хук RegisterClass/SetWindowLong или вручную через хук DefWindowProc), а там уже свобода творчества с самописным кликером.
В-третьих, можешь тупо сделать свой хайдер. Если собираешься не бросать читерство, то он при любом раскладе пригодится. Это простая длль, которая хукает все возможные функци с помощью которых можно найти твой процесс.
Но имхо, тебе будет проще тупо поменять кликер.
Изучил я тут на минимальном уровне с++ , чутка winapi и вытащил таки адрес WinProc, попытка вызвать ее через CallWindowProc приводит к крашу системы =/ Что вроде как естественно ибо из чужого процесса ее не вызвать =/
Есть, ли способ попроще вызвать обработчик? Или ссылка где способ описан.
Как я понял из гугла, надо внедрятся в процесс и изнутри вызывать обработчик. Но геймгвард вроде проверяет целостность кода?
Вот пример кстати 2007 года обхода хука похожий на твой, он рабочий? начну курить его вместе с твоим, мож че и выйдет.
Изучил я тут на минимальном уровне с++ , чутка winapi и вытащил таки адрес WinProc, попытка вызвать ее через CallWindowProc приводит к крашу системы =/ Что вроде как естественно ибо из чужого процесса ее не вызвать =/
Есть, ли способ попроще вызвать обработчик? Или ссылка где способ описан.
Как я понял из гугла, надо внедрятся в процесс и изнутри вызывать обработчик. Но геймгвард вроде проверяет целостность кода?
ну и пусть проверяет
ты же не меняешь чужой код, а вызываешь чужую инструкцию
с инжектом своей длл (или своего кода) там тоже проблем нет. Для этого в первом посте есть всё необходимое
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
ну и пусть проверяет
ты же не меняешь чужой код, а вызываешь чужую инструкцию
с инжектом своей длл (или своего кода) там тоже проблем нет. Для этого в первом посте есть всё необходимое
не всегда обработка клавиатуры может быть в обработчиках от оконной процедуры.
__asm
{
mov edi,edi
push ebp
mov ebp,esp
jmp dword ptr ds:[_si]
}
}
Принципиально сколько функция отправляет и принимает параметров? и разница в 64 и 32 битной системе принципиальна?
просто __declspec(naked) для 32 битных, а я вызываю через CALLBACK* который вроде просто меняет вхождения параметров в стек. Пока тестил на Фросте ибо геймгварда нет, на фросте не пашет=/
Я как для себя понимаю, что мы вызываем функцию с + 5 смещение по адресу, потом выходя из функции возвращаем наше смещение на 5 назад.
Вот так, в принципе работает если не ставить смещение + 5
typedef UINT(CALLBACK* LPFNDLLFUNC1)(HANDLE, UINT, WPARAM, LPARAM);
ну и далее по коду (LPFNDLLFUNC1)SCP
Не умею сворачивать текст в сообщение весь код поостерегусть ставить.