Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Защита изображения   Найти похожие ветки 

 
AlexLines   (2007-05-03 16:02) [0]

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

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


 
TRUNK ©   (2007-05-03 16:08) [1]

Windows Media Player выводит изображение на overlay, поэтому оно и не снимается. Так что это не защита.


 
AlexLines   (2007-05-03 16:35) [2]

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

Спасибо


 
DVM ©   (2007-05-03 16:38) [3]


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

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


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

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


 
DVM ©   (2007-05-03 16:45) [5]


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

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


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

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


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

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


 
DVM ©   (2007-05-03 17:06) [8]


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

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


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

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


 
DVM ©   (2007-05-03 17:35) [10]


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

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


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

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


 
DVM ©   (2007-05-03 17:42) [12]


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

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


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

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

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


 
Fenik ©   (2007-05-03 17:51) [14]

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


 
DVM ©   (2007-05-03 17:54) [15]


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

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


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

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


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


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


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

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


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

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


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

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

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


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

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


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

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

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

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

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


 
DVM ©   (2007-05-04 15:11) [22]


> Sapersky   (04.05.07 14:25) [19]

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



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.05 c
15-1202849507
TStas
2008-02-12 23:51
2008.03.30
Как на Паскаль Скрипте прочитать в программу файл?


2-1204732835
batya-x
2008-03-05 19:00
2008.03.30
поток


2-1203488436
vegarulez
2008-02-20 09:20
2008.03.30
Вопрос про alignment у TEdit.


2-1204115874
ryden
2008-02-27 15:37
2008.03.30
Как получить последнюю строку из таблици в БД


2-1204197319
Александр
2008-02-28 14:15
2008.03.30
Передача формулы в ячейку Excel