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

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

pinhead

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

zubr

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

pinhead

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

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Имхо не вариант. необходимо как то запускать программу которая будем перехватывать, а ауторан не у всех включен. Да и в любом случае обходится такая защита элементарно
 
B

Barmutik

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

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

Maniacosaur

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

Barmutik

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

Maniacosaur

Во блин. Алкоголиком то и не пробовал:p
 
P

pinhead

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

Barmutik

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

pinhead

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

Barmutik

Для: pinhead

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

pinhead

Для: zubr
Начал читать про глобальный перехват (Hook): узнал что его делают только в dll, с помощью функции SetWindowsHookEx, у которой 4 параметра, первый из которых определяет тип устанавливаемой ловушки, и принимает значения: WH_CALLWNDPROC, WH_CALLWNDPROCRET, ...

Но не пойму какой параметр вводить.
Пробовал WH_HARDWERE (сообщения от аппаратуры) - но ни чего не получается.
Пробовал WH_KEYBOARD (сообщения от клавиатуры) - всё работает.(вывожу все номера сообщений посылаемые Windows)
Так какой параметр должен быть первым?
 
Z

zubr

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

pinhead

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

zubr

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

pinhead

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

zubr

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

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

sab0tage

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!