Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

Перехват клавиатуры   Найти похожие ветки 

 
Dmitry_177   (2007-05-28 20:11) [0]

Вот интересно.. перехват клавиатуры можно осуществить хуком сообщений WH_KEYBOARD или WH_KEYBOARD_LL..

А если нужно перехватывать клавиатуру путем перехвата API функции? Какую функцию следует перехватывать?


 
JanMihail ©   (2007-05-28 20:27) [1]

RegisteredHotKey()
UnregisteredHotKey()


 
Dmitry_177   (2007-05-28 21:42) [2]


> RegisteredHotKey()
> UnregisteredHotKey()

Ведь это же для "горячих" кнопок.. а мне вообще нужно для всех, пусть хоть в блокнопе пользователь пишет текст.. а мне нужен перехват.. так вот есть ли какая-нибудь API функция которую можно перехватывать?


 
Сергей М. ©   (2007-05-29 09:54) [3]


> Dmitry_177   (28.05.07 21:42) [2]


Установка хука по сути и есть перехват.
Чем он тебя не устраивает ?


 
Dmitry_177   (2007-05-30 00:48) [4]

Сергей М. я имел ввиду в режиме Ring0


 
Германн ©   (2007-05-30 00:51) [5]


> Dmitry_177   (30.05.07 00:48) [4]
>
> Сергей М. я имел ввиду в режиме Ring0
>

А ты знаешь хоть одну API-функцию, которая способна там работать?


 
Dmitry_177   (2007-05-30 02:48) [6]

Нет не знаю... =)

Но перехватывать можно.. может NativeAPI есть какая-нибудь которая вызывается каждый раз при нажатии на клавиатуре?


 
Германн ©   (2007-05-30 02:54) [7]


> Dmitry_177   (30.05.07 02:48) [6]
>
> Нет не знаю... =)
>
> Но перехватывать можно.. может NativeAPI есть какая-нибудь
> которая вызывается каждый раз при нажатии на клавиатуре?
>

Может опишешь простым языком - что тебе нужно?


 
Dmitry_177   (2007-05-30 02:59) [8]

мне нужно осуществить перехват нажатий клавишь в Ring0, вот я и спросил есть ли какая-нибудь API или NativeAPI функция, которую нужно для этого перехватывать?


 
Германн ©   (2007-05-30 03:06) [9]


> Dmitry_177   (30.05.07 02:59) [8]
>
> мне нужно осуществить перехват нажатий клавишь в Ring0,
> вот я и спросил есть ли какая-нибудь API или NativeAPI функция,
>  которую нужно для этого перехватывать?
>

В нулевом кольце, имхо, такое можно реализовать только драйвером. И API-функции тут, имхо, "идут лесом".

А свою задачу ты так и не описал. Зачем тебе нужна работа именно в Ring0?


 
Сергей М. ©   (2007-05-30 08:08) [10]


> мне нужно осуществить перехват нажатий клавишь в Ring0


Аргументы-то какие за Ring0 ?


 
Dmitry_177   (2007-05-30 12:42) [11]

Естественно нужно писать драйвер.. Задача: кеулоггер в Ring0


 
Сергей М. ©   (2007-05-30 13:28) [12]


> Dmitry_177   (30.05.07 12:42) [11]


> кеулоггер в Ring0


Вот же тебя блажь посетила)

Да почему обязательно в режиме ядра ? Чем же пользовательский режим не устраивает ? Ведь WH_KEYBOARD_LL как раз и предназначен для мониторинга "клаводвижений" в Ring3 !
Что такого экстраординарного ты ожидаешь увидеть в Ring0, чего нельзя увидеть в Ring3 ?


 
Anatoly Podgoretsky ©   (2007-05-30 13:54) [13]

> Сергей М.  (30.05.2007 13:28:12)  [12]

Он расчитывает, что его не увидят


 
Dmitry_177   (2007-05-30 14:39) [14]


> Он расчитывает, что его не увидят

и это тоже =)


 
Сергей М. ©   (2007-05-30 14:58) [15]


> Dmitry_177   (30.05.07 14:39) [14]
>
>


Бородатый анекдот про неуловимого Джо, надеюсь, знаешь ?)


 
Dmitry_177   (2007-05-30 15:07) [16]

Если я спросил значит мне это интересно.. И зачем отговаривать меня это делать.. Неужели никто не знает как перехватывать клавиатуру в Ring0?


 
Rouse_ ©   (2007-05-30 15:11) [17]


> Германн ©   (30.05.07 03:06) [9]
> В нулевом кольце, имхо, такое можно реализовать только драйвером.
>  И API-функции тут, имхо, "идут лесом".

