Защита Файлов банки Java для Распределения

Попытайтесь видеть, работает ли это:

  1. Нажимают на вкладку
  2. 'External Data' должно быть Предупреждение системы безопасности, которое указывает, что "Определенное содержание в базе данных было отключено"
  3. Щелчок, который Выбор кнопки
  4. 'Options' 'Включает этому содержанию' и нажимает кнопку OK
9
задан Kirk Ouimet 18 August 2009 в 22:34
поделиться

7 ответов

Вы можете зашифровать / запутать свой байт-код с помощью yGuard или других обфускаторов java-байт-кода .

Распространение, независимое от операционной системы, может быть затруднено. ИМХО лучшее решение - это обычный архив, содержащий несколько скриптов (.bat / .cmd для windows, .sh для linux / OSX) для запуска программы под поддерживаемыми программой Операционными системами.

Запуск java-программы как службы может быть еще сложнее: в Linux это просто, где вам просто нужно написать правильный сценарий запуска, чтобы запустить его в фоновом режиме. Я знаю, что FireDaemon имеет проблемы с запуском java-программ в качестве службы, поэтому запускать ее в качестве службы в Windows может быть сложно (или невозможно). Извините, но я понятия не имею о MacOS X. Может быть так же просто, как Linux, может быть так же невозможно, как Windows.

8
ответ дан 4 December 2019 в 10:33
поделиться

Как уже говорили другие, вы можете запутать свой код. Это сделает обратное проектирование нетривиальным. Вы также можете скомпилировать свою Java в собственный код, используя (например) GCJ. Это усложнит обратный инжиниринг, но также будет означать, что вам придется создавать разные комплекты дистрибутива для каждой поддерживаемой платформы оборудования / ОС.

Я понимаю, что распространение файла .jar крайне небезопасно.

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

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

4
ответ дан 4 December 2019 в 10:33
поделиться

Запуск вашего приложения через обфускатор делает реверс-инжиниринг более сложным и дорогостоящим.

Взгляните на Java Service Wrapper , чтобы найти относительно простой способ установки и запуска ваше приложение Java как услуга на нескольких платформах.

3
ответ дан 4 December 2019 в 10:33
поделиться

Рассматривали ли вы использование компилятора машинного кода, такого как GCJ ? Он не зависит от платформы (вам придется скомпилировать один для каждой целевой платформы), но я не понимаю, как можно распространять независимый от платформы байт-код и при этом скрывать этот байт-код от конечных пользователей.

2
ответ дан 4 December 2019 в 10:33
поделиться

вы можете запутать его. Это затруднит обратное проектирование вашей программы. Кроме того, я думаю, что вы также можете сделать свои файлы классов исполняемыми (например, .exe для Windows).

РЕДАКТИРОВАТЬ: честно говоря, если безопасность для вашего приложения так важна, лучше вообще избегать java. Например, вы можете использовать компилятор gcc для C ++ (который более или менее независим от платформы, если вы не выполняете системные вызовы). Вам просто нужно скомпилировать его на разных хост-машинах (это то, что ваш исходный вопрос указывает как вашу потребность, но на java).

Существует также qt, но я сам не пробовал.

1
ответ дан 4 December 2019 в 10:33
поделиться

Вы можете зашифровать jar-файл, но тогда вам нужно будет написать собственный загрузчик классов для загрузки содержимого jar-файла. Это все еще не на 100% защищено от дурака - простой факт в том, что ничто из того, что вы можете сделать, не сделает ваш код на 100% безопасным, если он будет нацелен. См. Это обсуждение здесь.

Как создать зашифрованный файл Jar?

1
ответ дан 4 December 2019 в 10:33
поделиться

или вы можете сделать то, что сделал я. Интерфейс java с определенными функциями внутреннего интерфейса, написанными на C ++, скомпилирован в dll, вызываемую через JNI. Интерфейсный интерфейс полностью переносим, ​​с внутренним ворчанием, сделанным родным.

1
ответ дан 4 December 2019 в 10:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: