Взлом зашифрованных Java-приложений с помощью jhsdb (отладчик hotspot)
Одним из решений для защиты Java-кода является шифрование файлов классов или jar-файлов. Этот тип решений загружает зашифрованный файл класса или jar-файл через самодельный загрузчик, что бесполезно из-за наличия механизма присоединения (Attach) JVM и может быть легко взломано с помощью инструментов, поставляемых с JDK.
Пример приложения
Ниже приведён пример приложения с простым swing-окном и кнопкой. https://github.com/3-keys/test-swing-app

Шифрование приложения
Экспортируйте исполняемый jar-файл с помощью Eclipse и используйте инструмент шифрования для шифрования jar-файла. После шифрования структура jar-файла выглядит следующим образом:

test-swing-app.jar — это зашифрованные данные jar-файла, классы Launcher — это пользовательские классы загрузки этого инструмента, и зашифрованный jar-пакет по-прежнему запускается через стандартную команду java -jar.
Взлом зашифрованного приложения
Сначала запустите зашифрованный jar-файл, затем найдите директорию bin JDK — там вы найдёте файл jhsdb.

Выполните jhsdb hsdb, откройте HotSpot Debugger. В Windows может потребоваться запуск от имени администратора. Нажмите File и выберите Attach to HotSpot process…

В Linux используйте команду ps aux | grep java, а в Windows найдите pid процесса через Диспетчер задач. Введите pid процесса в диалоговое окно ниже.

После успешного присоединения нажмите Tools->Class Browser.

Class Browser содержит информацию обо всех загруженных классах. Найдите com.example, и вы увидите все классы в пакете com.example.

Нажмите на com.example.TestWindow @0x0000…., затем нажмите «Create .class File».

Перейдите в директорию, где ранее была выполнена команда jhsdb — вы увидите сгенерированный файл класса.

Используйте Luyten или jadx для открытия файла класса — вы увидите декомпилированный код.
