Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
В настоящее время продвижение сайтов в москве очень сильно усложнилось из-за конкуренции

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Как создать 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. Там же вы найдете мои программы.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
75K
22 сентября 2011 года
Algoto
0 / / 22.09.2011
+0 / -1
Мне нравитсяМне не нравится
22 сентября 2011, 18:03:06
Спасибо за информацию, Владимир! Я давно искал описание принципа проверки ключей на зарегистрированной и на незарегистрированной версиях программ. Конечно, взломать такую программу не сложно, но если ты пишешь небольшие игры, то не думаю, что кто-то будет сильно заморачиваться и ломать защиту. Ради чего?
2.
33K
18 октября 2007 года
WiseImp
0 / / 18.10.2007
Мне нравитсяМне не нравится
18 октября 2007, 12:51:44
Tuchboru, Develop7, The_Ice

Прежде, чем хаить какую-либо защиту задумайтесь на минутку...
ДЛЯ КОГО ПРОГРАММ? КАКОЙ ОТ НЕЙ ПЛАНИРУЕТСЯ ДЕНЕЖНЫЙ ВЫХЛОП?

Если программа узкопрофильная для не "компьютерных" людей, то такого подхода будет БОЛЕЕ чем достаточно...

>>> regmon + оля = ломается чуть ли не с полтыка. афтар не пеши больше

Есть пользователи, который не знают даже что такое реестр, а вы говорите regmon и уж тем более OllyDbg... Всё в жизни относительно!!!
3.
28K
22 апреля 2007 года
AlexSoft2007
2 / / 22.04.2007
+1 / -0
Мне нравитсяМне не нравится
22 апреля 2007, 22:53:37
АВТОР, НЕ ОБРАЩАЙ ВНИМАНИЕ - ЗАЩИТА К ПРОГРАММЕ НУЖНА, ПЛОХАЯ ИЛИ ХОРОШАЯ, НО НУЖНА. ВИНДУС ВСКРЫВАЮТ, НО ОТ ЭТОГО ГЕЙЦ НЕ ОТКАЗАВАЕТСЯ ОТ ЗАЩИТЫ...
СПАСИБО ЗА СТАТЬИ :))
4.
28K
22 апреля 2007 года
AlexSoft2007
2 / / 22.04.2007
+1 / -0
Мне нравитсяМне не нравится
22 апреля 2007, 22:52:07
АВТОР, НЕ ОБРАЩАЙ ВНИМАНИЕ - ЗАЩИТА К ПРОГРАММЕ НУЖНА, ПЛОХАЯ ИЛИ ХОРОШАЯ, НО НУЖНА. ВИНДУС ВСКРЫВАЮТ, НО ОТ ЭТОГО ГЕЙЦ НЕ ОТКАЗАВАЕТСЯ ОТ ЗАЩИТЫ...
СПАСИБО ЗА СТАТЬИ :))
5.
21K
14 ноября 2006 года
Tuchboru
3 / / 14.11.2006
Мне нравитсяМне не нравится
7 марта 2007, 23:49:12
Все равно это несерйозная защита. Ломают еще и по серезнее. Например, выясняем, что код проверяется при запуске -> находим и отключаем всю функцию проверки.
А код? Ну перекомпилировали ключик Винды. Ну даже изменим ключ программы в соответствии с новым кодом виндовс (я даже не упоминаю варианта, когда прогу скачивают с сайта, собственно с чего начинается путь любой программы к пользователю, или установки с помощью инсталяторов - так распостраняются около 90% всех программ). А как автору программы знать, какая винда у пользователя, который хочет КУПИТЬ программу? Ведь если у него пиратская копия (а статистика здесь печальна... для корпорации Майкрософт, особенно), то он пошлет нафиг автора и снесет прогу.
А в реестре найти что-то не составляет особого труда. Лучше записывать в дат-файлы, куда для маскировки еще пару сот килобайт всякой пурги загнать. И это еще далеко не все.
В общем, защита только для красоты, такую практически нет смысла делать.
Хотя изоображает примитивнейший процес защиты (можно сказать, теоретический), который нужно хорошенько усовершенствовать.
Есть и один плюс у такой защиты: она лучше стандартных программ для защиты (типа армадилло). Для обезвреживания тех спец. программы создали, только одну копку нажать нужно, а над етой заново творчески пыхтеть нужно.
6.
293
17 сентября 2006 года
kastron
215 / / 17.09.2006
Мне нравитсяМне не нравится
3 декабря 2006, 21:30:27
DEVELOP7
>regmon + оля = ломается чуть ли не с полтыка. афтар не пеши больше
и че? если ты даже найдешь параметр в котором хранится пароль,запаришься его подбирать.а кнопки можно сделать visble:=False,и ко всему прописать им левые name и caption.И вообще я просто написал как создать самую что ни на есть shareware защиту,для новичков она пойдет(если конечно прогу еще защитить от декомпиляторов и дизасмблеров.)

Есть такая идея.А что если сделать так?При первом запуске программа извлекает из себя пустой файл в system32 а потом вычисляет активационный код винды(они по ходу на всех виндах разные),пишет этот код в пустой файл и запихивает его обратно в себя,перекомпилив себя.Получится прога уже с забитым в нее активационным ключом винды.Потом прога отключает эту возможность.Тепеть она при каждом своем страте будет извлекать это файл куда-нить на файл,открывать его на чтение и свреять его код с кодом винды и если они совпадают тогда продолжать свою работу,иначе выйти.

Это получается если ты прогу скаташь на другой комп(и если они винды на разных компах разные_то прогу придется покупать.Но все равно все защиты в этом мире ломаются.Так что по ходу их создавать ваще не стоит.Как вариант можно попробовать привязать защиту к файлу user.dll и тому подобное.
7.
18K
16 апреля 2006 года
Develop7
0 / / 16.04.2006
Мне нравитсяМне не нравится
14 ноября 2006, 22:29:34
regmon + оля = ломается чуть ли не с полтыка. афтар не пеши больше
8.
8.7K
04 апреля 2006 года
The_Ice
109 / / 04.04.2006
Мне нравитсяМне не нравится
14 ноября 2006, 17:54:10
да это же просто смешно! Может я конечно чего то упустил, но как на счет WinSight+EnableWindow(hwnd,bool)? Такая защита ломается минут за 5 максимум... Так что автор, пример с "button2.Enabled:=True;" не соответствует теме о защите :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог