如何檢測對 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。使用我從 xwininfo -root -tree 獲得的 X id,我設定 xtruss 來監視該資源。但是,當我執行 xwd -i -out 檔案時,xtruss 不會報告任何內容。測試方法是否錯誤?

相關內容