• Как можно защитить проект на Java от простого копирования?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Признаюсь, этот вопрос интересует меня так же.
    Если бы мне пришлось реализовывать подобное, то я:
    - решил бы вопрос юридически
    - провел бы обфускацию кода ( https://www.guardsquare.com/en/products/proguard )
    - для использования софта использовал бы активацию на собственном сервере
    - при активации софта учитывал бы определенные системные параметры (id железа и т.д.) и сохранил бы на своем сервере при активации софта.
    Ответ написан
    Комментировать
  • Как можно защитить проект на Java от простого копирования?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Прежде всего надо понимать, что абсолютной защиты не существует. Чем выше разница между ценой программы и затратами на взлом, тем быстрее её сломают. Соответственно, вы можете только затруднить процесс взлома, увеличивая этим затраты на него и снижая интерес взломщика. Но это обоюдоострое лезвие, разработка защиты процесс тоже дорогостоящий.

    Затруднить декомпиляцию программы можно воспользовавшись AOT-компилятором, но это снизит переносимость программы и в некоторых сценариях использования может снизить её производительность.

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

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

    Но если всё же необходимость защитить есть, то к вам в копилку могу подкинуть ещё 1 вариант:
    - генерите аппаратный ID машины (не уверен, что можно напрямую из Java, но наверняка есть варианты, например, на C++ с возможность прокинуть их в Java)

    а дальше уже варианты:
    1) Можно просто каждый раз проверять ID машины и запускать если он тот же, в противном случае блокировать запуск
    2) Можно предложить пользователю передать вам ID машины, для того, чтобы вы сообщили ему ключ активации (ключ может быть получен каким-либо преобразованием ID-машины).

    Но помните, что в любом случае абсолютной защиты не бывает, вопрос по большому счёту только во времени и желании эту защиту взломать.
    Ответ написан
    Комментировать
  • Как можно защитить проект на Java от простого копирования?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вопрос обычно в юридической плоскости, не думаю, что кто-то в здравом уме будет выдавать чужой продукт за собственный и продавать его. Ведь всегда есть лицензия или договор на продажу, или что-то типа этого...
    В технической : обфусцировать код и добавить ключ активации.
    Сильно защищать смысла нет.
    Ибо, всегда можно показать в споре исходники. Всегда нужна поддержка, а без разработчика её очень трудно сделать.
    Ответ написан
    Комментировать