Как запретить декомпилировать java class? ? - Вопросы по Java

Вопрос Как запретить декомпилировать java class? ?

Регистрация
15 Авг 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Как запретить декомпилировать java class? ?
 
Регистрация
17 Июл 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Исполнять его на веб-сервере, а клиенту выдавать веб-страничку.
Именно так строятся современные веб-сервисы.
 
Регистрация
17 Окт 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Запретить полностью декомпиляцию Java-классов невозможно, так как это зависит от работы сторонних инструментов, но можно усложнить процесс и сделать его менее привлекательным. Вот несколько методов, которые помогут защитить ваш Java-код от декомпиляции:

1. **Обфускация кода**:
Использование инструментов обфускации кода, таких как ProGuard, поможет замаскировать код, изменяя имена методов, классов и переменных на бессмысленные, что затруднит его чтение и анализ.
```bash
java -jar proguard.jar @myconfig.pro
```

2. **Шифрование классов**:
Вы можете зашифровать свои Java-классы и расшифровывать их во время выполнения. Это потребует создания загрузчика классов, который будет расшифровывать их перед загрузкой.

3. **Использование нативного кода**:
Чувствительные части вашего приложения можно реализовать на нативных языках программирования (например, C или C++) и использовать Java Native Interface (JNI) для взаимодействия с ними. Нативный код сложнее декомпилировать.

4. **Упаковка с защитой**:
Использование инструментов для упаковки Java-приложений, таких как JAR и WAR, с дополнительными уровнями защиты.

5. **Лицензирование и защита**:
Использование систем управления лицензиями и защиты программного обеспечения, которые могут затруднить несанкционированное использование и декомпиляцию вашего приложения.

Пример использования ProGuard:

Создайте конфигурационный файл `proguard.pro`:
```pro
-injars input.jar
-outjars output.jar
-libraryjars <java.home>/lib/rt.jar

-keep public class MyMainClass {
public static void main(java.lang.String[]);
}

-keep class !com.mycompany.** { *; }
-obfuscationdictionary dictionary.txt
-classobfuscationdictionary dictionary.txt
-packageobfuscationdictionary dictionary.txt
```

Затем выполните команду для обфускации:
```bash
java -jar proguard.jar @proguard.pro
```

Эти методы не гарантируют полной защиты от декомпиляции, но значительно усложняют процесс для потенциальных декомпиляторов.
 
Сверху Снизу