Как сделать Java-программу невыразимой - PullRequest
4 голосов
/ 11 сентября 2010

Извините, я не очень уверен, как сформулировать название вопроса. Моя проблема заключается в следующем: я разработал программу на Java и хочу распространить ее среди своих друзей. Поэтому я экспортирую его в файл Jar, но я не хочу, чтобы они извлекали файл JAR для просмотра кода. Есть ли способ сделать программу так, чтобы никто не мог получить исходный код, а просто запустить программу.

Ответы [ 7 ]

11 голосов
/ 11 сентября 2010

Вы всегда можете получить исходный код из скомпилированных файлов классов.Тем не менее, вы можете сделать жизнь тех, кто хочет декомпилировать такой код, очень трудной, используя обфускатор, так что декомпилированный код почти невозможно прочитать.Вот список java-обфускаторов с открытым исходным кодом , которые вы, возможно, захотите исследовать.

6 голосов
/ 11 сентября 2010

Если компьютер может запустить его, человек может его реконструировать.

4 голосов
/ 11 сентября 2010

Правда в том, что никто не хочет ваш исходный код. Довольно высокомерно думать, что это стоило бы усилий, необходимых, чтобы не пускать их.

Лучшее, что вы можете сделать, это запутать.

3 голосов
/ 11 сентября 2010
  1. Термин, который вы ищете, это запутывание . В конечном итоге
At best, obfuscation merely makes it time-consuming, but not impossible,

для обратного проектирования программы.

  1. Другая техника SaaS . Хотя, в конечном счете, с использованием методов «черного ящика» SaaS также может быть реверсивно разработан.
  2. Другая техника - это доверие. Поскольку вы распространяете его среди своих друзей , вы можете попросить их не извлекать файл JAR или просматривать код. Если они действительно ваши друзья, они выполнят ваш запрос.
2 голосов
/ 11 сентября 2010

Jar-файлы обычно не содержат код. Обычно они содержат только файлы .class (bytecode), необходимые для запуска программы.

0 голосов
/ 12 сентября 2010

Вы, кажется, путаете приложение установки с исполняемым файлом. И я также думаю, что вы путаете приложение java jar с обычным .exe.

Даже в этом случае это всего лишь наборы кода, которые все еще можно декомпилировать, это не так просто, как распаковка jar-файла, предназначенного для простого извлечения.

Java предназначена для работы на JVM, поэтому ее упаковка в .exe является плохой формой, так как она сразу же блокирует ее в Windows, что в первую очередь наносит ущерб точке Java. Поэтому я бы посоветовал против этого.

Как все заявляли, редко, если ваша программа работает хорошо и вам нравится пользователям, что они даже подумают декомпилировать ее. Но если они хотят, то они всего лишь один поиск в Интернете от как до (независимо от языка). Что касается коммерческого распространения, то в большинстве случаев программное обеспечение запутывается и распространяется в своем .jar, с помощью специфичного для архитектуры средства запуска в формате .exe, .app, .bin и т. Д. Не путайте их с реальным исполняемым файлом, который обычно является .jar файл где-то.

0 голосов
/ 11 сентября 2010

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

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

Это единственный верный способ сделать это. Другие способы могут быть обойдены в некотором смысле с достаточным усилием.

...