Защитите мое Java-приложение от копирования

#java

#java

Вопрос:

Как мне помешать кому-либо копировать приложение, которое я создаю на Java? Я использую mysql в качестве серверной части для своего приложения, а платформа — Linux. Есть ли способ обеспечить эту безопасность?

Редактировать :

Есть ли способ, подобный Windows, где некоторые приложения, даже если мы скопируем папку и перенесем ее в другую систему, не будут работать. Я не знаю, как они это делают. Есть ли что-нибудь подобное, что я могу сделать здесь?

Комментарии:

1. Вы имеете в виду копирование двоичного файла программы в целом или частей кода в другие программы или повторную реализацию функциональности (клонирование программы)?

2. «Как мне помешать кому-либо копировать приложение, которое я создаю на Java?» Либо не распространяйте его, либо сделайте его настолько дерьмовым, что никто не потрудится скопировать его. Большинство людей, которые задают этот вопрос, выбирают второй маршрут (по некомпетентности, а не по дизайну). Кстати, если ваше «приложение-убийца» не обладает какой-либо революционной и неинтуитивной функциональностью, простой (и вполне легальный) способ получить копию — заставить тестировщиков описать входные данные и выходные данные, дизайнеров указать этот ввод-вывод, а программистов — реализовать его. Вероятно, они разработают версию получше вашей.

3. @Thilo: Я имею в виду двоичный файл программы в целом..

4. @Andrew: Я имею в виду, что я хочу защитить приложение от прямого копирования и вставки.. Я знаю, что остановить копирование невозможно. Я просто хочу исключить очевидные способы.

Ответ №1:

Хорошо, вот альтернативный ответ на мой комментарий.

  1. Не продавайте программное обеспечение, продавайте поддержку.
  2. Внедрите простую систему лицензирования, привязанную к адресу электронной почты.
  3. Предоставляйте поддержку только пользователям с зарегистрированными адресами электронной почты.

Советы по его созданию см. в разделе Система лицензирования программного обеспечения в OTN. Решения, показанные там, можно взломать, но не обычным конечным пользователем.

Комментарии:

1. или перейти в облако, программное обеспечение как услуга 😉

Ответ №2:

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

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

Вот пример обфускатора.

http://proguard.sourceforge.net/

Вот хорошая страница о защите кода Java.

http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html

Комментарии:

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

Ответ №3:

Является ли ваш проект открытым исходным кодом? Если это так, то вы захотите использовать соответствующее лицензирование. Если нет, ознакомьтесь с лицензионным соглашением и проконсультируйтесь с юристом.

Комментарии:

1. нет, мое приложение не имеет открытого исходного кода. Лицензирование — это следующий этап, но я хочу включить какую-то защиту в моем приложении. Итак, есть ли способ это сделать?/

Ответ №4:

Мы никак не можем запретить пользователям копировать упомянутый вами способ.

Это самая большая проблема, с которой сталкиваются все компании среднего размера, работающие с продуктами, и они тратят довольно много времени на предотвращение этого.

Я согласен с ответами @Milhous amp; @Andrew Thompson

Ответ №5:

Существует несколько коммерческих систем лицензирования Java, которые делают именно то, что вам нужно (но вам следует углубиться в детали, поскольку не все из них на самом деле являются мультиплатформенными Java, а просто содержат библиотеку C).

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

Процесс лицензирования может быть ручным для небольших продаж или автоматизированным для лицензирования больших объемов. При автоматизированном подходе лицензия автоматически блокируется на своем хосте во время активации продукта, прозрачно для пользователя. Современные системы [активации продукта][2] не только просты и знакомы пользователю, но и могут соответствовать вашей цели предотвращения копирования и позволяют пользователям при желании перенести свою лицензию на другой компьютер (независимо от того, подключены их системы к Интернету или нет.

Ответ №6:

Я как раз пытаюсь это сделать сам, но, возможно, вы можете настроить свою программу так, чтобы она получала mac-адрес компьютера (на котором вы хотите ее запустить) при первом запуске. Затем сохраните его в реестре. Затем в вашем основном методе попросите его получить ваш mac-адрес и сопоставить его с адресом реестра. (Реестр имеет тенденцию выдвигать косые черты там, где есть пробелы, но удаление косых черт должно привести к совпадению).

Комментарии:

1. Это не ответ.