Нужен совет по защите продукта
От: NWP Россия  
Дата: 03.12.15 15:54
Оценка:
В общем имеется продукт, библиотека для программистов (некоторое API).
Поставляется частично в исходниках, частично в виде скомпилированной dll.
Библиотека в онлайн не работает ни как, только офлайн.
На данный момент защита встроена в dll. Она элементарная и заключается в следующем:
Для работы с АПИ его необходимо проинициализировать. В функцию инициализации передается серийный номер. Внутри функции инициализации проверяется валидность ключа, и если он не валиден или отсутствует, то переходим в режим работы trial. В этом режиме либа смотрит в реестр и если там нет спец. записи, то выводит в модальном режиме окно, с просьбой приобрести лицензию, либо напомнить позже. Тут важно, что именно в модальном режиме. То есть выполнение инициализации блокируется, пока юзер не нажмет какую либо кнопку. Если юзер жмет на 'напомнить позже', то окно на несколько часов скрывается и не мешает программисту работать.

В общем все меня вроде устраивало, пока я не понял, что, возможно, я теряю много продаж.
Дело в том, что это API ориентировано не только на десктопные приложения, но и на серверные. Причем последние выполняются без пользовательской сессии. В результате, когда программист начинает тестить АПИ на сервере, у него просто "зависает" инициализация, и человек не разобравшись почему отказывается от покупки.
Каждый месяц обращается несколько человек с подобным вопросом. А сколь просто молча проходят мимо?

В общем вопрос. Что делать? Как можно защитить хоть в минимальном режиме API.
Ограничивать функционал не хочу, люди не смогут протестить то, что им нужно. Какие есть варианты?
Re: Нужен совет по защите продукта
От: Carc Россия http://www.amlpages.com/home.php
Дата: 03.12.15 15:59
Оценка:
Здравствуйте, NWP, Вы писали:


NWP>В общем вопрос. Что делать? Как можно защитить хоть в минимальном режиме API.

NWP>Ограничивать функционал не хочу, люди не смогут протестить то, что им нужно. Какие есть варианты?
А что либа делает?
Тем более в онлайн? Какие-то данные выдает пользующему коду? Может туда какой-нить ватермарк наложить в стиле "найдено 10 вирусов, 1 вылечили, 9 после оплаты"!?! Ну в смысле выдать первые результаты валидные, а дальше фейковые с предложением купить.

Только без понимания, что делает либа, и что от нее получает вызывающий код, навскидку предложить что-то сложно. Но как направление мысли...
Aml Pages Home
Re[2]: Нужен совет по защите продукта
От: NWP Россия  
Дата: 03.12.15 16:07
Оценка:
Здравствуйте, Carc, Вы писали:

C>А что либа делает?

C>Тем более в онлайн?

В онлайн ничего не делает. Только офлайн.

C>Какие-то данные выдает пользующему коду? Может туда какой-нить ватермарк наложить в стиле "найдено 10 вирусов, 1 вылечили, 9 после оплаты"!?! Ну в смысле выдать первые результаты валидные, а дальше фейковые с предложением купить.


Проблема в том, что АПИ довольно разнопланово. Кому то нужно одно, кому то другое. Получается что нужно блокировать весь функционал.

Раньше был ватермарк, но он только на генерируемые либой изображения ставился. А если юзеру не нужно было генерить изображения, то он мог даже и не узнать никогда о том, что либу надо покупать
Поэтому я от него отказался в пользу вот этого всплывающего окна как раз.
Re[3]: Нужен совет по защите продукта
От: pva  
Дата: 03.12.15 16:41
Оценка: 1 (1) +1
Здравствуйте, NWP, Вы писали:

NWP>Раньше был ватермарк, но он только на генерируемые либой изображения ставился. А если юзеру не нужно было генерить изображения, то он мог даже и не узнать никогда о том, что либу надо покупать

NWP>Поэтому я от него отказался в пользу вот этого всплывающего окна как раз.
Можешь, например, ввести код ошибки ERROR_NO_LICENSE и возвращать его программистам в наиболее используемых функциях.
Не забудь только в доке описать что к чему.
newbie
Re[4]: Нужен совет по защите продукта
От: NWP Россия  
Дата: 03.12.15 17:01
Оценка:
Здравствуйте, pva, Вы писали:

pva>Можешь, например, ввести код ошибки ERROR_NO_LICENSE и возвращать его программистам в наиболее используемых функциях.

pva>Не забудь только в доке описать что к чему.

Тогда они не смогут протестить эти самые наиболее востребованные функции. Это мне не очень нравится.
Re[5]: Нужен совет по защите продукта
От: Carc Россия http://www.amlpages.com/home.php
Дата: 03.12.15 17:32
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>Здравствуйте, pva, Вы писали:


pva>>Можешь, например, ввести код ошибки ERROR_NO_LICENSE и возвращать его программистам в наиболее используемых функциях.

pva>>Не забудь только в доке описать что к чему.

NWP>Тогда они не смогут протестить эти самые наиболее востребованные функции. Это мне не очень нравится.

Тогда только time limited, и только, если нужен полный функционал.
Aml Pages Home
Re: Нужен совет по защите продукта
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 03.12.15 17:32
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>Ограничивать функционал не хочу, люди не смогут протестить то, что им нужно. Какие есть варианты?


А что если пересмотреть политику лицензирования и продавать именно "Разработческие"/"Интерактивные" ключи? Т.е. в неинтерактивном режиме пусть себе работает, а в противном случае отображать все эти Nag Screen'ы.
HgLab: Mercurial Server and Repository Management for Windows
Re[5]: Нужен совет по защите продукта
От: pva  
Дата: 03.12.15 17:57
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>Тогда они не смогут протестить эти самые наиболее востребованные функции. Это мне не очень нравится.

Почему не смогут? Сделай какой-нибудь код триальный и пропиши его в документации и пусть для тестирования его используют, а при выносе в продакшн чтоб требовался уже купленный код.
newbie
Re: Нужен совет по защите продукта
От: MikePetrichenko Беларусь www.btframework.com
Дата: 03.12.15 19:00
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>Каждый месяц обращается несколько человек с подобным вопросом. А сколь просто молча проходят мимо?


Забить. Молча проходят мало. По опыту. Но, если и их не хочется терять, то не так уж и сложно определить, что либа крутится в сервисе. Из сервиса достучаться до Desktop тоже не особая проблема. Там и показать окошко.

Это вариант номер раз. Вариант номер два: возвращать документированный код ошибки. В этом случае либа работает, скажем, 20 минут и требует рестарта (ну или как-то так). Ну и вариант номер три: триальный ключ.
Bluetooth, IrDA, WiFi and Serial Ports SDK for .NET, ActiveX, C++ and VCL
Spektrum Telemetry Log File Viewer
Re[2]: Нужен совет по защите продукта
От: NWP Россия  
Дата: 03.12.15 22:30
Оценка:
Здравствуйте, MikePetrichenko, Вы писали:

MP>Здравствуйте, NWP, Вы писали:


NWP>>Каждый месяц обращается несколько человек с подобным вопросом. А сколь просто молча проходят мимо?


MP>Это вариант номер раз. Вариант номер два: возвращать документированный код ошибки. В этом случае либа работает, скажем, 20 минут и требует рестарта (ну или как-то так). Ну и вариант номер три: триальный ключ.


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

А вот за 20 минут спасибо! Это идея. Во время ин циализации подымать поток, в котором пускать таймер и по истечении некоторого времени делать.... а что делать?

А собствено как и сказано выше, отображать код ошибки в некотрых ключевых функциях. Это идея!
Эммм... хотя есть проблемка. Десктопные юзеры могут этого и не заметить для них придется оставить окно. Значит надо либо различать, либо делать окно немодальным.

Ну и еще момент. Разработчик при получении такой ошибки может переинитить либу и продолжить пользоваться. Пользователь его программы даже не заметить ничего.
Отредактировано 03.12.2015 22:41 NWP . Предыдущая версия .
Re: Нужен совет по защите продукта
От: Michael7 Россия  
Дата: 03.12.15 23:12
Оценка: 6 (1)
Здравствуйте, NWP, Вы писали:

NWP>В общем вопрос. Что делать? Как можно защитить хоть в минимальном режиме API.

NWP>Ограничивать функционал не хочу, люди не смогут протестить то, что им нужно. Какие есть варианты?

Наверное самое разумное, все-таки именно функционал ограничивать. Надо только хорошо продумать как именно, наверняка что-то можно придумать. Ну например, по некоторым намекам у вас либа работает с изображениями. Так это же куча возможностей. Если ватермарки почему-то недопустимы, сделайте что размер должен быть кратен 17 например. Или еще что-то такое, чтобы и протестировать можно было спокойно и использовать на реальных данных затруднительно.
Re[2]: Нужен совет по защите продукта
От: NWP Россия  
Дата: 04.12.15 01:58
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Наверное самое разумное, все-таки именно функционал ограничивать. Надо только хорошо продумать как именно, наверняка что-то можно придумать. Ну например, по некоторым намекам у вас либа работает с изображениями. Так это же куча возможностей. Если ватермарки почему-то недопустимы, сделайте что размер должен быть кратен 17 например. Или еще что-то такое, чтобы и протестировать можно было спокойно и использовать на реальных данных затруднительно.


Хм... а это идея! Спасибо!
У меня библиотека работает с файлами — это вообще краеугольное место. Без работы с файлами ничего полезного сделать не получится. Следовательно я могу ограничить например размер файлов с которыми можно работать. Точнее количество блоков данных внутри этих файлов.

Может еще кто какие варианты подскажет?

Пока наметил себе следующее:
1. Splash screen перенести из метода инициализации в метод открытия файлов.
2. Если АПИ используется в пользовательской сессии, то выводить splash screen. Иначе нет.
3. При открытии документов генерить спец. ошибку в случае если количество блоков данных в файле лежит в заданном диапазоне.
4. При инициализации запускать таймер по срабатыванию которого некоторые другие ключевые функции тоже перестанут работать.
Или пункт 4 лишний? Представляю какое огромное спасибо мне скажут разработчики, когда у них программа начнет периодически отваливаться. Не, пожалуй пункт 4 вычеркну.

Еще идеи?
Re: Нужен совет по защите продукта
От: Darooma Россия  
Дата: 04.12.15 05:01
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>В общем имеется продукт, библиотека для программистов (некоторое API).

NWP>Поставляется частично в исходниках, частично в виде скомпилированной dll.
NWP>Библиотека в онлайн не работает ни как, только офлайн.
NWP>На данный момент защита встроена в dll. Она элементарная и заключается в следующем:
NWP>Для работы с АПИ его необходимо проинициализировать. В функцию инициализации передается серийный номер. Внутри функции инициализации проверяется валидность ключа, и если он не валиден или отсутствует, то переходим в режим работы trial. В этом режиме либа смотрит в реестр и если там нет спец. записи, то выводит в модальном режиме окно, с просьбой приобрести лицензию, либо напомнить позже. Тут важно, что именно в модальном режиме. То есть выполнение инициализации блокируется, пока юзер не нажмет какую либо кнопку. Если юзер жмет на 'напомнить позже', то окно на несколько часов скрывается и не мешает программисту работать.



на чем у вас это написано все, на C#, C++ или чем-то еще?
Re[2]: Нужен совет по защите продукта
От: NWP Россия  
Дата: 04.12.15 05:59
Оценка:
Здравствуйте, Darooma, Вы писали:

D>на чем у вас это написано все, на C#, C++ или чем-то еще?


dll на c++
Re[2]: Нужен совет по защите продукта
От: Mr.Delphist  
Дата: 04.12.15 17:51
Оценка:
Здравствуйте, MikePetrichenko, Вы писали:

MP>Здравствуйте, NWP, Вы писали:


NWP>>Каждый месяц обращается несколько человек с подобным вопросом. А сколь просто молча проходят мимо?


MP>Из сервиса достучаться до Desktop тоже не особая проблема. Там и показать окошко.


До которого из десктопов? Ведь залогиненых может быть N пользователей, и M из них могут быть заинтересованы в софте топик-стартера.
M < N вполне себе кейс. Ну и не надо забывать про последовательное закручивание гаек в плане интерактивности сервисов, на свежих виндах акромя IPC уже и вариантов не остаётся (но для этого надо под юзер-аккаунтами что-то тоже пускать).
Re[3]: Нужен совет по защите продукта
От: wantus  
Дата: 04.12.15 21:41
Оценка:
Здравствуйте, NWP, Вы писали:

NWP>Еще идеи?


Да просто тряси им окно раз в 5 минут, делов то Ж)
Re: Нужен совет по защите продукта
От: wantus  
Дата: 04.12.15 21:47
Оценка: +1
Здравствуйте, NWP, Вы писали:

NWP>Для работы с АПИ его необходимо проинициализировать.


bool init_zee_dll(yadda, yadda, license_key, void (* finita_la_comedia)(void));

Когда трайл истекает, то клиент получает callback, после чего все API calls начинают возвращать еггог. Чего мудрить то с какими-то модальными окнами и прочей чепухой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.