Т.е. RtlInitUnicodeString() уже перестало быть апи?


 
Германн ©   (2007-05-30 15:14) [18]


> Т.е. RtlInitUnicodeString() уже перестало быть апи?

Значит мой опиньен слишком хамблистый :)


 
Сергей М. ©   (2007-05-30 15:14) [19]


> Dmitry_177   (30.05.07 15:07) [16]


> Если я спросил значит мне это интересно


Ну раз тебе интересно, то иди на wasm.ru - там найдешь то что ищешь.


 
oxffff ©   (2007-05-30 15:28) [20]


> Dmitry_177   (30.05.07 15:07) [16]
> Если я спросил значит мне это интересно.. И зачем отговаривать
> меня это делать.. Неужели никто не знает как перехватывать
> клавиатуру в Ring0?


Открой дружок DDK и почитай про драйвера для клав и мышь.


 
oxffff ©   (2007-05-30 15:30) [21]

Смотри в сторону HID


 
Rouse_ ©   (2007-05-30 15:42) [22]


> Неужели никто не знает как перехватывать клавиатуру в Ring0?

Назначить обработчик на IRP_MJ_INTERNAL_DEVICE_CONTROL. в нем по приходу IOCTL_INTERNAL_KEYBOARD_CONNECT в IRP стеке придет структура CONNECT_DATA в (Parameters.DeviceIoControl.Type3InputBuffer), в ней переназначаешь ClassService на свой KeyboardClassServiceCallback вида
   VOID  KeyboardClassServiceCallback (    
       IN PDEVICE_OBJECT  DeviceObject,    
       IN PKEYBOARD_INPUT_DATA  InputDataStart,    
       IN PKEYBOARD_INPUT_DATA  InputDataEnd,    
       IN OUT PULONG  InputDataConsumed    );
.  
После чего к тебе пойдет IOCTL_INTERNAL_I8042_HOOK_KEYBOARD. Теперь в Type3InputBuffer будет идти структура INTERNAL_I8042_HOOK_KEYBOARD.
Тебе нужно переопределить контекст устройства на свой и заменить InitializationRoutine (которе будет отвечать за инициализацию - что не обязательно, но вдруг тебе понадобится создавать выделять допбуффера или т.п.) и непосредственно IsrRoutine в который будут приходить данные.
В DDK идет пример простого клавиатурного фильтра.


 
oxffff ©   (2007-05-30 15:47) [23]

To Rouse_ ©  
Следующий вопрос будет, что такое IRP пакет, IRP стек, ISR, IRQL, Spinlock и т.д.


 
Rouse_ ©   (2007-05-30 15:50) [24]

Следующий ответ будет отправкой в район DDK :)


 
oxffff ©   (2007-05-30 15:51) [25]

Открывай DDK и Соломона,Руссиновича. Там есть все.
Или Oney, Walter Programming the Microsoft Windows Driver Model


 
Dmitry_177   (2007-05-30 18:19) [26]


> Назначить обработчик на IRP_MJ_INTERNAL_DEVICE_CONTROL.


Я так подумал.. может лучше IRP_MJ_READ и не забыть про IoSetCompletionRoutine?


 
Dmitry_177   (2007-05-30 19:42) [27]

Или еще лучше, сделать перехват PeekMessage и GetMessage, а там смотреть WM_KEYDOWN =)


 
Rouse_ ©   (2007-05-30 19:53) [28]


> IRP_MJ_READ и не забыть про IoSetCompletionRoutine?

какие еще умные слова ты знаешь?:)


 
Dmitry_177   (2007-05-30 20:22) [29]

А что насчет этого?

> Или еще лучше, сделать перехват PeekMessage и GetMessage,
>  а там смотреть WM_KEYDOWN?


 
Rouse_ ©   (2007-05-30 21:21) [30]


> Dmitry_177   (30.05.07 20:22) [29]
> А что насчет этого?

WH_KEYBOARD_LL даст тебе то-же...


 
имя   (2007-06-12 16:51) [31]

Удалено модератором


 
имя   (2007-06-12 16:52) [32]

Удалено модератором


 
имя   (2007-06-12 16:52) [33]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2007.08.19;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.047 c
15-1184915044
Nic
2007-07-20 11:04
2007.08.19
Paradox : нужно ли ставить на компьютер BDE?


3-1177999034
Nemec
2007-05-01 09:57
2007.08.19
TService и доступ к базе данных


3-1178274065
Sapos
2007-05-04 14:21
2007.08.19
Добавление записей.


3-1178164046
Slider007
2007-05-03 07:47
2007.08.19
Транзакции в FireBird


15-1185115628
Rubagl
2007-07-22 18:47
2007.08.19
Книга "Delphi. Готовые алгоритмы. " Нужны исходники.