LINUX.ORG.RU

Hook в Линукс


0

0

Существует ли в линукс, что-нить на подобие виндовых хуков? киньте плиз пару ссылок на эту тему

anonymous

Заранее извиняюсь, если неправильно вопрос понял.

В ядре Windows нет хуков (официально; бэкдоры не в счет). Хуки есть в стандартных виндовых либах, работающих в юзер-спэйсе -- comdlg32.dll или что-то типа того.

Linux -- это ядро, и в нем, так же как и в ядре Windows, хуков нет (автозапуск ядром /sbin/init, /sbin/modprobe и т.п. -- это наверно не то что тебя интересует).

Если же речь идет о графической либе, работающей в юзер-спэйсе, то надо читать доку на эту либу. Если либа на С, то там может и нужны хуки. Если на С++, то поведение класса переопределяется его наследованием и переопределением в наследнике нужных виртуальных функций. И в том, и в другом случае нужно читать доку на конкретную либу.

Может быть, уточнишь вопрос?

nobody ★★
()
Ответ на: комментарий от nobody

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

anonymous
()
Ответ на: комментарий от anonymous

>Под хуками я понимал технику при помощи которой можно перехватывать оконные сообщения и другие события ситемы до того как они попадут окну адресату. класический пример клавиатурный шпион. Другими словами мне нужно получать все сообщения системы (адресованные не только моему приложению) - в винде это реализуется при помощи хуков либо перехвата API функций, а вот линуксе я не знаю, как это можно реализовать.

Дело в том что в Linux как это уже было сказано GUI не является частью "API" (если такие термины вам ближе)

Перехват клавиатурных сообщений в общем случае можно реализовать на уровне ядра (в Inet даже можно найти примеры на эту тему c примерами соответствующих LKM).

Если речь идет о X11

то на уровне Xt это всякие XGrab* и X*Hook*

см. http://www.xfree86.org/4.2.0/manindex3.html

sS ★★★★★
()
Ответ на: комментарий от anonymous

> мне нужно получать все сообщения системы

Не прокатит. AFAIK, заграбить в иксах можно только то, что не было заграблено кем-то раньше. Оконный манагер всяко-разно перехватывает клаву и/или крысу -- хотя бы некоторые кнопки/клики. Он стартует раньше твоей проги, а значит твоя прога обломится при попытке заграбить то же самое -- получит BadAccess и вылетит (если ты не перехватишь ошибки через XSetErrorHandler).

nobody ★★
()
Ответ на: комментарий от nobody

Всем спасибо! теперь понятно в какую сторону копать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.