18.11.2014 Views

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!