Estou pesquisando alguma maneira de criptografar minhas classes. Já pesquisei exaustivamente, mas ainda não achei uma solução que considerasse adequada. O que parece ser mais efetivo é criptografar as classes, com 3DES por exemplo, e desenvolver um ClassLoader para carregar as classes criptografadas. No entanto, as questões para as quais não encontrei resposta são as seguintes:
-
Este ClassLoader deve ser utilizado somente para carregar as classes da minha aplicação (as que estão no classpath). Extensões e classes padrão da JVM (rt.jar, i18n.jar) devem ser carregadas pelo ClassLoader padrão.
-
Questão principal: Como resolver o problema da criptografia do próprio ClassLoader? De nada adiantaria utilizar uma criptografia forte nas classes da aplicação, pois decompilando o ClassLoader qualquer um poderia facilmente decriptografar as demais classes. Será que desenvolver um programa em C e através de JNI carregar o próprio ClassLoader, que neste caso está criptografado, é uma solução, senão a única?
Agradeço desde já aos interessandos em trocar idéias a respeito destas questões.