JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
UNIXOID<br />
Денис Колисниченко dhsilabs@mail.ru<br />
D -Bus<br />
Õîçÿèí öèôðîâîé<br />
ìàãèñòðàëè<br />
Òîòàëüíûé êîíòðîëü ïðèëîæåíèé ñ ñèñòåìîé D-Bus<br />
Используя межпрограммный интерфейс D-Bus, можно управлять<br />
поведением любого современного графического Linux-приложения извне<br />
— из своих скриптов или повесив нужное действие на сочетание клавиш.<br />
В этой статье мы рассмотрим несколько полезных трюков с D-Bus, которые<br />
пригодятся любому пользователю.<br />
ВКРАТЦЕ О D-BUS<br />
Чтобы ты понимал, о чем идет речь, нужно<br />
разобраться, как работает D-Bus, и что это вообще<br />
такое. Сразу предупреждаю, сейчас будет<br />
немного скучно. Но без теории никак. Иначе<br />
вместо того, чтобы практически использовать<br />
D-Bus, ты ограничишься только трюками из<br />
этой статьи.<br />
D-Bus — это система межпроцессного взаимодействия,<br />
которая обеспечивает тесную<br />
связь десктопных приложений между собой,<br />
и связь между десктопными приложениями<br />
и системными сервисами. Например, через<br />
D-Bus программы могут узнать о наличии/<br />
отсутствии сети у Network Manager'а; твой музыкальный<br />
плеер переключится на следующий<br />
трек и сообщит IM-клиенту название композиции,<br />
причем твои собеседники увидят ее у<br />
096<br />
тебя в статусе; рабочий стол сменит фоновую<br />
картинку; все окна с рабочих столов выстроятся<br />
в режиме scale; автоматически подмонтируется<br />
вставленное USB-устройство (даже если нет<br />
прав рута, связка HAL + D-Bus + pmount) и т.д.<br />
Что интересно, D-Bus не зависит от конкретной<br />
среды (KDE, GNOME, Xfce…), но при этом прекрасно<br />
интегрируется в каждую из них.<br />
В основе структуры D-Bus лежит понятие<br />
шины. Это специальный механизм, с помощью<br />
которого процессы обмениваются данными.<br />
Первая и самая главная — системная шина,<br />
создается при запуске демона D-Bus, используется<br />
для «общения» различных демонов и<br />
практически недоступна для пользовательских<br />
приложений. Сессионная шина, наоборот,<br />
создается для пользователя, вошедшего в систему<br />
— по ней будут «общаться» приложения, с<br />
которыми работает пользователь. Для каждой<br />
сессионной шины запускается отдельная копия<br />
демона.<br />
У каждого сообщения, передаваемого по<br />
шине, есть отправитель и получатель. Адреса<br />
отправителя и получателя называются путями<br />
объектов, то есть D-Bus предполагает, что каждое<br />
приложение состоит из набора объектов, а<br />
сообщения пересылаются не между приложениями,<br />
а между объектами приложений.<br />
У каждого объекта может быть один или более<br />
интерфейсов. Интерфейсы представлены в<br />
виде именованных групп методов и сигналов,<br />
как в интерфейсах Glib, Qt и Java.<br />
D-Bus предусматривает собственную концепцию<br />
сервисов. Сервис — это уникальное<br />
местоположение приложения на шине. При<br />
запуске программа регистрирует один или<br />
XÀÊÅÐ 09 /140/ 10