Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 19:13   #1
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
Лампочка Вопрос по привязке (идея)

Допустим, пользователь запускает программу выскакивает окно активации (при запуске в поле Edit автоматом генерируется код вида XXXX-XXXX-XXXX-XXXX, либо любой другой по усмотрению), естественно в Edit свойство Readonly нужно поставить в True (чтобы небыло такого что самому можна было менять код который сгенерируется), дальше просто делаем привязку по файлу тхт который лежит на хостинге (имя файла и должен быть тот самый код формата XXXX_XXXX_XXXX_XXXX.txt). Естественно код должен генерироваться только 1 раз, даже если программу перезапустить не активировав. Ну и конечно же окно активации выскакивает только один раз. Что скажете?

+ Формат ключа активации (ХХХХ_ХХХХ_ХХХХ_ХХХХ)
- Если винда слетит, при новой активации выдаст новый ключ (а Edit редактировать нельзя т.к выставлено ReadOnly - True)

Проверка что то типа этого:
PHP код:
var
hddid:string;
begin
try
hddid:=IdHTTP1.Get('http://site.ru/users/'+edit1.Text+'.txt');
except
end
;
if 
IdHTTP1.ResponseCode 404 then ShowMessage('Not Found!') else ShowMessage('Ok! Program is activated!'); 
idhttp1.free

Взято с одного форума, но там во первых код не очень понятен, во вторых привязка к HDD (формат кода допустим меня не устраивает), и я так подумал что проще будет сделат так как я описал выше.
FleXik вне форума Ответить с цитированием
Старый 07.11.2012, 19:39   #2
artbotva
Форумчанин
 
Аватар для artbotva
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию

Можно сохранить все настройки в ini файл.
По событию OnShow просто генерировать код ( ну и на фтп отправлять ) а после в ini файле сохранить чтобы форма не появлялась
Недостижение того, что ты хотел, является иногда лучшим подарком судьбы

Последний раз редактировалось artbotva; 07.11.2012 в 19:41.
artbotva вне форума Ответить с цитированием
Старый 07.11.2012, 19:51   #3
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Код:
hddid:=IdHTTP1.Get('http://site.ru/users/'+edit1.Text+'.txt');
edit1.Text - как я понял, это наш уникальный ключ... если это так, то я бы не стал такого плана данные хранить в виде txt на хосте, уж лучше в php сделать с некой проверкой ...
Код:
if IdHTTP1.ResponseCode = 404 then ShowMessage('Not Found!') else ShowMessage('Ok! Program is activated!');
кроме 404 ошибки, могут быть и другие, на пример перегрузка хостинга 502 и т.д.

Заметка: если реализовать на php данные на хостинге, то можно сделать обмен данными, при отправке твоего ключа, программа получает данные и их уже как-то обрабатывает. И уже основываясь на обработке этих данных или активирует программу или нет.

+ как я понимаю, ключ находится в явном виде ... т.е. никак не шифруется - это огромный минус, т.к. подредактировать память, и отправлять любой другой ключ для попытки активировать программу очень просто...
Поэтому советую ключ хранить в некой переменной в зашифрованом виде, в edit1 его дешифровывать, и в запросе
Код:
hddid:=IdHTTP1.Get('http://site.ru/users/'+edit1.Text+'.txt');
указывать уже не сам edit1, а а код дешифровки нашего ключа

Цитата:
Сообщение от artbotva Посмотреть сообщение
Можно сохранить все настройки в ini файл.
По событию OnShow просто генерировать код ( ну и на фтп отправлять ) а после в ini файле сохранить чтобы форма не появлялась
а смысл тогда от активации, если ini будет содержать некоторые переменные, которые будут позволять искусственно активировать программу. Кряк для этой программы будет выглядеть как ini файл ...

Последний раз редактировалось Stilet; 07.11.2012 в 20:14.
-Jack- вне форума Ответить с цитированием
Старый 07.11.2012, 19:59   #4
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
edit1.Text - как я понял, это наш уникальный ключ
именно

Цитата:
на пример перегрузка хостинга 502 и т.д.
как вариант использовать Ucoz или тому подобные хостинги

Цитата:
+ как я понимаю, ключ находится в явном виде ... т.е. никак не шифруется - это огромный минус
md5hash и тому подобное можна использовать, конечно это простенькая привязка, и обычный пользователь не сломает ее, а тот кто разбирается сломает все что угодно))

Цитата:
Поэтому советую ключ хранить в некой переменной в зашифрованом виде, в edit1 его дешифровывать, и в запросе
пример можна?
FleXik вне форума Ответить с цитированием
Старый 07.11.2012, 20:48   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

ваш readonly можно лего разлочить.. я делал так создавал сайт на хостинге писал скрипт ....делал к этому скрипту запрос он проверял в бд есть ли key если есть то true иначе false если фалсе то показываем юзеру окно в котором uniкод юзер пишет мне переводит мани я добавляю его юникод в бд он становиться премиум пользователем)
Кольша вне форума Ответить с цитированием
Старый 07.11.2012, 20:57   #6
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Цитата:
Сообщение от FleXik Посмотреть сообщение
как вариант использовать Ucoz или тому подобные хостинги
не стоит полагаться на какие то сторонние ресурсы ... Нельзя предугадать, что будет с Юкоз завтра, послезавтра, через месяц ...

Цитата:
Сообщение от FleXik Посмотреть сообщение
md5hash и тому подобное можна использовать, конечно это простенькая
пример можна?
в принципе сойдёт и md5 ...

myhddid - переменная, которая содержит ID винта
Код:
...
edit1.Text:= md5hash(myhddid );
...
hddid:=IdHTTP1.Get('http://site.ru/users/'+md5hash(myhddid )+'.txt');
...
В том случаи, если начнут ковырять память, зная тот ключ, который выводится в edit1.Text, то поменяю только те данные, что выводятся в edit и не затронут данные которые участвуют в IdHTTP1 запросе.

Не затронут только в том, случаи если будут просто память смотреть, но если начнут вашу программу прогонять на отладчике, то это не спасет ...
-Jack- вне форума Ответить с цитированием
Старый 07.11.2012, 20:57   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Кольша, даже проще.

Я просто изменю логическое условие присутствие чего-то там на хостинге, и в итоге любая не активная копия станет зарегистрированной. 1 байт с 01 в 00 поставить. =)
Человек_Борща вне форума Ответить с цитированием
Старый 07.11.2012, 21:00   #8
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
ваш readonly можно лего разлочить..
В принципе, метод, указанный мной выше, позволяет наплевать на то, что могут снять readonly )
-Jack- вне форума Ответить с цитированием
Старый 07.11.2012, 21:06   #9
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

+ если ставить привязку, то нужно позаботиться о защите своей программы (exe и dll )

Чем меньше будет всяких разных проверок, тем проще будет взломать программу. Начиная с замудренной системы активации программы, защита самой программы от изменений и модификаций, защита от отладчиков и т.п.
-Jack- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НУЖНА ХОТЯ БЫ ИДЕЯ ИДЕЯ РЕШЕНИЯ!) немного непонятная задача с массивом.... ngup_k Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2011 19:33
Идея жужка Фриланс 5 23.01.2011 11:02
Идея doniyor Свободное общение 4 24.04.2010 21:53
идея uk2 Свободное общение 31 25.12.2009 11:36
Есть идея gift Общие вопросы Delphi 1 23.03.2009 01:58