2010-09-11 3 views
4

Извините, я не очень уверен, как сформулировать заголовок вопроса. Моя проблема в том, что я разработал Java-программу, и я хочу распространять ее среди своих друзей. Поэтому я экспортирую его в Jar-файл, но я не хочу, чтобы они извлекали файл jar для просмотра кода. В любом случае, чтобы сделать программу, чтобы никто не мог получить исходный код, просто запустите программу.Как сделать программу Java unextractable

+0

Посмотрите на технологию, используемую в Skype. Я помню бумагу о том, что было найдено, пытаясь перестроить ее. – pascal

+0

@pascal, не могли бы вы найти ссылку? –

+4

Если бы я был одним из ваших друзей, я бы задался вопросом, что делает программа, которую вы не хотите, чтобы я открывал. –

ответ

0

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

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

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

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

+0

Привет, спасибо за ваше объяснение очень ясно – user236501

2

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

+3

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

+0

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

11

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

+0

Спасибо, я пойду исследовать его – user236501

+0

зависит от декомпилятора, распознающего шаблоны кода, сгенерированного компилятором. –

3
  1. Термин, который вы ищете, является obfuscation. В конечном счете
At best, obfuscation merely makes it time-consuming, but not impossible, 

перепроектировать программу.

  1. Другая техника - SaaS. Хотя в конечном счете использование методов черного ящика SaaS также обратимо.
  2. Другой метод - доверие. Поскольку вы распространяете его на своих друзьями, вы можете попросить их не извлекать файл jar или просмотреть код. Если они действительно ваши друзья, они будут соблюдать ваш запрос.
+0

Если для обычного онлайн-примера программного обеспечения, такого как MpTrim, Wavtrim, мы не можем сделать обратный инженер. Как они это сделали? У них есть только один файл типа приложения. – user236501

+1

+1 для доверия. –

+0

@ newbie123 Я не знаю, MpTrim, Wavtrim, но я знаю, что все может быть обратным инженером, с временем enuf, деньгами и усилиями. Неужели вы действительно думаете, что гораздо умнее, чем ур друзей, что вы можете что-то сделать, они не могут в конечном итоге выяснить. – emory

0

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

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

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

+0

Получил благодарность. – user236501

6

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

4

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

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

+0

иногда просто из соображений безопасности ... –

+0

Действительно? Пожалуйста, объясните - я сомневаюсь, что вы меня убедите. Если вы можете декомпилировать WebLogic, коммерческое приложение Java EE, я не вижу причин беспокоиться об этом для чего-то меньшего значения. Если вам нужно что-то защитить от клиентов, то он должен работать на сервере, к которому у них нет доступа. – duffymo

+0

Это тоже довольно самонадеянно думать, что вы можете придумать что-то такое, что блестящие друзья ур никогда не смогут черным ящиком переделать его. – emory

Смежные вопросы