Защита от копирования
Подскажите, пожалуйста, какие есть способы защиты программы от копирования. Спасибо.
Есть один довольно простой способ. При установке создать некоторый системный файлик *.sys. Наполнить его некоторым содержимым (для понта), спрятать его куда подальше (например в папку винды или куда поглубже). Главное, чтобы такой путь к файлу был на всех машинах, на которые предполагается ставить программу. А далее программа при запуске будет обращаться к данному файлу, и если его не обнаружит, то просто не запустится. Можно еще грубее развить эту тему. Если файла нет, то убиваются все системные файлы винды (нефиг копировать :D).
Самый прикол, что данный файл никто не осмелиться удалить (по крайней мере обычный юзверь) и не догадается скопировать - все-таки системный.
Если подумать, то можно развить эту тему с файлом.
Этот способ не самый лучший, но один из простых.
Удачи.
Если подумать, то можно развить эту тему с файлом.
Этот способ не самый лучший, но один из простых.
Удачи.
Способ сей вообще пример совершенно неудачный, обращения к файлам запросто перехватываюстя filemon.exe, даже если юзверь-зверь, не догадается скопировать какойто sys файл, то всегда найдется умник который узнает в чем дело и расскажет всем остальным!!! Куда более интересно использовать в качестве защиты программы СЕРИЙНЫЙ НОМЕР ПРОЦЕССОРА или HDD, алгоритм добывания последнего у меня есть(где-то) единственный его недостаток что после первоо срабатывания он возвращает одно значение а после второго другое, которое совпадает затем несколько раз, а потом опять вылетает другое значение 1-2 раза, после чего опять следует второе значение (не знаю что-бы это могло быть!) если вам это интересно давайте обсудим!
1. Нестабильно работающий алгоритм (если таковой имеется). Его следует доработать.
2. Если пользователь сменит компьютер, то программу придется устанавливать заново. А ее владелец не всегда рядом. Хотя это несколько иная проблема, но все же.
Если есть желание поделиться алгоритмом, буду рада. Хотя и сама попробую. Идея же с файлом не очень хороша.
Спасибо всем за участие и советы. Может, еще появятся идеи, пишите :).
Если есть желание поделиться алгоритмом, буду рада.
Желание Есть. С радостью поделюсь, но завтра(исходник дома т.к. на работе работаю с V7) а функцию (API) как назло не помню
2. Если пользователь сменит компьютер, то программу придется устанавливать заново. А ее владелец не всегда рядом. Хотя это несколько иная проблема, но все же.
Если пользователь далеко то пускай использует систему авторизации на сервере(страничке) компании выпустившей продукт!!!!(не обязательно пользоваться для этого платным хостингом, хотя за 20$ в год можно получить куда более качественное обслуживание).
Если реализоовать систему авторизации пользователей прямо в программе то, нужно отослать на сервер(MySQL например) данные о диске и запросить данные о пользователе, если видим, что сей Вася Пупкин живет на Мадагаскаре, а программу например авторизовал первый раз в Питере(например), то есть повод посомневаться в добрых намерениях этого Васи и послать его на мыло авторизовываться есчо раз, после такого обращения кул хацкер Вася скорее всего отвалит от системы и болше беспокоить её не будет (только САйсом, или еще чем нить, но и здесь можно поставить заслон непробиваемый(почти), книжку только надо купить "Технологии отладки Soft Ice")
http://home.earthlink.net/~akonshin/files/IdeSN3b.zip
и тут еще много чего полезного
http://home.earthlink.net/~akonshin/delphi_ru.htm
Можно еще грубее развить эту тему. Если файла нет, то убиваются все системные файлы винды (нефиг копировать)
Жуть да и только.
Спасибо большое. Правда с кодом для делфи мне придется поразбираться. А серийный номер винчестера я нашла при помощи GetVolumeInformation.
Ф-я GetVolumeInformation() среди прочей информации возвращает не серийный номер винчестера, а номер раздела.
Т.е. после форматирования номер изменится.
.
Смысл в следующем:
Пусть имеется некий ключ.
Этим ключем (используя какой-нибудь из алгоритмов шифрования - самый простой пример DynaXOR) ты криптуешь всю секцию кода скомпилеванного экзешника. После того, как успешно зашифровали тело экзешника - добавляешь к оригинальному файлу маленькую секцию, содержащую код дешифратора. Ключ для дешифрации, к примеру, можно хранить в реестре - и неважно что он будет у всех на виду - вся прелесть в том, что оригинального ключа дешифрации ни в файле не еще где либо не существует :) Он торжественно вручается непосредственно законопослушному владельцу программы :)
Могу предложить еще один вариант - правда для его реализации требуется определенный уровень знаний - но сам по себе он не сложный.
Смысл в следующем:
Пусть имеется некий ключ.
Этим ключем (используя какой-нибудь из алгоритмов шифрования - самый простой пример DynaXOR) ты криптуешь всю секцию кода скомпилеванного экзешника. После того, как успешно зашифровали тело экзешника - добавляешь к оригинальному файлу маленькую секцию, содержащую код дешифратора. Ключ для дешифрации, к примеру, можно хранить в реестре - и неважно что он будет у всех на виду - вся прелесть в том, что оригинального ключа дешифрации ни в файле не еще где либо не существует :) Он торжественно вручается непосредственно законопослушному владельцу программы :)
После чего "законопослушный владелец" выкладывает свой ключ на варезном сайте... со всеми вытекающими...
После чего "законопослушный владелец" выкладывает свой ключ на варезном сайте... со всеми вытекающими...
:) А это уже людской фактор, а не программный :) Тогда уже нужно писать не просто защиту от нелицензионного копирования, но и защиту от людского фактора. И тут уж остается один способ - выдача лицензий - причем через internet. А вообще, абсолютных защит не существует - существует понятие адекватности эффективности защиты. Так что... А в данном случае, автору вопроса я так полагаю не нужна высокоэффективная защита, применяемая в крупных коммерческих проектах. Так что я думаю и мудрить особо в данной ситуации не нужно...
Собираем данные от железа (серийник от винта, например), генерируем по этим данным некоторый код. Далее счастливый обладатель вашей программы высылает вам этот код. Вы подставляете этот код в подпрограммку, которая по некоторой, придуманной вами формуле генерирует ключ, который вы высылаете пользователю. В программе у пользователя уже вшита такая же формула, подставив в которую код и сопоставив по ней полученный ключ с ключом, высланным вами программа либо запустится либо нет.