Методы защиты от копирования
Порекомендуйте пожалуйста если можно чуть чуть по подробнее...
Спасибо.
самые распространенные: усб ключ, серийный номер материнской платы, и вообще серийный номер любой железки, которая переносится с трудом, имеется ввиду с компа на комп.
А теперь по-подробнее:
Все методы реализуются на ассемблере не хилым кол-вом строк, те виндововские АПИшные функцие, которые якобы позволяют получать серийники вовсе их не получают, они получают серийный номер раздела(это для винта или для усбишного ключа), и при переустановки винды этот номер тоже меняется.
а дальше, выбираешь метод для твоих нужд, т.е. если ты вообще не хочешь, что бы кто-то как-то копировал твою программу, то при инсталляции(или первом запуске программы) получаешь серийник материнской платы и привязываешся к нему:-)
ЗЫ: ассемблер не знаю, так что помочь с реализацией не смогу, но если вдруг найдешь где-нибудь реализацию этих или любого из этих методов кинь сюда или в личку код:-)
ЗЫЫ: Если интересно вот реализация получения серийного номер материнской платы: (VB6)
'RETRIEVES SERIAL NUMBER OF MOTHERBOARD
'IF THERE IS MORE THAN ONE MOTHERBOARD, THE SERIAL
'NUMBERS WILL BE DELIMITED BY COMMAS
'YOU MUST HAVE WMI INSTALLED AND A REFERENCE TO
'Microsoft WMI Scripting Library IS REQUIRED
Dim objs As Object
Dim obj As Object
Dim WMI As Object
Dim sAns As String
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
sAns = sAns & obj.SerialNumber
If sAns < objs.Count Then sAns = sAns & ","
Next
MBSerialNumber = sAns
End Function
А вообще простой тупой способ - зашить в программу код генерации SHA1 от MD5 из МАС-адреса сетевухи, и веб-службу, позволяющую считать такой же хеш. При установке юзер сможет отправить МАС-адрес на сервер, получить код активации и жить счастливо. При запуске программа считает код активации, сравнивает его с кодом активации, и дальше - по ситуации. Минус - в возможном реверс-инжиниринге кода расчёта и в сложности создания надёжного алгоритма хеширования своими силами, также минусом может быть наличие потребности в Интернете, необходимость написания веб-скрипта, и долгий процесс активации. Кроме того, при смене аппаратной части прежний код активации работать не будет, придётся принимать оргмеры для того, чтобы пользователь смог решить эту проблему быстро и просто. Отсюда напрашивается один вопрос: а насколько сильно вообще надо решать эту проблему? ;)
Порекомендуйте пожалуйста если можно чуть чуть по подробнее...
Спасибо.
Смотря с чего копировать...
1. Компакт-диск. Когда-то я думал над одним способом... Заключался он в следующем... Записываем файлы на диск, без закрытия сессии, т.е. с мультисессией. Далее создаем (или находим какой-либо) файл размером около 100 Мб... И записываес его неа диск, указав, что закрываем сессию... Когда файл начинае "прожигаться" на диск и проходит какой-нибудь процент, например, 20, то вырубаем питание к CD-ROM... таким образом, возникает ошибка на диске, в результате чего программами типа Alchogol, Daemon и др. не удается скопировать весь диск... возникает ряд ошибок с чтением конечных байт с диска, но при работе с самим диском - установка программы или работа с программой - ошибок не возникает, т.к. файл, который мы записали последним, мы не используем в работе... Вот...
2. Жесткий диск. Опять же - что значит не скопировать? У тебя программа регистрируется? Т.е. необходимо ввести имя пользователя, пароль или другие данные, или чтобы просто не украли твои наработки? Если второе, то создай какой-нибудь файл, например в C:\Windows\System32 и привяжись к его существованию... Если он там есть, то программа запустится, если нет - то... не запустится :) Понятное дело, что человек, который захочет скопировать у тебя программу, вряд ли полезет в папку Windows и начнет искать там нестандартный файл :)
Если же ты хочешь распространять программу, но работала она только у тех, кому ты "разрешил", то тут только аппаратная привязка...
PS: Помни только одно - чем популярнее и необходимее будет твоя программа, тем быстрее ее взломают ;)
PSS: Вранье все это! :) Почти все... Если придумать хорошую защиту, или, например, выпускать обновления раз в месяц с каким-либо изменением в алгоритме шифрования или привязки... То хорошо...
PSSS: Это все мои мнения, а не выдержки из статей, так что в чем-то я могу быть и не прав...
Когда файл начинае "прожигаться" на диск и проходит какой-нибудь процент, например, 20, то вырубаем питание к CD-ROM...
понравилось.... 5 баллов + зачот.
мало того, что глупость (диск в результате может оказаться нечитабельным), дык я ж могу не образ диска делать, а просто скопировать программу ведь при работе с диском
установка программы или работа с программой - ошибок не возникает, т.к. файл, который мы записали последним, мы не используем в работе... Вот...
2 Автор: а что ты защищать-то хочешь?
а ты сам когда-нить пробовал придуманый собой метод? И почему ты так уверен, что ниодна виртуалка его не срипит?? насколько я помню, у любой уважающей себя виртуалки есть опция - "пропускать ошибки чтения". так что если у тебя будет только запоротый сектор - то демон или алкоголик его спишет а с эмуляцией диска у алкоголика - твоя програмка не распознает это нечитабельный кластер диска - или пропущеный кластер дампа..
что касается второго пункта, то нааверное ты ничего не слышал о мониторах системы, которые отслеживают все изменения произошедшие на компе.
Защита может быть двух видов - софтверная и хардверная.. Ну еще возможна комбинация даных методов. Хардверная защита - это к примеру, хасп-ключи.. Из софтверной защиты - самое популярное - ввод ключей или лицензионных файлов, привязка к железу, записи в реестр, конфиги и т.д. и т.п. Еще неплохим способом - есть онлайн регистрация.. Часто эти методы комбинируют..
Когда я еще в универе учился - у нас была лаба - для защиты инфы на дискетке. Собственно говоря дискетка форматировалась на нестандартное количество дорожек, в последнюю записывался ключ, при помощи которого можна было запустить програмку.. Но это - так детские шалости =) А так, что приходит в голову - если продукт коммерческий - то стоит подумать о приобретении защиты у сторонней фирмы, которая этим реально занимается. Иначе - можно извращаться до бесконечности =) начиная от того что написано выше и заканчивая шифрованием кода, напичкиванием программы анти-отладочными приемами, и синхронизации кода между двумя процессами в памяти =)
И случайно набрел при поиске по разным форумам на некоторые решения "привязки", интересные и в тоже время вряд ли функциональные...
Добиться точных и хороших ответов тяжелее, чем критики по предложенному варианту, поэтому.... :)
В-общем, спасибо за ответы ;)