Среда, 24.04.2024, 22:27 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
delphicode » Delphi » Вопросы по Delphi » Система ключей для программы
Система ключей для программы
sk0rpi0nДата: Суббота, 18.02.2012, 16:06 | Сообщение # 1
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Всем привет, это опять я, и на этот раз я хочу узнать, каким образом можно сделать, чтобы программа активировалась только после ввода ключа(а каждый ключ - одноразовый). Собственно, у меня много идей, но они легко-взламываемые, и не сможет "крякнуть" только ламер. Собственно, хочу узнать, как это сделать.
Вот мои варианты:
1. Сделать кучу ключей, которые вшиты в программу(например в массив), затем если введен любой из них, то писать в конфиг или в реестр о том, что программа активирована, а при каждом старте программы, соответственно, проверять через конфиг или реестр значение переменной "активация".
2. Залить на какой-нибудь сайт текстовый файл с ключами(можно даже зашифровать) и проверять по нему, и если человек ввёл ключ, то удалять его из того списка(но как это сделать - не знаю).
Это если слить воедино все мои идеи. Но первый вариант легко взломать, да и второй тоже не особо защищённый, так что я прошу вас помочь мне, хотя бы советом. smile


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

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


C++ - попса :D

Сообщение отредактировал sk0rpi0n - Суббота, 18.02.2012, 18:57
 
link993Дата: Суббота, 18.02.2012, 20:59 | Сообщение # 4
Участник
Зарегистрирован: 13.02.2011
Группа: Пользователи
Сообщений: 93
Статус: 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
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
В принципе, я не знаю вообще: нужно это или нет?
Программу единицы будут покупать, я думаю, хотя и они в инет могут слить.


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

Skype:"greiiihuk."


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

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


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

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

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

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

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

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

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

Pascal, C\C++, Assembler, Python
 
sk0rpi0nДата: Пятница, 24.02.2012, 13:30 | Сообщение # 14
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Quote
Но есть один недостаток - при смене железа необходимо перерегистрировать программу.

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


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

Pascal, C\C++, Assembler, Python

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

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


C++ - попса :D

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

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


C++ - попса :D

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

Pascal, C\C++, Assembler, Python

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

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


C++ - попса :D

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


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

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

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


Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
Волк-1024Дата: Пятница, 24.02.2012, 23:55 | Сообщение # 22
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: 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


Pascal, C\C++, Assembler, Python

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

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


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


Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

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

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


C++ - попса :D

Сообщение отредактировал sk0rpi0n - Воскресенье, 26.02.2012, 19:04
 
delphicode » Delphi » Вопросы по Delphi » Система ключей для программы
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz