А может есть способ запретить программно делать скриншоты? Чтобы только по PrintScreen можно было. Как-нибудь перехватывать и блокировать API-функции, которые за это отвечают и заодно вести лог, кто и когда пытался делать скриншот. Или опытного создателя кейлоггера такой программой не испугать и он найдет способ сделать скриншот?
Эти функции используются очень и очень во многих случаях, в том числе никак не связанных со снятием скриншотов. Скорее всего после этого не будут работать 90% приложений.
Но как идея: можно ловить по паттернам используемых функций (для распознавания, например, используя байесовы сети):
Если, приложение последовательно вызывает GetDesktopWindow(необязательно), GetWindowRect (необязательно), GetDC/GetWindowDC, BitBlt/GetPixel/..., то значит, скорее всего оно делает скриншот (а может быть и нет, и надо анализировать ещё и аргументы функций).
И да, набор функций может варьироваться. Благо, WinAPI избыточен во многих местах и позволяет одно и тоже выполнить несколькими способами.
Т.е. задача перестает быть тривиальной. И получившийся алгоритм в результате решения должен быть быстрым, т.к. некоторые из этих функций вызываются неоднократно при каждой отрисовке элементов окна каждого приложения.
Неужели в современном мире, где везде стоят камеры, еще актуально хищение паролей от карт, скажем? Мне кажется, поимка преступника займет несколько дней.
Мартину Шкрели, например, заказали 55 галлонов лубрикантов на дом по утекшей в сеть банковской карте, и это ещё только баловство. http://thenextweb.com/insider/2016/02/15/pharma-bro-martin-shkreli-lied-about-bitcoin-so-someone-spent-his-real-money-on-lube/
Неопытные пользователи кейлоггера KeyBase заражают собственные ПК