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

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

pinhead

Как программно отключить возможности копирования данных с CD на винчестер?
При этом вазможность чтения (CD-диска) оставалась!!!
 
Как вариант, перехватывать функции копирования.
 
А какое событие передаёт Wind-а при начале копирования ?
Как оно называется ?
 
Имхо не вариант. необходимо как то запускать программу которая будем перехватывать, а ауторан не у всех включен. Да и в любом случае обходится такая защита элементарно
 
Какую ж функцию копирования .. если человек хочет не запрещать чтение с диска .. но хочет запретить копирование...

Не сделать это так просто... как некоторые делают .. ставится свой драйвер который запрещает чтение всем кроме своего продукта который умеет общаться с драйвером и у него получается читать информацию... но это тернистый путь...
 
Мне вот интересно, что намутили создатели диска с ПДД. Чес-гря у мне так и не удалось сделать его копию.
 
Для: Maniacosaur
Версию 2005 года алкоголь вроде нормально делал...
 
Во блин. Алкоголиком то и не пробовал:P
 
Вы по теме? :)
Мне вот интересно, что намутили создатели диска с ПДД. Чес-гря у мне так и не удалось сделать его копию.
От темы не отходите!
Может кто работал с DOS прерываниями в Pascal-е! :P
 
А что конкретно надо то ? Помнится было дело .. с мышью там и ещё с чем-то ...
 
С мышью то конечно было, а вот было ли дело с CD ???
 
Для: pinhead

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

Но не пойму какой параметр вводить.
Пробовал WH_HARDWERE (сообщения от аппаратуры) - но ни чего не получается.
Пробовал WH_KEYBOARD (сообщения от клавиатуры) - всё работает.(вывожу все номера сообщений посылаемые Windows)
Так какой параметр должен быть первым?
 
Для: pinhead
Смотря для каких целей ты ставишь хук. Если для перехвата API-функций, то лучше использовать WH_CBT или WH_GETMESSAGE.
 
Для: zubr
Я хочу перехватить момент когда система посылает сообщение "начать копирование"! В частности копия данных с CD-диска.
 
Для этого можно перехватывать функцию ZwCreateFile. Тут уже на форуме человек интересовался подобной задачей, только ему вроде надо было контролировать каталог, обратись к нему, может он реализовал подобное. Я делал такое, но код передать не могу, ибо он коммерческий.
 
Для: zubr
В смысле, перехватить Api функцию CreateFile.
Но я думал что Api функция SetWindowsHookEx перехватывает только числовые значения(сообщения Windows) а не функции!
Если я не прав расскажите по подробнее что делает функция SetWindowsHookEx. :(
 
В смысле, перехватить Api функцию CreateFile.
Все таки лучше не CreateFile, а ZwCreateFile - это низкоуровневая функция, работающая в режиме ядра.
Но я думал что Api функция SetWindowsHookEx перехватывает только числовые значения(сообщения Windows) а не функции!
Функция SetWindowsHookEx устанавливает хук - фильтр сообщений в системе. Механизм работы хука, если кратко говорить, состоит в том, что наша dll-ка с обработчиком сообщений подгружается в адрессное пространство процессов, где произошло хуковое событие. В нашем случае, когда юзер будет пытаться скопировать что то с CD, возникнет множество событий, открывание проводника или другого файлового менеджера, в любом случае с помощью хука мы внедримся в адрессное пространство процесса, который будет пытаться скопировать данные. А внедрившись подменяется адрес оригинальной API-функции (в данном случае ZwCreateFile) на нашу, находящуюся в dll-ке. Дело в том, что любое действие с файлами проходит через эту функцию, поэтому проверив путь откуда идет копирование, мы возвращаем или не возвращаем управление оригинальной функции.

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

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