эмуляция нажатия клавиш без API

Тема в разделе "WASM.BEGINNERS", создана пользователем skyman000, 17 июл 2010.

  1. skyman000

    skyman000 New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    8
    Всем привет!

    нужно написать каким то способом программу эмулирующую нажатие левой клавиши мыши.
    Все не так просто :) я писал такие программы с помощью API но дело в том что эта программа должна кликать по окну игры. На игре стоит куча защит и обычные api функции тут не работают.

    если вырубить игру то функци api снова позволяют эмулировать нажатие а как загрузиш все перестает работать.

    мне рассказывали что это можно осуществить с помощью "прерываний" типа int 33h
    но я не нашел нужного кода на нажатие клавиши, нашел только на считывание состояния клавиш но это не то

    я пока вижу только один способ это осуществить
    взять программу MouSpy из статьи
    "Драйверы режима ядра: Часть 16 : Драйвер-фильтр (не PnP)"
    http://www.wasm.ru/article.php?article=drvw2k16

    и переделать на свой лад) но дело в том что я не такой хардкорный программист пока :) начинаю читать эту серию статьей про драйверы и понимаю что я ничего не понимаю)

    можете помоч в написаннии кода или хоть ссылкой на литературу где чуть проще все сказанно.
    я прост никогда не писал драйверы и мало понимаю в устройстве ядра все ограничивалось максимум обращением к api.

    у меня конечно есть еще вариант купить схемку имитирующую lpt порт и подрубить вторую мышь чтоб через порт кликать по мышке программно но неужели нет другого выхода ?
     
  2. vover

    vover Владимир

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    202
    Как вариант снять защиту. Всё зависит от защиты конечно, но скорее всего в любом случае нужны знания ринг0.
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    скорее всего все обходится из ring3, надо просто немного поюзать ольку и IDA

    и вообще, кликеры - это нубство.
     
  4. skyman000

    skyman000 New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    8
    Ребят там несколько степеней защиты гейм гуард Frost и еще пара плюшек от инновы.
    Не знаю как вам, а мне такую защиту лет 10 ломать...

    немного погуглив узнал что такое ring3 и ring0 =) (4-уровня привелегий)

    у меня остался тока один вопрос:
    можете подсказать литературу или ссылку чтоб с моего уровня ассемблера при котором я работаю со стеком и регистрами
    (в общем уровень 2 статьи "Низкоуровневое программирование для дZенствующих")
    дорости до уровня ring0 с минимальными потерями времени и нервов? =)

    буду очень благодарен любому ответу)
     
  5. icew0rm

    icew0rm New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2010
    Сообщения:
    7
    Привет!

    2 skyman000

    Боюсь мой ответ будет не очень информативен, но просто тема близка, гейм гуард Frost иннова... гы-гы будем считать какая игра - понятно :)

    Вообщем, решал аналогичную задачу только с клавой. Увы, не решил.
    Никакие медоды посылки сообщений из юзер-морды не прокатывают. Факт.
    В юзер-морде окну лине-эээ... игры может посылать только одна прога: экранная клавиатура, osk.exe (кстати простым SendInput-ом). Насколько я понял, ей можно из-за цифровой подписи, которую защита проверяет. Но очень глубоко я не копал, не поручусь.
    Я пробовал внедрять код генерирующий нажатие в процесс osk.exe (получилось в адресном пространстве одной из его(её?) dll), со всеми программами всё ок, при запущенной игре - вылет osk с ошибкой. Вот такие пироги.

    По поводу драйвера копай в сторону добавления своего фильтра мыши/клавы. Хотя, применительно к данной проблеме то-же всё непросто. Есть указания на решение для PS/2 клав, для USB не нашёл. А некоторые пишут, что мол делали и не прокатывает. Вообщем, наткнёшся на что-нибудь, отпиши плиз?

    Относительно
    дык, тут-же на сайте отличный цикл: "СТАТЬИ > Секреты Win32 > Драйверы режима ядра"
    http://www.wasm.ru/publist.php?list=21

    Удачи!

    З.Ы. Кстати, задачу мы решили железячно, путем переделки старой клавы. За что мне как кодеру, жутко стыдно ;))))
     
  6. skyman000

    skyman000 New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    8
    Привет icew0rm!

    Чесно говоря у меня сейчас оч мало времени и желания чтоб сидеть и копаться с ring3 и ring0 т.д.
    Статьи я эти читаю все по немного, но решить проблему надо сейчас а не через 5 лет.

    Поэтому я тоже нашел "железячное" решение. Распотрошил старую Usb мышку к контактам левой кнопки подрубил 2 вывода оптопары, оставшиеся 2 контакта оптопары от фототранзистора подрубил к Lpt порту и теперь щелкаю мышкой сколько угодно.

    Хорошо что эти фросты и гуарды не блочат перемещение мышки по экрану а то пришлось бы к мышке еще сервопривод прикручивать)))

    З.Ы. Мне так же как и вам использовать такой метод весьма стыдно =)