Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.042 c
3-1178180931
DmitrichJ
2007-05-03 12:28
2007.08.19
Инсталлер InterBase 6. Как создать?


2-1184993975
CMOS
2007-07-21 08:59
2007.08.19
Организация множества


2-1185023525
NewZ
2007-07-21 17:12
2007.08.19
Как определить что над одним объектом находится другой?


3-1177591691
Jeer
2007-04-26 16:48
2007.08.19
Многомерные кубы


15-1184917274
tradakad_
2007-07-20 11:41
2007.08.19
лицензия Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский