Система ключей для программы
| |
sk0rpi0n | Дата: Суббота, 18.02.2012, 16:06 | Сообщение # 1 |
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
| Всем привет, это опять я, и на этот раз я хочу узнать, каким образом можно сделать, чтобы программа активировалась только после ввода ключа(а каждый ключ - одноразовый). Собственно, у меня много идей, но они легко-взламываемые, и не сможет "крякнуть" только ламер. Собственно, хочу узнать, как это сделать. Вот мои варианты: 1. Сделать кучу ключей, которые вшиты в программу(например в массив), затем если введен любой из них, то писать в конфиг или в реестр о том, что программа активирована, а при каждом старте программы, соответственно, проверять через конфиг или реестр значение переменной "активация". 2. Залить на какой-нибудь сайт текстовый файл с ключами(можно даже зашифровать) и проверять по нему, и если человек ввёл ключ, то удалять его из того списка(но как это сделать - не знаю). Это если слить воедино все мои идеи. Но первый вариант легко взломать, да и второй тоже не особо защищённый, так что я прошу вас помочь мне, хотя бы советом.
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: Хотя нет, не удаление, а скорее присваивание одному пользователю один ключ... Не, ну не знаю, как грамотно и предельно просто можно всё это организовать!
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. Все ключи ты сможешь редактировать у себя.
Минусы: 1. Нужно много уинов. Хотя я думаю с девятизнаками проблемы не составит. 2. Нужен постоянно включенный комп для серва (если сервер на делфи будет).
Вообще можно придумать что угодно, но если тебе надо самому все контролировать, чтоб кейгены для программы не делали, то мой способ тебе подойдет.
Сообщение отредактировал 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
| Я бы с радостью, но не в ладах. Точно, надо учить 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, Не вариант
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 большинство антивирусов станут опознавать программу как запакованный\зашифрованный троян. Тогда это не выход. Ладно, буду думать, если придумаю, то напишу сюда статейку, как я это сделал, мб кому пригодится. Если есть ещё идеи, то пишите сюда, всё таки хочется сделать максимально оптимизированно и защищённо.
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 24.02.2012, 19:18 |
|
| |
dolphin | Дата: Пятница, 24.02.2012, 23:22 | Сообщение # 21 |
Администратор
Сообщений: 906
Статус: Offline
| Quote (Волк-1024) Как сказали в первом посте: "не сможет крякнуть только ламер" Т.е это всё довольно просто обходится.
Если ты про мои программы то там нет защиты как таковой, есть просто привязка к железу и получение ключа. Просто программы не стоят того чтобы писать мощную защиту, ну если только от нечего делать можно будет написать ).
Не сказал бы что просто взломать если применить несколько методов защиты, например - Использовать ассемблерные вставки, нестандартный способ ввода пароля, не хранить в одном месте, не хранить в чистом виде, не анализировать сразу после ввода кода, несколько алгоритмов для проверки пароля, отвлекающие манёвры, несколько переменных адресов для хранения пароля, можно запихнуть онлайн проверку, криптовка и упаковка, проверка сигнатур, проверка изменения размера. Вобщем методов моного, если умело применить взломать будет сложно. Ну а не взламываемых программ просто нет .
sk0rpi0n, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты?
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Волк-1024 | Дата: Пятница, 24.02.2012, 23:55 | Сообщение # 22 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Quote Если ты про мои программы Читаете мои мысли. Quote то там нет защиты как таковой Ну это я уже понял
Quote если применить несколько методов защиты Ага. И размер проги будет over 10мб.
Ну а так. Да. При комбинации способов будет труднее.
Quote не анализировать сразу после ввода кода Ууу. Это самое жестокое. Пример: крекер вводит липовый пароль в надежде, что она тот же час проверит его, а прога ему говорит: "Спасибо за использование нашей программы" и врубается. Крекер в недоумении: "Что за фигня?!" И после 5 минутного использования прога выдаёт: "Зарегистрируйте программу" и вылетает. Крекер скорее забьёт на неё, чем будет трассировать миллионы строк кода в отладчике (если прога не на ассемблере) все эти 5 минут пытаясь найти место проверки пароля. А если их несколько? То это вообще ппц будет.
Quote не хранить в одном месте, не хранить в чистом виде. несколько переменных адресов для хранения пароля Не проблема. Ведь все равно проверка будет одна на всех. Ну, или несколько.
Например?
Quote нестандартный способ ввода пароля Это какие?
Quote криптовка и упаковка Если прога легальная, то это ёё убьёт. В смысле она начнет, палится как закриптованый трой. Это при условии, что будут использованы монстры криптовки. Такие как: Themida, VMProtect, ASProtect и остальные. Другие же использовать не целесообразно т.к запросто снимаются.
Quote можно запихнуть онлайн проверку Отличный способ для игр.
Quote проверка изменения размера при крякинге, например замена инструкций на или на и т.д не приведёт к изменению размера программы. Изменится лишь контрольная сумма. И то не всегда.
Quote Ну а не взламываемых программ просто нет Что, правда, то, правда.
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, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты? Нет, мне не нужна усиленная защита, вы меня не правильно поняли. Я хочу простую проверку ключа, но не знаю, как запихнуть все ключи в массив при старте программы, не используя внешних файлов, вот моя дурацкая проблема...
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
| Да это мне понятно, как мне загнать сотни ключей именно внутри программы записанных(и соответственно как их туда записать, чтобы покороче было)? Сто присваиваний не хочу... Можно ли как нибудь в ресурсовый файл текстовик с ключами забабахать и прямо из него циклом проверять, верный ключ ввели или нет?
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Воскресенье, 26.02.2012, 19:04 |
|
| |
|