Я понимаю, что StackOverflow ориентирован на ответы на конкретные вопросы и избегает субъективного мнения. Я чувствую, что у моего вопроса (ответов) есть только один правильный ответ, и поэтому я размещаю здесь.Какой заказ? ProGuard + JWrapper + Launch4J
Я создал приложение Java для настольных компьютеров (JavaFX), которое планирую распространять для коммерческого использования. Я читал, что Java-код легко реконструирован, поэтому крайне важно запутать использование чего-то вроде ProGuard. Я хотел бы упаковать свое приложение, чтобы пользователи дважды щелкали файлом .exe (который они загружали с моего сайта), а затем установщик запускается, как это делает любое стандартное программное обеспечение. Это выходит за рамки ProGuard, но я нашел JWrapper и Launch4J, которые, похоже, предоставляют аналогичную функциональность. Оба утверждают, что они завершают банки в исполняемые файлы Windows, показывают всплывающие экраны, включают JRE, но я смущен там, где они отличаются.
В частности, мне нужно следующий:
- Мастер установки (а именно поместить ех в безопасном месте + сделать ярлык на рабочем столе, а также добавить EULA где-то).
- Добавить EULA (лицензионное соглашение с конечным пользователем), который определяет ограничения пользователя
- веб-обновления для приложения (JWrapper, кажется, обеспечивает это с помощью URL + построить путь)
- Возможность защитить приложение (несколько) с помощью лицензирования (License3j кажется многообещающим).
Их особенности могут быть найдены here и here, но только JWrapper упоминает способность perform web updates и упоминает ярлыки на рабочем столе (который я предполагаю, можно также написать Eula.txt где-то).
Итак, после того, как я закончил писать код, в каком порядке должны применяться ProGuard, JWrapper и Launch4j? Я предполагаю, что ProGuard сначала (сжиматься, оптимизировать и обфускать), а затем JWrapper, а затем Launch4j? Или только 2 из 3?
Не стесняйтесь также предлагать дополнительные методы, инструменты или концепции, которые могут отсутствовать. Спасибо!
Пользователи JWrapper также предлагают JWCrypt, который, по их утверждению, является очень эффективной защитой кода, но он не является бесплатным. – nyholku
Это выглядит многообещающим, спасибо. Это выглядит как $ 500 в год, хотя поэтому всегда предпочтительна бесплатная альтернатива. Однако это нереально, поэтому я задаюсь вопросом, не помешал ли я все обрабатывать свои конфиденциальные данные на серверной стороне и платить за репутацию компании за предоставление своих услуг защиты, не так ли лучше, чем JWCrypt? Мое приложение будет содержать только скелетный код и будет запрашивать «кишки» кода с сервера на протяжении всего его процесса. Есть предположения? TY. – Mathomatic
Если вы можете сохранить код, который хотите защитить на стороне сервера, то, очевидно, это хорошо защищено, если сервер не будет скомпрометирован. Но ваше последнее утверждение предлагает вывести код с сервера на клиентскую сторону, и это, конечно же, не более безопасно от обратной инженерии, чем его в клиентском приложении. – nyholku