Как защитить приложение от снятия скриншота
Как защитить приложение от снятия скриншота
Про ценность информации в современном цифровом мире можно рассказывать долго, но я этого делать не буду. Только хочу упомянуть такую безобидную на первый взгляд штуку, как скриншот экрана. "Алло, техподдержка, у меня тут программа что-то пишет непонятно" - "Пришлите скриншот". Тык в PrintScreen, вставить в письмо, отправить. Знакомая ситуация? А то, что в это время на экране может быть служебная или вовсе конфиденциальная информация, и куда она пойдет дальше, об этом мало кто думает. Если данные, отображаемые в окнах приложения, даже случайно не должны быть переданы не по назначению, то разработчикам софта стоит об этом позаботиться. На скриншоте как раз пример скриншота окна с защитой от скриншота (извините). Само окно есть, но его содержимое не отображается.
Начиная с Windows 7, в системе появилась функция SetWindowDisplayAffinity, с помощью которой можно ограничить отображение содержимого окна только на монитор. Пользоваться ей очень просто, пара констант и один вызов при создании окна.
Code (Assembler) : Убрать нумерацию
- WDA_NONE = 0x0
- WDA_MONITOR = 0x1
- ; Отображать содержимое окна только на мониторе
- invoke SetWindowDisplayAffinity,[hwnddlg],WDA_MONITOR
Важное замечание. Как написано в официальной документации, функция SetWindowDisplayAffinity защищает от скриншота только в том случае, когда в системе активен Desktop Window Manager, который используется в графическом интерфейсе Windows Aero. В базовых и упрощенных схемах скриншоты делаются как обычно без каких-либо ограничений.
В приложении пример программы с исходным текстом, которая создает диалоговое окно с защитой от снятия скриншотов.
Просмотров: 3002 | Комментариев: 12
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(14.05.2020 в 18:58):
Попробовал ретранслировать защищенное окно в свое приложение, как написано тут: http://www.manhunter.ru/assemb...emblere.html
В окне приложения отображается нормально, но снять скриншот окна-ретранслятора тоже не получается, там такой же черный прямоугольник.
В окне приложения отображается нормально, но снять скриншот окна-ретранслятора тоже не получается, там такой же черный прямоугольник.
ManHunter
(24.04.2020 в 17:55):
Из стороннего процесса мне не удалось даже под Администратором.
wet
(24.04.2020 в 12:54):
Почитал, что обходится при помощи DwmpDxGetWindowSharedSurface и DwmGetDxSharedSurface.
Ну как то это длинно. А вот если выдать этому окну по найденному hwnd SetWindowDisplayAffinity WDA_NONE ?
Или обратного действия эта функция уже не имеет?
PS
Кстати, NOP'ить не обязательно, проще 1 на 0 поменять в вызове. Это точно срабатывает, проверил на вашем примере.
Ну как то это длинно. А вот если выдать этому окну по найденному hwnd SetWindowDisplayAffinity WDA_NONE ?
Или обратного действия эта функция уже не имеет?
PS
Кстати, NOP'ить не обязательно, проще 1 на 0 поменять в вызове. Это точно срабатывает, проверил на вашем примере.
Exit
(24.04.2020 в 06:55):
ManHunter, да, все верно. DWM в системе был отключен.
Как то не прижился, у меня, эффект Аэро...
Как то не прижился, у меня, эффект Аэро...
ManHunter
(23.04.2020 в 14:46):
С включенным Aero PicPick тоже снимает черный прямоугольник. Добавил информацию в статью.
Exit
(23.04.2020 в 14:27):
Снял скрин прогой PicPick
https://i.imgur.com/W5muOLs.png
https://i.imgur.com/W5muOLs.png
ManHunter
(22.04.2020 в 17:37):
Предпоследний абзац совсем не читал, да? И от глядения глазами не поможет, и от художника с мольбертом не поможет, и от оператора с кинокамерой не поможет. А от скриншота поможет.
Андрей
(22.04.2020 в 17:35):
От приложения "смартфон с камерой" не поможет.
noldor
(21.04.2020 в 10:29):
Спасибо, хорошая функция. От приложения «ножницы» тоже помогает))
ManHunter
(21.04.2020 в 00:21):
Ну а как иначе рассказать о силах зла? :) Зато теперь заинтересованные люди будут знать что в коде NOP'ить
A1eksandr1
(21.04.2020 в 00:14):
"Ты должен был бороться со злом, а не примкнуть к нему"
:)
:)
Добавить комментарий
Заполните форму для добавления комментария
А из этого же, инжектом библтотеки?