Пятница, 02.03.2012, 05:08 Приветствую вас Гость | Группа "Гости" 


[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 2 1 2 »
Модератор форума: gravitas  
delfcode » Программирование » Вопросы по Delphi » Система ключей для программы
Система ключей для программы
sk0rpi0n Дата: Суббота, 18.02.2012, 16:06 | Сообщение # 1
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Всем привет, это опять я, и на этот раз я хочу узнать, каким образом можно сделать, чтобы программа активировалась только после ввода ключа(а каждый ключ - одноразовый). Собственно, у меня много идей, но они легко-взламываемые, и не сможет "крякнуть" только ламер. Собственно, хочу узнать, как это сделать.
Вот мои варианты:
1. Сделать кучу ключей, которые вшиты в программу(например в массив), затем если введен любой из них, то писать в конфиг или в реестр о том, что программа активирована, а при каждом старте программы, соответственно, проверять через конфиг или реестр значение переменной "активация".
2. Залить на какой-нибудь сайт текстовый файл с ключами(можно даже зашифровать) и проверять по нему, и если человек ввёл ключ, то удалять его из того списка(но как это сделать - не знаю).
Это если слить воедино все мои идеи. Но первый вариант легко взломать, да и второй тоже не особо защищённый, так что я прошу вас помочь мне, хотя бы советом. smile

C++ - попса :D
 
link993 Дата: Суббота, 18.02.2012, 16:37 | Сообщение # 2
Частый гость
Группа: Пользователи
Сообщений: 62
Статус: Offline
С текстовым файлом идея хорошая. Взломать будет тяжело. + ты сможешь всегда менять список ключей. Рекомендую второй способ.
 
sk0rpi0n Дата: Суббота, 18.02.2012, 18:43 | Сообщение # 3
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Просто я хочу автоматизировать удаление купленных ключей(через плати.ру хочу продавать свою программу, за символическую плату в 40-60 р.).

UPD: Хотя нет, не удаление, а скорее присваивание одному пользователю один ключ... Не, ну не знаю, как грамотно и предельно просто можно всё это организовать! biggrin

C++ - попса :D

Сообщение отредактировал sk0rpi0n - Суббота, 18.02.2012, 18:57
 
link993 Дата: Суббота, 18.02.2012, 20:59 | Сообщение # 4
Частый гость
Группа: Пользователи
Сообщений: 62
Статус: Offline
Я в свое время так делал: в каждой программе я создавал мини клиент на TicqClient. Как только программа включалась открывалось окошечко, где требовалось ввести ключ. Пользователь вводил ключ, отсылал мне его на программу-сервер, на нем была такая штучка - if msg = '666-999' то сервер отсылал команду клиенту, чтобы форма "авторизации" убралась. Список ключей сделать очень просто.

Плюсы:
1. Трудно взломать (разве что форму авторизации как-то закрыть, но там можно всякого понаписать)
2. Все ключи ты сможешь редактировать у себя. smile

Минусы:
1. Нужно много уинов. Хотя я думаю с девятизнаками проблемы не составит.
2. Нужен постоянно включенный комп для серва (если сервер на делфи будет).

Вообще можно придумать что угодно, но если тебе надо самому все контролировать, чтоб кейгены для программы не делали, то мой способ тебе подойдет. smile

Сообщение отредактировал link993 - Суббота, 18.02.2012, 21:00
 
sk0rpi0n Дата: Воскресенье, 19.02.2012, 12:39 | Сообщение # 5
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
В принципе, я не знаю вообще: нужно это или нет?
Программу единицы будут покупать, я думаю, хотя и они в инет могут слить.

C++ - попса :D
 
GReIIIHuK Дата: Понедельник, 20.02.2012, 16:37 | Сообщение # 6
Частый гость
Группа: Проверенные
Сообщений: 76
Статус: Offline
Ссылаюсь на 2-ой вариант(предоставленный в теме). Чтобы не держать сервер, реализуй все на php. И будет тебе счастье. =)

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
 
sk0rpi0n Дата: Понедельник, 20.02.2012, 22:08 | Сообщение # 7
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
реализуй все на php

Я бы с радостью, но не в ладах. Точно, надо учить php, не первый раз уже убеждаюсь, что нужно... Ладно, если что-нибудь придумаю - отпишу, мб кому пригодится.

C++ - попса :D
 
link993 Дата: Понедельник, 20.02.2012, 22:10 | Сообщение # 8
Частый гость
Группа: Пользователи
Сообщений: 62
Статус: Offline
Тогда сделай простой пароль на проге, прямо в ней зашифруй его:-)
 
