[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
|
Система ключей для программы
|
|
sk0rpi0n
|
Дата: Суббота, 18.02.2012, 16:06 | Сообщение # 1
|
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
|
Всем привет, это опять я, и на этот раз я хочу узнать, каким образом можно сделать, чтобы программа активировалась только после ввода ключа(а каждый ключ - одноразовый). Собственно, у меня много идей, но они легко-взламываемые, и не сможет "крякнуть" только ламер. Собственно, хочу узнать, как это сделать.
Вот мои варианты:
1. Сделать кучу ключей, которые вшиты в программу(например в массив), затем если введен любой из них, то писать в конфиг или в реестр о том, что программа активирована, а при каждом старте программы, соответственно, проверять через конфиг или реестр значение переменной "активация".
2. Залить на какой-нибудь сайт текстовый файл с ключами(можно даже зашифровать) и проверять по нему, и если человек ввёл ключ, то удалять его из того списка(но как это сделать - не знаю).
Это если слить воедино все мои идеи. Но первый вариант легко взломать, да и второй тоже не особо защищённый, так что я прошу вас помочь мне, хотя бы советом. 
C++ - попса :D
|
| |
|
|
|
|
link993
|
Дата: Суббота, 18.02.2012, 16:37 | Сообщение # 2
|
Частый гость
Группа: Пользователи
Сообщений: 62
Статус: Offline
|
С текстовым файлом идея хорошая. Взломать будет тяжело. + ты сможешь всегда менять список ключей. Рекомендую второй способ. |
| |
|
|
|
|
sk0rpi0n
|
Дата: Суббота, 18.02.2012, 18:43 | Сообщение # 3
|
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
|
Просто я хочу автоматизировать удаление купленных ключей(через плати.ру хочу продавать свою программу, за символическую плату в 40-60 р.).
UPD: Хотя нет, не удаление, а скорее присваивание одному пользователю один ключ... Не, ну не знаю, как грамотно и предельно просто можно всё это организовать! 
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Суббота, 18.02.2012, 18:57
|
| |
|
|
|
|
link993
|
Дата: Суббота, 18.02.2012, 20:59 | Сообщение # 4
|
Частый гость
Группа: Пользователи
Сообщений: 62
Статус: Offline
|
Я в свое время так делал: в каждой программе я создавал мини клиент на TicqClient. Как только программа включалась открывалось окошечко, где требовалось ввести ключ. Пользователь вводил ключ, отсылал мне его на программу-сервер, на нем была такая штучка - if msg = '666-999' то сервер отсылал команду клиенту, чтобы форма "авторизации" убралась. Список ключей сделать очень просто.
Плюсы:
1. Трудно взломать (разве что форму авторизации как-то закрыть, но там можно всякого понаписать)
2. Все ключи ты сможешь редактировать у себя. 
Минусы:
1. Нужно много уинов. Хотя я думаю с девятизнаками проблемы не составит.
2. Нужен постоянно включенный комп для серва (если сервер на делфи будет).
Вообще можно придумать что угодно, но если тебе надо самому все контролировать, чтоб кейгены для программы не делали, то мой способ тебе подойдет. 
Сообщение отредактировал 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, Не вариант 

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
большинство антивирусов станут опознавать программу как запакованный\зашифрованный троян.
Тогда это не выход. Ладно, буду думать, если придумаю, то напишу сюда статейку, как я это сделал, мб кому пригодится.
Если есть ещё идеи, то пишите сюда, всё таки хочется сделать максимально оптимизированно и защищённо. 
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 24.02.2012, 19:18
|
| |
|
|
|
|
dolphin
|
Дата: Пятница, 24.02.2012, 23:22 | Сообщение # 21
|
Администратор
Группа: Администраторы
Сообщений: 839
Статус: Offline
|
Quote (Волк-1024)
Как сказали в первом посте: "не сможет крякнуть только ламер" Т.е это всё довольно просто обходится.
Если ты про мои программы то там нет защиты как таковой, есть просто привязка к железу и получение ключа. Просто программы не стоят того чтобы писать мощную защиту, ну если только от нечего делать можно будет написать ).
Не сказал бы что просто взломать если применить несколько методов защиты, например - Использовать ассемблерные вставки, нестандартный способ ввода пароля, не хранить в одном месте, не хранить в чистом виде, не анализировать сразу после ввода кода, несколько алгоритмов для проверки пароля, отвлекающие манёвры, несколько переменных адресов для хранения пароля, можно запихнуть онлайн проверку, криптовка и упаковка, проверка сигнатур, проверка изменения размера. Вобщем методов моного, если умело применить взломать будет сложно. Ну а не взламываемых программ просто нет .
sk0rpi0n, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты?

Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
|
| |
|
|
|
|
Волк-1024
|
Дата: Пятница, 24.02.2012, 23:55 | Сообщение # 22
|
Продвинутый
Группа: Проверенные
Сообщений: 111
Статус: Offline
|
Quote
Если ты про мои программы
Читаете мои мысли. 
Quote
то там нет защиты как таковой
Ну это я уже понял 
Quote
если применить несколько методов защиты
Ага. И размер проги будет over 10мб. 
Ну а так. Да. При комбинации способов будет труднее.
Quote
не анализировать сразу после ввода кода
Ууу. Это самое жестокое. Пример: крекер вводит липовый пароль в надежде, что она тот же час проверит его, а прога ему говорит: "Спасибо за использование нашей программы" и врубается. Крекер в недоумении: "Что за фигня?!" И после 5 минутного использования прога выдаёт: "Зарегистрируйте программу" и вылетает. Крекер скорее забьёт на неё, чем будет трассировать миллионы строк кода в отладчике (если прога не на ассемблере) все эти 5 минут пытаясь найти место проверки пароля. А если их несколько? То это вообще ппц будет.
Quote
не хранить в одном месте, не хранить в чистом виде. несколько переменных адресов для хранения пароля
Не проблема. Ведь все равно проверка будет одна на всех. Ну, или несколько.
Quote
отвлекающие манёвры
Например?
Quote
нестандартный способ ввода пароля
Это какие?
Quote
криптовка и упаковка
Если прога легальная, то это ёё убьёт. В смысле она начнет, палится как закриптованый трой. Это при условии, что будут использованы монстры криптовки. Такие как: Themida, VMProtect, ASProtect и остальные. Другие же использовать не целесообразно т.к запросто снимаются.
Quote
можно запихнуть онлайн проверку
Отличный способ для игр.
Quote
проверка изменения размера
при крякинге, например замена инструкций
на
или
на
и т.д не приведёт к изменению размера программы. Изменится лишь контрольная сумма. И то не всегда.
Quote
Ну а не взламываемых программ просто нет
Что, правда, то, правда. 


Delphi+Assembler=Сила
Сообщение отредактировал Волк-1024 - Суббота, 25.02.2012, 00:28
|
| |
|
|
|
|
sk0rpi0n
|
Дата: Воскресенье, 26.02.2012, 10:14 | Сообщение # 23
|
Был не раз
Группа: Пользователи
Сообщений: 41
Статус: Offline
|
Quote
sk0rpi0n, а тебе стоит подумать стоит ли твой софт такой усиленной защиты? Кстати что за программа у тебя для защиты?
Нет, мне не нужна усиленная защита, вы меня не правильно поняли. Я хочу простую проверку ключа, но не знаю, как запихнуть все ключи в массив при старте программы, не используя внешних файлов, вот моя дурацкая проблема... 
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
|
Да это мне понятно, как мне загнать сотни ключей именно внутри программы записанных(и соответственно как их туда записать, чтобы покороче было)? Сто присваиваний не хочу... Можно ли как нибудь в ресурсовый файл текстовик с ключами забабахать и прямо из него циклом проверять, верный ключ ввели или нет?
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Воскресенье, 26.02.2012, 19:04
|
| |
|
|
| delfcode.ru © 2008 - 2012 Хостинг от uCoz |
|
|