Всем привет! нужно написать каким то способом программу эмулирующую нажатие левой клавиши мыши. Все не так просто я писал такие программы с помощью API но дело в том что эта программа должна кликать по окну игры. На игре стоит куча защит и обычные api функции тут не работают. если вырубить игру то функци api снова позволяют эмулировать нажатие а как загрузиш все перестает работать. мне рассказывали что это можно осуществить с помощью "прерываний" типа int 33h но я не нашел нужного кода на нажатие клавиши, нашел только на считывание состояния клавиш но это не то я пока вижу только один способ это осуществить взять программу MouSpy из статьи "Драйверы режима ядра: Часть 16 : Драйвер-фильтр (не PnP)" http://www.wasm.ru/article.php?article=drvw2k16 и переделать на свой лад) но дело в том что я не такой хардкорный программист пока начинаю читать эту серию статьей про драйверы и понимаю что я ничего не понимаю) можете помоч в написаннии кода или хоть ссылкой на литературу где чуть проще все сказанно. я прост никогда не писал драйверы и мало понимаю в устройстве ядра все ограничивалось максимум обращением к api. у меня конечно есть еще вариант купить схемку имитирующую lpt порт и подрубить вторую мышь чтоб через порт кликать по мышке программно но неужели нет другого выхода ?
Как вариант снять защиту. Всё зависит от защиты конечно, но скорее всего в любом случае нужны знания ринг0.
скорее всего все обходится из ring3, надо просто немного поюзать ольку и IDA и вообще, кликеры - это нубство.
Ребят там несколько степеней защиты гейм гуард Frost и еще пара плюшек от инновы. Не знаю как вам, а мне такую защиту лет 10 ломать... немного погуглив узнал что такое ring3 и ring0 =) (4-уровня привелегий) у меня остался тока один вопрос: можете подсказать литературу или ссылку чтоб с моего уровня ассемблера при котором я работаю со стеком и регистрами (в общем уровень 2 статьи "Низкоуровневое программирование для дZенствующих") дорости до уровня ring0 с минимальными потерями времени и нервов? =) буду очень благодарен любому ответу)
Привет! 2 skyman000 Боюсь мой ответ будет не очень информативен, но просто тема близка, гейм гуард Frost иннова... гы-гы будем считать какая игра - понятно Вообщем, решал аналогичную задачу только с клавой. Увы, не решил. Никакие медоды посылки сообщений из юзер-морды не прокатывают. Факт. В юзер-морде окну лине-эээ... игры может посылать только одна прога: экранная клавиатура, osk.exe (кстати простым SendInput-ом). Насколько я понял, ей можно из-за цифровой подписи, которую защита проверяет. Но очень глубоко я не копал, не поручусь. Я пробовал внедрять код генерирующий нажатие в процесс osk.exe (получилось в адресном пространстве одной из его(её?) dll), со всеми программами всё ок, при запущенной игре - вылет osk с ошибкой. Вот такие пироги. По поводу драйвера копай в сторону добавления своего фильтра мыши/клавы. Хотя, применительно к данной проблеме то-же всё непросто. Есть указания на решение для PS/2 клав, для USB не нашёл. А некоторые пишут, что мол делали и не прокатывает. Вообщем, наткнёшся на что-нибудь, отпиши плиз? Относительно дык, тут-же на сайте отличный цикл: "СТАТЬИ > Секреты Win32 > Драйверы режима ядра" http://www.wasm.ru/publist.php?list=21 Удачи! З.Ы. Кстати, задачу мы решили железячно, путем переделки старой клавы. За что мне как кодеру, жутко стыдно )))
Привет icew0rm! Чесно говоря у меня сейчас оч мало времени и желания чтоб сидеть и копаться с ring3 и ring0 т.д. Статьи я эти читаю все по немного, но решить проблему надо сейчас а не через 5 лет. Поэтому я тоже нашел "железячное" решение. Распотрошил старую Usb мышку к контактам левой кнопки подрубил 2 вывода оптопары, оставшиеся 2 контакта оптопары от фототранзистора подрубил к Lpt порту и теперь щелкаю мышкой сколько угодно. Хорошо что эти фросты и гуарды не блочат перемещение мышки по экрану а то пришлось бы к мышке еще сервопривод прикручивать))) З.Ы. Мне так же как и вам использовать такой метод весьма стыдно =)