Попытка разобраться с временным лицензированием приложений магазина

Автор Тема: Попытка разобраться с временным лицензированием приложений магазина  (Прочитано 57006 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
В большинстве случаев, те кто сумеют снять защиту, способны самостоятельно написать аналогичное приложение.
Нет, Дима! Это совершенно разные "умения". В остальном же я с тобой согласен.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай Горлов

  • ADN
  • *
  • Сообщений: 238
  • Карма: 34
Такая защита определённо лучше, чем совсем без неё.
Такая - это вкратце описанная мной в посте #26 или автором топика в посте #25?
Если из поста #25 - согласен полностью. Единственное что, позакрывать мелкие дыры, чтоб нельзя было просто подменить dll или ветку реестра и всё.
Если же из поста#26... Я не против защиты. Она действительно нужна. Но не забываем про C#. Было б на C++ - слова б не сказал. Но дарить идею и готовую реализацию того, как получить набор настоящих характеристик железа, как обмениваться данными с сервером лицензий и как переносить эти самые лицензии втихую с компов подключенных к интернету по всему отделу, сидящему без интернета... Например, у меня ушло только пару месяцев на то, чтоб правильно собрать настоящие характеристики железа для ограниченной учетной записи. Так что будет слишком круто, если кто-то получит это (ну и всё остальное) за пару минут, нажав пару раз мышкой в экранные кнопки. По поводу того, что будет трудно разобраться в коде - бред. Любой уважающий себя программист оставляет тонны комментариев в каждой функции, т.к. во-первых, вернуться к редактированию кода он может и через 3-4 года, а во-вторых, редактировать код может уже не он, а его коллега. Да, можно конечно обработать dll-ку каким-нить криптошифровальщиком, но... бесплатный - расшифровывается бесплатными обфускаторами за пару минут, а платный - годовая подписка за $300 в среднем, а снимается платными обфускаторами, за которые в принципе можно и не платить :).

Я придерживаюсь мнения, что всё должно быть в меру, так что вариант #25 вполне подходит для автодесковского магазина. Из минусов этого варианта - банально открытый код реализации проверки валидности пользователя по всему интернету, ну и использование интерпретируемого языка программирования для создания этой самой проверки. ну то такэ :)

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Такая - это вкратце описанная мной в посте #26 или автором топика в посте #25?
Я имел в виду "защиту от BearDyugin" :)
По поводу того, что будет трудно разобраться в коде - бред.
В чужом коде, да ещё и без комментариев, разобраться порой очень сложно. А если ещё написано начинающим программистом без соблюдения даже правил нотации... В общем, развлечение "на любителя".
Любой уважающий себя программист оставляет тонны комментариев в каждой функции, т.к. во-первых, вернуться к редактированию кода он может и через 3-4 года, а во-вторых, редактировать код может уже не он, а его коллега.
Комментарии в dll не переносятся. Они либо в исходниках, либо в отдельном XML-файле (если речь идёт о XML-комментариях).

Оффлайн Николай Горлов

  • ADN
  • *
  • Сообщений: 238
  • Карма: 34
Комментарии в dll не переносятся. Они либо в исходниках, либо в отдельном XML-файле (если речь идёт о XML-комментариях).
Это 100% сведения или так, разговор поддержать?  ;D

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Это 100% сведения или так, разговор поддержать?
Ну а как иначе-то? Компилятор переводит код в IL. Исходники внутрь DLL не помещаются. Откуда там взяться комментариям? Они, как и директивы препроцессора и т.п. элементы - только в исходном коде.

Оффлайн BearDyugin

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
UUID
Я наоборот хотел отвязаться от привязки к железу, только к пользователю, потому что достали письма от чуваков, которые сменили ПК, сменили место работы. Они почему-то уверены что купив один раз, они получили право пользования на всю жизнь.

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

Оффлайн BearDyugin

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Николай, а подскажи такой вопрос, Id пользователя это всегда только набор циферок, или буквы тоже могут быть?

Оффлайн Николай Горлов

  • ADN
  • *
  • Сообщений: 238
  • Карма: 34
Id пользователя это всегда только набор циферок, или буквы тоже могут быть?
Могут и буквы присутствовать.

Оффлайн BearDyugin

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Заменил
Код - C# [Выбрать]
  1. [LispFunction("TestEntitlementLisp", "TestEntitlementLisp")]
на своё название
Код - C# [Выбрать]
  1. [LispFunction("My_Entitlement", "My_Entitlement")]
и функция в AutoCAD стала выдавать ошибку...
Цитировать
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "RestSharp, Version=105.1.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл.
Имя файла: 'RestSharp, Version=105.1.0.0, Culture=neutral, PublicKeyToken=null'
   в EntitlementAPI_AutoCAD.MyCommands.verifyEntitlement(String appId, String userId)
   в EntitlementAPI_AutoCAD.MyCommands.TestEntitlement_Lisp(ResultBuffer args)
   в Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction)
   в Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction)
   в Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction)
   в Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.InvokeLisp()
Предупреждение: регистрация привязки сборок выключена.
Чтобы включить регистрацию ошибок привязки сборок, установите значение параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) в 1.
Примечание. Регистрация ошибок привязки сборок может привести к некоторому снижению производительности.
Чтобы отключить эту функцию, удалите параметр реестра [HKLM\Software\Microsoft\Fusion!EnableLog].

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Я сомневаюсь, что нужно обязательно 2 одинаковых параметра задавать для LispFunction, подозреваю, что можно обойтись одним. Проверить пока не на чем.
Но проблема не в переименовании, а в чём-то другом. Netload без ошибок срабатывает? Вообще, в какой момент ошибка возникает? При вызове лисп-функции?

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Я наоборот хотел отвязаться от привязки к железу, только к пользователю, потому что достали письма от чуваков...
Мне кажется, это не совсем правильная концепция... Казалось бы достаточно ввести в лицензионное соглашение пунктик об ограничении количества активаций (например не более трёх). И если подобный "чувак" захочет активировать лицензию большее количество раз - указываешь ему на этот пунктик...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
и функция в AutoCAD стала выдавать ошибку...
AutoCAD не находит RestSharp.dll. К переименованию это никакого отношения не имеет. Проверь что твоя dll и RestSharp.dll находятся в одном каталоге.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyugin

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
AutoCAD не находит RestSharp.dll. Проверь что твоя dll и RestSharp.dll находятся в одном каталоге.
Да, точно, всё дело в этом, но зачем нам 2 dll, можно их как-то в один объединить?
Причём этот RestSharp.dll раз в 10 больше по объёму чем основной dll файл и рядом ещё и RestSharp.xml не маленький лежит...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Николай, а подскажи такой вопрос, Id пользователя это всегда только набор циферок, или буквы тоже могут быть?
Если ты говоришь про ONLINEUSERID,  то только цифры или пустая строка, если пользователь не залогинился.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Да, точно, всё дело в этом, но зачем нам 2 dll, можно их как-то в один объединить?
Причём этот RestSharp.dll раз в 10 больше по объёму чем основной dll файл и рядом ещё и RestSharp.xml не маленький лежит...
Теоретически это возможно (если не противоречит лицензионному соглашению), но это задача не для твоего уровня знаний C#. Так что брось и делай как полагается. Твоя dll именно потому такая маленькая, потому что RestSharp.dll такая большая. Иначе размер твоей dll был бы (почти) как сумма размеров обеих dll-файлов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение