Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Защита изображения [D5, WinXP]


Страницы:   1 2

AlexLines ©   (2007-05-03 16:02:00) 

Уважаемые Знатоки. Возможно ли защитить изображение от PrintScreen и подобных программ, как это сделано в Windows Media Player (при загрузке *.bmp или видео при снятии изображения с экрана он черный)

Как блокировать клавишу PrtScr я знаю. Но существует множество подобных программ.


DVM   (2007-05-04 15:11:00) [1]


> Sapersky   (04.05.07 14:25) [19]

SnagIT тоже не захватывает твой пример.


Sapersky   (2007-05-04 15:10:00) [2]

Делаеть динамическое ежесекнудное переключение устройств вывода - то через DirectShow, то через DirectDraw.

В защищаемой программе?
Сомневаюсь, что из этого выйдет что-то путное. Во-первых, не уверен, что получится одновременно инициализировать DirectShow и DirectDraw с оверлеем (да и без оверлея - ни разу не пробовал, не факт, что они уживутся, т.к. DShow внутри использует тот же DDraw). Во-вторых, если стоит перехват и на то и на другое - захватит, как ни переключайся.

Смысл использования DirectDraw-оверлея разве что в том, чтобы защититься от популярных программ-грабилок (и то надо бы протестировать более чем 1 штуку), т.е. от обычного пользователя. От специалиста не спасёт ничто :)

Ещё вариант без оверлея - кроме GetDC перехватывать также и DirectDrawSurface.Blt c первичной поверхности. Хотя бы для DDraw7 как наиболее часто используемого.
Но эти перехваты также можно обнаружить и снять, вон у Касперского написано, что он может отлавливать внедрение DLL, надо будет попробовать.


Vovan # 2   (2007-05-04 14:30:00) [3]

Отлично, уже набирается. Делаеть динамическое ежесекнудное переключение устройств вывода - то через DirectShow, то через DirectDraw.


Sapersky   (2007-05-04 14:25:00) [4]

любая программа для снятия скриншотов, например SanagIT или HyperSnapDX знает тоже об оверлее и умеет такие скриншоты снимать.

Проверял HyperSnapDX 5.62 с моим оверлейным примером:
http://www.delphimaster.ru/articles/directx/desktoponfire.zip
- не берёт, видимо, из-за того, что рассчитана на использование оверлеев через DirectShow (MediaPlayer захватывает нормально), а у меня DirectDraw. Хотя если "кто-то захочет", то он может сделать и перехват интерфейсов DirectDraw.


Чародей   (2007-05-03 18:47:00) [5]

может проще для предпросмотра накладывать на рисунок искажения(черные полосы например), потому что если кто-то захочет то дотянется до видеопамяти и скачает изображение с экрана по пиксельно не вызывая ни каких функций


AlexLines   (2007-05-03 18:02:00) [6]


> Ну может быть сделать глобальный перехват функции GetDC
> и смотреть когда в нее 0 передается или хэндл твоего окна.
>  GetDC по любому должна быть вызвана при снятии скриншота.
>


Спасибо за ответы. Буду тестировать.

Буду благодарен за разные решения этой проблемы написанные на этом обсуждении!


AlexLines   (2007-05-03 17:58:00) [7]

Согласен. Однако намного сложнее. Кроме этого в моей программе есть Flash ролики, а они свободно могут быть сняты, к примеру, Adobe Captivate. А здесь Вы скажете, что для этого есть видеокамера?


DVM   (2007-05-03 17:54:00) [8]


> Какие могут быть пути решения?

Ну может быть сделать глобальный перехват функции GetDC и смотреть когда в нее 0 передается или хэндл твоего окна. GetDC по любому должна быть вызвана при снятии скриншота.


Fenik   (2007-05-03 17:51:00) [9]

От фотоаппарата нет защиты ))


AlexLines   (2007-05-03 17:48:00) [10]

Согласен. Однако все же неужели ничего в этом плане сделать не получиться? Может быть можно сделать событие, которое будет реагировать на снимок с экрана. Какие могут быть пути решения?

Спасибо всем кто участвует в этом обсуждении!


DVM   (2007-05-03 17:42:00) [11]


> Однако с экрана их сможет снять любой.

Но ведь с экрана можно получить только растровый вариант. А более качественный векторный все равно недоступен будет.


AlexLines   (2007-05-03 17:38:00) [12]

Нет не стандартным. Хорошо защищены. Однако с экрана их сможет снять любой.


DVM   (2007-05-03 17:35:00) [13]


> Разархивируются и выводятся на TImage

Если заархивированы стандартным алгоритмом то вряд ли это помешает достать фотки


AlexLines   (2007-05-03 17:32:00) [14]

Заархивированы и защищены паролем. Разархивируются и выводятся на TImage


DVM   (2007-05-03 17:06:00) [15]


> Файлы wmf прочитать нельзя - они защищены

каким образом?


AlexLines   (2007-05-03 16:59:00) [16]

Или может быть watermark ставить, только во время printscreen. Но как узнать, что тебя снимают (:


AlexLines   (2007-05-03 16:55:00) [17]

Вообще в TImage выводится изображение в формате wmf. А зачем - чтобы не скачали уникальные рисунки. Файлы wmf прочитать нельзя - они защищены, можно только снять с экрана.


DVM   (2007-05-03 16:45:00) [18]


> Вообще не возможно защитить? Может быть есть какие-либо
> компоненты?

А зачем, если не секрет? Может другое решение есть?


AlexLines   (2007-05-03 16:40:00) [19]

Вообще не возможно защитить? Может быть есть какие-либо компоненты?


DVM   (2007-05-03 16:38:00) [20]


> А как можно вывести изображение на overlay?

Это тоже не поможет, ибо любая программа для снятия скриншотов, например SanagIT или HyperSnapDX знает тоже об оверлее и умеет такие скриншоты снимать.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо