Это очень возможно, используя Class Loaders.Но все равно очень легко декодировать вашу программу.Все, что нужно сделать, это изменить ваш загрузчик, чтобы записать все классы на диск, прежде чем он загрузит их в память с вашим пользовательским ClassLoader.
Обновление
Если загрузчик - это то, что могут выполнять ваши пользователи, то мне просто нужно декомпилировать и заменить файл JAR загрузчика, чтобы выгрузить классы на диск.Мало того, что я уверен, что должно быть что-то, что может взять дамп памяти JVM и вывести весь загруженный байт-код.
Если загрузчик находится на заблокированной машине, на которой пользователи не могут получить доступ, тоКаков вариант использования, который вы пытаетесь решить?
"Решения" этих проблем:
- Используйте усовершенствованный Обфускатор, который предназначен для взлома декомпиляторов.
- Запретить доступ к самим файлам JAR.Либо через ACL на компьютере, либо с помощью удаленного сервера для выполнения кода, который вы хотите защитить.По сути, так работают веб-приложения.Может быть значительное количество IP-адресов или обработки, которые выполняет Stackoverflow, но у нас никогда не будет доступа к внутренней обработке по результатам вывода пользовательского опыта.