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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 15:03   #1
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию Платные приложение, принцип защиты.

Достаточно много времени потратил на решение этого вопроса.
В итоге появились такие мысли.

1) Необходимо как-то давать каждому пользователю свой ID, можно привязывать к железу но как пишут в интернете все это можно подменить. Сегодня совершенно случайно пришло в голову. А почему бы не делать ID опираясь на дату и время создания файла. Например: 240029032011 (час,минуты,дата,месяц,год - при необходимости, запутать пользователей можно поделив или умножить это число на что либо). Что скажете?

Далее программа делает коннект к файлу на моем сервере, в нем будут содержатся все зарегистрированные ID пользователей, пример:
220024032011
150029012011
210019012011
240020032011

и делать условие если в файле есть id то программа зарегистрирована.

Как вам такая идея?
Сразу оговорюсь, программа достаточно специфическая, и я не думаю что файл с ID зарегистрированных пользователей когда-то станет более 50 килобайт. + программа работает непосредственно с интернетом и коннект к моему серверу не должно быть проблемой для пользователей.


Так же посоветуйте пожалуйста чем запоковать программу? Интересует бесплатный и в то же время хороший софт.

Последний раз редактировалось celovec; 29.03.2011 в 15:14.
celovec вне форума Ответить с цитированием
Старый 29.03.2011, 15:26   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Достаточно много времени потратил на решение этого вопроса.

> Что скажете?

скажу, что зря потратили своё время.

Тратить более 5-ти минут на защиту можно, если у вас продукт уровня AutoCAD или Mathlab. Ну или если вы зарабатываете как эксперт по защите программ.

Во всех остальных случаях эти 5 минут тратятся на то, чтобы привесить навесную защиту типа армадилло, ехекрупт и подобного, или на написание своей простейшей проверки серийника. Ничего больше там не надо.

Пока конкуренты страдали над защитами, авторы WinZip (серийники к которому валялись на каждом углу) тупо зарабатывали деньги. Поищите на досуге, сколько они подняли.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.03.2011, 15:37   #3
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

В целом что скажете о моей идеи?
celovec вне форума Ответить с цитированием
Старый 29.03.2011, 15:40   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Сначала нужно удостоиться чести, чтобы кто-то попытался твою программу взломать.
Цитата:
и делать условие если в файле есть id то программа зарегистрирована
Хакер просто уберет проверку этого условия и вуаля... Мне кажется, единственно надежную защиту я делал в бухгалтерских программах.
Принцип такой: в программе клинту нужно выводить отчеты, в которых будут фигурировать ИМЕННО ЕГО реквизиты (учетный номер плательщика, расчетный счет, МФО и адрес банка, полное название организации и т.п.). И именно по этим реквизитам закодирован ключ, который я даю клиенту. И из этого ключа все данные в расшифрованном виде выходят на печать. Таким образом, хакеру необходимо зашифровать реквизиты плательщика тем же алгоритмом что и у меня. А алгоритм серьезный. Плюс MD5 там присутствует. Я бы за такую работу не взялся ни за какие деньги. Нервы дороже...
_SERGEYX_ вне форума Ответить с цитированием
Старый 29.03.2011, 15:49   #5
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

_SERGEYX_, здорова но это для меня слишком сложно. Да и как говорил veniside не нужно мне так усложнять.


Цитата:
Хакер просто уберет проверку этого условия и вуаля...
Да, вы правы. Я слышал о софте который способен зашифровывать некоторые участки кода. Посоветуйте пожалуйста что-то бесплатно. Это немного должно усложит работу нехорошему дяде

И хотелось бы еще от ребят с форума узнать как они защищали свои программы.

P.S. в продолжение темы:
Код:
  var s:TSearchRec;
begin
 FindFirst('./'+ExtractFileName(Application.ExeName),s);
 s.FindData.ftCreationTime. - даст дату создания.
На всех ли Windows такой код будет работать правильно?

