Как упаковать Java-проект?

Я сделал проект Java и хочу доставить его клиенту, но я не хочу доставлять его в виде файла jar, поскольку клиент может легко увидеть исходный код, распаковав файл jar.

Как я могу упаковать свой проект Java, чтобы клиент не мог просматривать исходный код или не мог изменить исходный код?

Еще один момент: могу ли я интегрировать ключевую функциональность, чтобы клиент мог получить доступ к этому программному обеспечению, только предварительно зарегистрировав его с помощью предоставленного мной ключа?

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

Помните, что программное обеспечение по-прежнему должно иметь кроссплатформенную функциональность, и если это невозможно, то как я могу сделать это для Debian Linux, как я сделал это для Windows?


person Yatendra    schedule 05.09.2009    source источник


Ответы (3)


К вашему первому пункту. Почему бы просто не встряхнуть файлы классов? Они находятся в байтовом коде, поэтому клиент не сможет просмотреть исходный код.

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

person AAA    schedule 05.09.2009
comment
Файлы классов могут быть легко декомпилированы с помощью бесплатного программного обеспечения Decompilers. Мне нравится обфускация кода, предложенная adatapost. Можете ли вы подробно объяснить мне, какие библиотеки обеспечивают ключевую функциональность. - person Yatendra; 05.09.2009
comment
Запутанный код также можно легко реконструировать, если люди действительно этого хотят. В конце концов, если вы не контролируете программу, то есть через сетевой интерфейс (будь то веб-интерфейс или что-то еще), вы не можете гарантировать, что клиент не будет ей мешать. И даже тогда... Что касается библиотек, если они вам действительно нужны... загляните на javalicensemanager.com< /а> - person AAA; 05.09.2009

обфускаторы

person kv-prajapati    schedule 05.09.2009

Есть несколько простых вещей, которые вы можете сделать, чтобы клиенту было немного сложнее получить ваш исходный код и обеспечить лицензирование на хост (и так далее). Например, обфускаторы усложняют реконструирование файлов байт-кода, а менеджеры лицензий поддерживают ряд ограничений, основанных на «ключах», которые вы создаете и предоставляете.

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

Если не считать блокировки всей исполнительной платформы (например, отключение возможности клиента запускать отладчики, читать физические устройства и т. д.), вы ничего не можете с этим поделать.

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

person Stephen C    schedule 05.09.2009
comment
Очень полезный ответ. Спасибо за это. Поскольку что-то лучше, чем ничего, так что не могли бы вы рассказать мне подробнее о том, как использовать менеджеры лицензий. - person Yatendra; 05.09.2009