Запрет копирования Cd

  • Автор темы pinhead
  • Дата начала
P

pinhead

Гость
#1
Как программно отключить возможности копирования данных с CD на винчестер?
При этом вазможность чтения (CD-диска) оставалась!!!
 
Z

zubr

Гость
#3
Как вариант, перехватывать функции копирования.
 
P

pinhead

Гость
#4
А какое событие передаёт Wind-а при начале копирования ?
Как оно называется ?
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#5
Имхо не вариант. необходимо как то запускать программу которая будем перехватывать, а ауторан не у всех включен. Да и в любом случае обходится такая защита элементарно
 
B

Barmutik

Гость
#6
Какую ж функцию копирования .. если человек хочет не запрещать чтение с диска .. но хочет запретить копирование...

Не сделать это так просто... как некоторые делают .. ставится свой драйвер который запрещает чтение всем кроме своего продукта который умеет общаться с драйвером и у него получается читать информацию... но это тернистый путь...
 
M

Maniacosaur

Гость
#7
Мне вот интересно, что намутили создатели диска с ПДД. Чес-гря у мне так и не удалось сделать его копию.
 
B

Barmutik

Гость
#8
Для: Maniacosaur
Версию 2005 года алкоголь вроде нормально делал...
 
M

Maniacosaur

Гость
#9
Во блин. Алкоголиком то и не пробовал:P
 
P

pinhead

Гость
#10
Вы по теме? :)
Мне вот интересно, что намутили создатели диска с ПДД. Чес-гря у мне так и не удалось сделать его копию.
От темы не отходите!
Может кто работал с DOS прерываниями в Pascal-е! :P
 
B

Barmutik

Гость
#11
А что конкретно надо то ? Помнится было дело .. с мышью там и ещё с чем-то ...
 
P

pinhead

Гость
#12
С мышью то конечно было, а вот было ли дело с CD ???
 
B

Barmutik

Гость
#13
Для: pinhead

Просьба ставьте вопрос более конкретно .. потому как
Может кто работал с DOS прерываниями в Pascal-е!
совсем не значит что дело идёт о работе с дисковой подсистемой...
 
P

pinhead

Гость
#14
Для: zubr
Начал читать про глобальный перехват (Hook): узнал что его делают только в dll, с помощью функции SetWindowsHookEx, у которой 4 параметра, первый из которых определяет тип устанавливаемой ловушки, и принимает значения: WH_CALLWNDPROC, WH_CALLWNDPROCRET, ...
Можно посмотреть
Но не пойму какой параметр вводить.
Пробовал WH_HARDWERE (сообщения от аппаратуры) - но ни чего не получается.
Пробовал WH_KEYBOARD (сообщения от клавиатуры) - всё работает.(вывожу все номера сообщений посылаемые Windows)
Так какой параметр должен быть первым?
 
Z

zubr

Гость
#15
Для: pinhead
Смотря для каких целей ты ставишь хук. Если для перехвата API-функций, то лучше использовать WH_CBT или WH_GETMESSAGE.
 
P

pinhead

Гость
#16
Для: zubr
Я хочу перехватить момент когда система посылает сообщение "начать копирование"! В частности копия данных с CD-диска.
 
Z

zubr

Гость
#17
Для этого можно перехватывать функцию ZwCreateFile. Тут уже на форуме человек интересовался подобной задачей, только ему вроде надо было контролировать каталог, обратись к нему, может он реализовал подобное. Я делал такое, но код передать не могу, ибо он коммерческий.
 
P

pinhead

Гость
#18
Для: zubr
В смысле, перехватить Api функцию CreateFile.
Но я думал что Api функция SetWindowsHookEx перехватывает только числовые значения(сообщения Windows) а не функции!
Если я не прав расскажите по подробнее что делает функция SetWindowsHookEx. :(
 
Z

zubr

Гость
#19
В смысле, перехватить Api функцию CreateFile.
Все таки лучше не CreateFile, а ZwCreateFile - это низкоуровневая функция, работающая в режиме ядра.
Но я думал что Api функция SetWindowsHookEx перехватывает только числовые значения(сообщения Windows) а не функции!
Функция SetWindowsHookEx устанавливает хук - фильтр сообщений в системе. Механизм работы хука, если кратко говорить, состоит в том, что наша dll-ка с обработчиком сообщений подгружается в адрессное пространство процессов, где произошло хуковое событие. В нашем случае, когда юзер будет пытаться скопировать что то с CD, возникнет множество событий, открывание проводника или другого файлового менеджера, в любом случае с помощью хука мы внедримся в адрессное пространство процесса, который будет пытаться скопировать данные. А внедрившись подменяется адрес оригинальной API-функции (в данном случае ZwCreateFile) на нашу, находящуюся в dll-ке. Дело в том, что любое действие с файлами проходит через эту функцию, поэтому проверив путь откуда идет копирование, мы возвращаем или не возвращаем управление оригинальной функции.

Советую почитать соответствующую литературу. Неплохая книга Джеффри РИХТЕР "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows".
 
S

sab0tage

Гость
#20
2pinhead: На самом деле это тупиковый вариант, программы защиты от копирования используют геометрию компактав, так как дорожек у разных производителей отличаются, то замеряется расстояние между секторами и если оно отличается то программа прекращает работу (значит это не оригинальный диск а копия) Такую защиту нужно только ломать. Но как сам понимаешь, это довольно сложный код. Также можно например подковырять имадж, чтобы файлы отображались как 10ти гигабайтные, но это обходится снятием имаджа. Зато достаточно просто защитить от копирования дискету. Просто ставишь пару дырок иголкой, проверяешь на сбойные сектора (это те где дырка), а потом ставишь проверку, если указаные сектора читаются, то завершаешь работу (у Фаронова есть такой пример). А для дисков все гораздо сложнее, используй старфорс, или чужой компанент.