Как создать shareware защиту?
В этой статье мы поговорим о том как создать программу,в которой после регистрации (ввода лицензионного ключа) - отображаются скрытые возможности.
Немного о том как работает защита...
К примеру:кнопка "открыть cd-rom" недоступна чтобы она стала доступной нужно ввести регистрационный код.Мы нажимаем на "регистрация" появляется поле где мы вводим пароль.
При нажатии на кнопку OK программа сохраняет то что мы набрали в реестре.
При своем запуске программа считывает то что мы написали в реестре(т.е. пароль введенный ранее)и если он совпадаеи с тем который мы указали,тогда кнопка становится активной.В противном случае,кнопка остается неактивной.
Итак делаем:
1).-запускаем полюбившийся нам делфи.
2).-создаем новый проект.
3).
caption=shareware width:=242 height:=140 BorderStyle=bsSingle Position=poScreenCenter uses=mmsystem,registry;
4).Создаем 3 кнопки:button1,button2,button3 и текстовое поле edit1
button1.caption=Регистрация button2.caption=Открыть cd-rom button1.caption=Выйти edit1.text='snake software'//это код регистрации edit1.text.visible:=False; //делаем текстовое поле невидимым button2.enabled:=False //делаем неактивной кнопку "открыть cd-rom" --------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); begin mciSendString('Set cdaudio door open wait', nil, 0, Form1.Handle); end; -------------------------------------------------------------------- procedure TForm1.Button3Click(Sender: TObject); begin Halt; end; ------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin form2.show; form1.Hide; end; -------------------------------------------------------------------
5).Создаем вторую форму.
caption=registration width:=234 height:=75 BorderStyle=bsSingle Position=poScreenCenter uses=registry;
6).Создаем кнопку(button1),и поле для ввода текста(edit1)
button1.caption=ok
7).на событие кнопки onclick пишем:
var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey('\Micr.I1\CLSID', True) then begin Reg.WriteString('tr',edit1.text); Reg.CloseKey; end; finally Reg.Free; MessageDlg('Ща проверим!',mtInformation,[mbOk],0); inherited; end; HALT; end;
8).Возвращаемся к нашей Form1(первой форме).В вверху
в var пишем pwd:string;
На событие формы oncreate пишем:
var Reg:TRegistry; begin try Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; {False because we do not want to create it if it doesn't exist} Reg.OpenKey('\Micr.I1\CLSID',False); pwd:=Reg.ReadString('tr'); finally Reg.Free; end; if pwd=edit1.Text then begin button2.Enabled:=True; end;
Вот собственно и всё!Если у вас есть какие-то проблемы,пишите на tronekas@yandex.ru
Исходник того что мы сделали вы можете найти на snakesoft.nm.ru. Там же вы найдете мои программы.
Оставить комментарий
Комментарии
Прежде, чем хаить какую-либо защиту задумайтесь на минутку...
ДЛЯ КОГО ПРОГРАММ? КАКОЙ ОТ НЕЙ ПЛАНИРУЕТСЯ ДЕНЕЖНЫЙ ВЫХЛОП?
Если программа узкопрофильная для не "компьютерных" людей, то такого подхода будет БОЛЕЕ чем достаточно...
>>> regmon + оля = ломается чуть ли не с полтыка. афтар не пеши больше
Есть пользователи, который не знают даже что такое реестр, а вы говорите regmon и уж тем более OllyDbg... Всё в жизни относительно!!!
СПАСИБО ЗА СТАТЬИ :))
СПАСИБО ЗА СТАТЬИ :))
А код? Ну перекомпилировали ключик Винды. Ну даже изменим ключ программы в соответствии с новым кодом виндовс (я даже не упоминаю варианта, когда прогу скачивают с сайта, собственно с чего начинается путь любой программы к пользователю, или установки с помощью инсталяторов - так распостраняются около 90% всех программ). А как автору программы знать, какая винда у пользователя, который хочет КУПИТЬ программу? Ведь если у него пиратская копия (а статистика здесь печальна... для корпорации Майкрософт, особенно), то он пошлет нафиг автора и снесет прогу.
А в реестре найти что-то не составляет особого труда. Лучше записывать в дат-файлы, куда для маскировки еще пару сот килобайт всякой пурги загнать. И это еще далеко не все.
В общем, защита только для красоты, такую практически нет смысла делать.
Хотя изоображает примитивнейший процес защиты (можно сказать, теоретический), который нужно хорошенько усовершенствовать.
Есть и один плюс у такой защиты: она лучше стандартных программ для защиты (типа армадилло). Для обезвреживания тех спец. программы создали, только одну копку нажать нужно, а над етой заново творчески пыхтеть нужно.
>regmon + оля = ломается чуть ли не с полтыка. афтар не пеши больше
и че? если ты даже найдешь параметр в котором хранится пароль,запаришься его подбирать.а кнопки можно сделать visble:=False,и ко всему прописать им левые name и caption.И вообще я просто написал как создать самую что ни на есть shareware защиту,для новичков она пойдет(если конечно прогу еще защитить от декомпиляторов и дизасмблеров.)
Есть такая идея.А что если сделать так?При первом запуске программа извлекает из себя пустой файл в system32 а потом вычисляет активационный код винды(они по ходу на всех виндах разные),пишет этот код в пустой файл и запихивает его обратно в себя,перекомпилив себя.Получится прога уже с забитым в нее активационным ключом винды.Потом прога отключает эту возможность.Тепеть она при каждом своем страте будет извлекать это файл куда-нить на файл,открывать его на чтение и свреять его код с кодом винды и если они совпадают тогда продолжать свою работу,иначе выйти.
Это получается если ты прогу скаташь на другой комп(и если они винды на разных компах разные_то прогу придется покупать.Но все равно все защиты в этом мире ломаются.Так что по ходу их создавать ваще не стоит.Как вариант можно попробовать привязать защиту к файлу user.dll и тому подобное.