sk0rpi0n Дата: Четверг, 23.02.2012, 20:15 | Сообщение # 9
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
В общем, я решил сделать массив ключей в проге, и после ввода быстро пробегать по нему проверкой на совпадения. Но ключей много, и мне не хочется для каждого элемента писать присваивание, это будет быдлокод. Как сделать, чтобы при старте программы все ключи уже были забиты в массив? Именно внутри программы, не подгружая извне нужно(желательно).

C++ - попса :D
 
dolphin Дата: Пятница, 24.02.2012, 00:25 | Сообщение # 10
Администратор
Группа: Администраторы
Сообщений: 839
Статус: Offline
А почему нельзя просто к железу привязать? К процессору, к харду?



Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
Волк-1024 Дата: Пятница, 24.02.2012, 01:28 | Сообщение # 11
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
dolphin, Не вариант biggrin biggrin biggrin





Delphi+Assembler=Сила
 
dolphin Дата: Пятница, 24.02.2012, 02:23 | Сообщение # 12
Администратор
Группа: Администраторы
Сообщений: 839
Статус: Offline
Почему? Много программ используют привязку. Самый простой и действенный способ подходящий как раз раз под наше так сказать авторское по. Но есть один недостаток - при смене железа необходимо перерегистрировать программу.



Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
Волк-1024 Дата: Пятница, 24.02.2012, 13:00 | Сообщение # 13
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
Как сказали в первом посте: "не сможет крякнуть только ламер" Т.е это всё довольно просто обходится.





Delphi+Assembler=Сила
 
sk0rpi0n Дата: Пятница, 24.02.2012, 13:30 | Сообщение # 14
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
Но есть один недостаток - при смене железа необходимо перерегистрировать программу.

Отчасти из-за этого. Все таки я хочу узнать, как мне забить много ключей в массив не используя миллионы присваиваний, но и не используя сторонние файлы для подгрузки из них?

C++ - попса :D
 
Волк-1024 Дата: Пятница, 24.02.2012, 13:36 | Сообщение # 15
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
А где ключи располагаются в изначальном виде? До забития. А забить их можно простым циклом или сразу записать их туда.





Delphi+Assembler=Сила


Сообщение отредактировал Волк-1024 - Пятница, 24.02.2012, 13:44
 
sk0rpi0n Дата: Пятница, 24.02.2012, 13:46 | Сообщение # 16
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
А где ключи располагаются в изначальном виде?

Вот я хочу, чтобы сразу в программе, но это не очень хороший вариант, как я полагаю... Может, стоит запихнуть текстовый файл как ресурс, и проверять циклом правильность введенного ключа по нему?

C++ - попса :D

Сообщение отредактировал sk0rpi0n - Пятница, 24.02.2012, 13:46
 
Myips Дата: Пятница, 24.02.2012, 16:21 | Сообщение # 17
Участник
Группа: Пользователи
Сообщений: 25
Статус: Offline
А если попробовать ASProtect? http://exelab.ru/download.php?action=get&n=NjE1
 
sk0rpi0n Дата: Пятница, 24.02.2012, 18:07 | Сообщение # 18
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
А если попробовать ASProtect?

Бесплатен? И если да, то как использовать?(хотя тут сам может разберусь)

C++ - попса :D

Сообщение отредактировал sk0rpi0n - Пятница, 24.02.2012, 18:08
 
Волк-1024 Дата: Пятница, 24.02.2012, 18:29 | Сообщение # 19
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
Тогда уж лучше Themid' у использовать. Правда, если использовать эти пакеры, большинство антивирусов станут опознавать программу как запакованный\зашифрованный троян.





Delphi+Assembler=Сила


Сообщение отредактировал Волк-1024 - Пятница, 24.02.2012, 18:30
 
sk0rpi0n Дата: Пятница, 24.02.2012, 19:17 | Сообщение # 20
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
большинство антивирусов станут опознавать программу как запакованный\зашифрованный троян.

Тогда это не выход. Ладно, буду думать, если придумаю, то напишу сюда статейку, как я это сделал, мб кому пригодится.
Если есть ещё идеи, то пишите сюда, всё таки хочется сделать максимально оптимизированно и защищённо. smile

C++ - попса :D

Сообщение отредактировал sk0rpi0n - Пятница, 24.02.2012, 19:18
 
dolphin Дата: Пятница, 24.02.2012, 23:22 | Сообщение # 21
Администратор
Группа: Администраторы
Сообщений: 839
Статус: Offline
Quote (Волк-1024)
Как сказали в первом посте: "не сможет крякнуть только ламер" Т.е это всё довольно просто обходится.


