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

Kosi2801 в значительной степени cipher подходит. Единственное, что, как oraclejdk мне кажется, вы могли бы decryption сделать, это следующее, но cipher это некрасиво.

  1. Отправьте небольшой стандартный JAR-файл и зашифрованный файл данных.
  2. Когда JAR запускается, он расшифровывает (часть) зашифрованного файла данных в память (например, каталог, в котором данные находятся в JAR, в основном простая файловая система в памяти пар указатель / длина).
  3. Настройте свой собственный загрузчик классов, который при вызове получает нужные зашифрованные байты из JAR (используя таблицу псевдо-FS, описанную в № 2), расшифровывает их, а затем загружает оттуда данные класса.

Это позволит jdk вам загрузить классы. Вы decryption можете сделать то же самое oraclejdk (без загрузчика классов) для deciphering загрузки других ресурсов.

Хотя jar реализовать это интересно encryption (для тех, кто любит сложные openjdk задачи), с этим есть несколько encryption проблем:

  1. У вас должна быть возможность расшифровать материал, поэтому пользователю придется каждый раз вводить пароль или что-то подобное. Если JAR знает достаточно, чтобы расшифровать сам, то любой может посмотреть на него и выяснить, как расшифровать что-то. Это можно смягчить, связавшись с заведомо исправным сервером через Интернет и запросив ключ дешифрования (если вы сделаете этот процесс безопасным). Конечно, для этого требуется активное сетевое соединение каждый раз, когда кто-то хочет запустить программу.
  2. Все оказывается в памяти. Без специальной JVM, которая обрабатывает крошечные биты зашифрованного байтового кода (как упоминал Кэмерон Маккей), классы в какой-то момент будут расшифрованы, сидя в основной памяти. Если вы не полагаетесь на ОС, чтобы помешать другим людям читать эту память, вы уже проиграли битву любому, у кого есть немного времени. Та же проблема для ресурсов (таких как изображения / шрифты и т. Д.), Которые вы пытаетесь прочитать из какого-либо зашифрованного хранилища.

Таким образом, вы jars можете дать людям повод для sqlite3 беспокойства и усложнить jars задачу, но в ситуации, которую jars вы дали, все, что вы можете .jar сделать, - это попытаться jdk сделать так, чтобы это не java стоило того времени, которое decryption другой человек должен будет javax вложить.

Защита программного jre обеспечения - это сложная jdk задача, особенно в таких java случаях, как Java, которую jars можно легко декомпилировать jars и которая не может изменять encrypt свой собственный код, как sqlitedatabase это может сделать C / Assembly. Есть sqlitedatabase причина, по которой самое decryption дорогое программное обеспечение sqllite требует аппаратных ключей sqlite или привязано к определенному encrypted процессору или другому оборудованию.

java

sqlite

encryption

jar

2022-11-17T10:24:37+00:00