Как обнаружить вызов Xorg для создания снимков экрана?

Как обнаружить вызов Xorg для создания снимков экрана?

X может делать снимки экрана всего рабочего стола. Я бы хотел обнаруживать эти вызовы по мере их совершения, но через что-то вроде ebpf или sysdig, а не патчить вызовы на уровне сервера. Как это сделать и есть ли программа, которая может это делать?

решение1

[скорее комментарий, чем ответ, но слишком длинно для комментария]

Программа, которая будет это делать, должна будет подключиться к вызовам X11 на уровне сервера (через механизм вродеXACE, ~ так же, как ebpf или sysdig делают с вызовами в ядре). Я не знаю ничего готового, делающего это, но я и не особо изучал этот вопрос ;-)

Если вы хотите просто отслеживать запросы, выполняемые клиентом X11, вы можете использоватьRECORDрасширение (какxtrussделает) или принудительно подключать клиента через прокси X11, напримерxscopeи найдите любые запросы CopyArea, GetImage, и т. д., использующие корневое окно в качестве источника (или любое окно/пиксельную карту, НЕ принадлежащую этому клиенту).

В общем, зацикливаться на том, что приложение X11 может делать "скриншоты", довольно бессмысленно, поскольку любая программа с доступом к серверу X11 может делать гораздо больше, и если ей не доверяют, ее НЕ следует оставлять где-либо рядом с ним. Кроме того, локальные процессы, запущенные под одним и тем же пользователем, также могут взаимодействовать ptrace(2)друг с другом и напрямую читать память друг друга.

решение2

Да, я бы предпочел сосредоточиться на других вещах, чем на размышлениях о том, делает ли приложение X11 скриншоты, но я подумал, что на данный момент стоит почесать эту дыру.

Похоже, в сети нет никаких материалов о том, как писать эти хуки x11, но я посмотрю на xtruss.

В данный момент я запускаю xtruss. Используя X id, которые я получил из xwininfo -root -tree, я настраиваю xtruss на мониторинг этого ресурса. Однако, когда я делаю файл xwd -i -out, xtruss ничего не сообщает. Неверна ли методология тестирования?

Связанный контент