Последний раз редактировалось celovec; 29.03.2011 в 15:52.
celovec вне форума Ответить с цитированием
Старый 29.03.2011, 15:57   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Ну а в целом что скажете о моей идеи?

Ну и в целом ерунда.

1) узнать, что в качестве id используется дата файла — не такой уж бином ньютона. Зато поменять дату файла на любое нужное хакеру число на порядок проще, чем поменять серийник винта или матери.

2) для общения с сервером нужно поднимать SSL, иначе поднимут левый сервер с левыми id

3) "делать условие если в файле есть id то программа зарегистрирована"
Это условие отламывается за полторы минуту. Т.е. то, что вы нагородили с датами, файлами, серверами, ссл, легко отламывается в одном месте. Общая прочность защиты определяется её самым тонким местом.

Как это исправить?

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

2) тут ничего не исправить, раз уж вам захотелось держать свой сервер, держите

3) проверка типа "любит — не любит" (есть id/нет id) отламывается вне зависимости от других ваших ухищрений очень быстро и навсегда. Поэтому, id должно служить только и исключительно целям опознавания юзера. Если юзер опознан, сервер по запросу может выслать ему некую информацию, которая разблокирует дальнейшую работу программы. А может и не выслать. Например, если с одного IP каждый день приходит запрос с новым id, то сервер может его послать (менять винты три дня подряд вряд ли кто-то будет).

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

Если видим, что ключ своровали, выпускаем новую версию программы, в котором константы зашифрованы другим ключём. Другой ключ будет доступен старым пользователям, так что они смогут пользоваться новой версией без проблем. А хакеру прийдётся опять искать способ доступа к новому ключу.

Поднимете такое? Надеюсь, что нет, иначе у вас получится ещё одна армадилла, которая будет хуже имеющейся.

Так что не тратьте на защиту больше 5-ти минут.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 29.03.2011, 17:18   #7
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Да, вы правы не стоит ломать голову над этим. Наверное даже чем проще тем надежнее.

Давайте тогда сделаем так, помогите пожалуйста направить меня в правильное русло:
Уравнение:
(Дата_создания_файла+171)*3+42 = Получаем идентификатор.

Далее делаем условие:
Если Дата_создания_файла*3 = Дата_создания_файла*3 то все ОК.

То есть человек нам дает идентификатор - (Дата_создания_файла+171)*3+42
мы его разбираем, получаем дату создания далее умножаем * 3 и высылаем клиенту.

Как вам?
celovec вне форума Ответить с цитированием
Старый 29.03.2011, 17:34   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Оставьте дату создания файла в покое
Если вы сумеете написать программу, которую все будут пытаться взломать, поверьте, защита программы уйдет на второй план. Даже сами будете "левые" ключи в интернет подбрасывать чтобы побольше народу привлечь.
_SERGEYX_ вне форума Ответить с цитированием
Старый 29.03.2011, 17:34   #9
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Как вам?
Это просто называется - намутил. Нет и наверное никогда не будет супер мега невзламываемой программы. Наверное если все используемые ОС перейдут на полностью интернет-обеспечение своих служб, тогда возможно и можно будет что-то дельное написать...
А пока что ваша защита рушится так: выкачивается ваш сервер, ставится на тот же денвер, и все. и это самый наисложнейший способ, который не требует особых навыков программирования.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 29.03.2011, 19:51   #10
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

_SERGEYX_, ну а какой простенький способ защиты вы предлагаете?
На мой взгляд мод последний вариант до безумия прост.
celovec вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принцип решения. MAKEDON Помощь студентам 6 16.01.2010 17:57
Задача:в вижуал с++ Разработать приложение-сервер и приложение (смотри дальше сообщение) Мила777 Фриланс 2 21.10.2009 11:05
BusinessSkinForm, DynamicSkinForm и AlphaControls платные компоненты? Polotenchik Компоненты Delphi 11 05.07.2009 13:56