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는 아무 것도 보고하지 않습니다. 테스트 방법이 잘못된 걸까요?