Если ты про мои программы то там нет защиты как таковой, есть просто привязка к железу и получение ключа. Просто программы не стоят того чтобы писать мощную защиту, ну если только от нечего делать можно будет написать ).

Не сказал бы что просто взломать если применить несколько методов защиты, например - Использовать ассемблерные вставки, нестандартный способ ввода пароля, не хранить в одном месте, не хранить в чистом виде, не анализировать сразу после ввода кода, несколько алгоритмов для проверки пароля, отвлекающие манёвры, несколько переменных адресов для хранения пароля, можно запихнуть онлайн проверку, криптовка и упаковка, проверка сигнатур, проверка изменения размера. Вобщем методов моного, если умело применить взломать будет сложно. Ну а не взламываемых программ просто нет biggrin .

sk0rpi0n, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты?



Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
Волк-1024 Дата: Пятница, 24.02.2012, 23:55 | Сообщение # 22
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
Quote
Если ты про мои программы
blink Читаете мои мысли. biggrin
Quote
то там нет защиты как таковой
Ну это я уже понял biggrin biggrin biggrin

Quote
если применить несколько методов защиты
Ага. И размер проги будет over 10мб. biggrin biggrin biggrin

Ну а так. Да. При комбинации способов будет труднее.

Quote
не анализировать сразу после ввода кода
Ууу. Это самое жестокое. Пример: крекер вводит липовый пароль в надежде, что она тот же час проверит его, а прога ему говорит: "Спасибо за использование нашей программы" и врубается. Крекер в недоумении: "Что за фигня?!" И после 5 минутного использования прога выдаёт: "Зарегистрируйте программу" и вылетает. biggrin Крекер скорее забьёт на неё, чем будет трассировать миллионы строк кода в отладчике (если прога не на ассемблере) все эти 5 минут пытаясь найти место проверки пароля. А если их несколько? То это вообще ппц будет.

Quote
не хранить в одном месте, не хранить в чистом виде. несколько переменных адресов для хранения пароля
Не проблема. Ведь все равно проверка будет одна на всех. Ну, или несколько.

Quote
отвлекающие манёвры
Например?

Quote
нестандартный способ ввода пароля
Это какие?

Quote
криптовка и упаковка
Если прога легальная, то это ёё убьёт. В смысле она начнет, палится как закриптованый трой. Это при условии, что будут использованы монстры криптовки. Такие как: Themida, VMProtect, ASProtect и остальные. Другие же использовать не целесообразно т.к запросто снимаются.

Quote
можно запихнуть онлайн проверку
Отличный способ для игр.

Quote
проверка изменения размера
при крякинге, например замена инструкций
Code
jne
на
Code
jmp
или
Code
xor eax, eax
на
Code
sub eax, eax
и т.д не приведёт к изменению размера программы. Изменится лишь контрольная сумма. И то не всегда.

Quote
Ну а не взламываемых программ просто нет
Что, правда, то, правда. smile

biggrin biggrin biggrin





Delphi+Assembler=Сила


Сообщение отредактировал Волк-1024 - Суббота, 25.02.2012, 00:28
 
sk0rpi0n Дата: Воскресенье, 26.02.2012, 10:14 | Сообщение # 23
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
sk0rpi0n, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты?

Нет, мне не нужна усиленная защита, вы меня не правильно поняли. Я хочу простую проверку ключа, но не знаю, как запихнуть все ключи в массив при старте программы, не используя внешних файлов, вот моя дурацкая проблема... biggrin

C++ - попса :D
 
dolphin Дата: Воскресенье, 26.02.2012, 16:44 | Сообщение # 24
Администратор
Группа: Администраторы
Сообщений: 839
Статус: Offline
Ну так сделай
Code
Array1 : Array[0..100] of string или Array2 : Array of Array of string




Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
sk0rpi0n Дата: Воскресенье, 26.02.2012, 19:04 | Сообщение # 25
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
Quote
Ну так сделай

Да это мне понятно, как мне загнать сотни ключей именно внутри программы записанных(и соответственно как их туда записать, чтобы покороче было)? Сто присваиваний не хочу... Можно ли как нибудь в ресурсовый файл текстовик с ключами забабахать и прямо из него циклом проверять, верный ключ ввели или нет?

C++ - попса :D

Сообщение отредактировал sk0rpi0n - Воскресенье, 26.02.2012, 19:04
 
delfcode » Программирование » Вопросы по Delphi » Система ключей для программы
Страница 1 из 2 1 2 »
Поиск:
delfcode.ru © 2008 - 2012 Хостинг от uCoz