Сейчас на форуме: bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Проблема с хуком мыши |
Посл.ответ | Сообщение |
|
Создано: 07 февраля 2011 18:31 · Личное сообщение · #1 На тему хуков масса примеров, я пробовал перехватывать WH_MOUSE и WH_MOUSE_LL. Код в DLL. Хук включаю из delphi формы на которой несколько кнопок. Цель в примере при клике на одну из кнопок с помощью хука менять координаты клика и попадать в другую кнопку. Интересует именно подмена координат при клике, а не фактическое попадание в какой либо элемент. Делал так: Code:
и так: Code:
В общем блокировать клики могу, а подменять координаты нет. В чём моя ошибка? |
|
Создано: 07 февраля 2011 21:14 · Личное сообщение · #2 |
|
Создано: 08 февраля 2011 00:29 · Личное сообщение · #3 Clerk пишет: По мойму этими хуками переполнен инет. Да, знаю, пробовал многое, но толку нету... Даже такой вариант не даёт результата. Клик приходит на контрол на котором его делаю... Code:
Clerk пишет: Реализуйте в ядре, максимально высокий уровень абстрагирования это захват RIT(ниже шадова идут IRP etc.). К сожалению в этом не силён... Мне бы включать/выключать такую штуку передавая смещения для x и y. В принципе только это и нужно. Своего рода все клики с учётом калибровки. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 февраля 2011 07:55 · Поправил: ELF_7719116 · Личное сообщение · #4 |
|
Создано: 10 февраля 2011 14:15 · Личное сообщение · #5 |
|
Создано: 12 февраля 2011 05:41 · Личное сообщение · #6 |
|
Создано: 20 февраля 2011 23:23 · Личное сообщение · #7 ToBad В шадове Low-level фильтр я описал: > В шадове обработка ввода от клавиатуры и мыши начинается в InputApc(), доставляемой асинхронно. Тут вызы > ваются базовые диспетчеры ProcessKeyboardInput() и ProcessMouseInput(). APC завершается рекурсивно в Sta > rtDeviceRead() -> NtReadFile(*InputApc). Диспетчеры описаны в описателях устройст ввода, это массив стру > ктур DEVICE_TEMPLATE(userk.h & ntinput.c) которые содержат ссылки на диспетчеры. Сами описатели располож > ены в секции данных Win32k. Оба диспетчера получают на вход структуру DEVICEINFO с сырым потоком данных. > Установка кейлоггера заключается в загрузке ссылок на свои диспетчеры(необходимая инфа для реализации в > DDK: ntddmou.h & ntddkbd.h). Переменная aDeviceTemplate может быть найдена через содержащиеся в ней ссыл > ки, например на GUID: GUID_DEVINTERFACE_KEYBOARD/GUID_DEVINTERFACE_MOUSE. Реализуется элементарно, проще даже чем винапишные хуки, но весьма эффективно - детекторы идут в топку Ниже чтото фильтравать смысла нет. Вот псевдокод для реализации: - Конвертим процесс в GUI для доступа к шадову в ядре вызвав любой теневой сервис, либо вручную сконвертировав тред в GUI. Также можно выполнить аттач к гуи-процессу(например тотже RIT выполняется в контексте csrss). - Ищем описадель девайса. Для этого находим в пределах проекции строку и ссылку на неё. - Загружаем в описатель ссылки на два наши менеджера(для потоков данных с клавы и мыши). - Профит, аверы нервно жуют галстук |
eXeL@B —› Программирование —› Проблема с хуком мыши |