Estou avaliando algumas ferramentas para ofuscar o bytecode das classes java e não estou muito vislumbrado com os resultados.
Atualmente estou testando as ferramentas Retroguard e yGard.
O Retroguard, pelo que testei, é um aplicativo onde vc apenas executa-o com a chamada java e informa os parâmetros. Ao concluir, este gera um outro pacote com as classes atualizadas. Mas ao utilizar o jad para descompilá-los, continuei a visualizar todo o código java, de forma totalmente legível, apenas com alguns nomes atualizados e em pacotes também com nomes diferenciados.
Quanto ao yGard, este ainda estou tentando acertar o arquivo build.xml do ant para executar tal processo.
O principal motivo de estar perguntando a vcs tal questão é que atualmente estou trabalhando em uma empresa onde o código deve ser protegido, para evitar a cópia ou conhecimento do código por empresas concorrentes.
Então, vcs conhecem outras ferramentas que dificultem a cópia de seu conteúdo ?
A solução deste problema mereceria um doce até porque no mercado há soluções bem caras.
O problema não é só do Java como vc pode ver aqui onde inclusive há muitas sugestões de proteção.
Há muitas idéias sobre como proteger o código:
uso de obfuscadores;
classloader com criptografia de classes críticas e manter os objetos destas classes na memória o mínimo possível;
lançar produtos no mercado precipitadamente cheio de bugs (esta geralmente é a melhor solução mas o produto precisa lançar services packs toda hora).
Tudo isto pode fracassar se o concorrente contratar alguém da empresa ou partir para espionagem industrial. De posse dos documentos internos ele nem vai querer ver o código (muitas vezes difícil de entender).
O negócio é se proteger juridicamente, proteger as idéias, o chamado “core business”. Lançar os produtos antes também é ótimo. E principalmente atender bem os clientes. Um bom help desk segura o cliente mesmo que o concorrente faça a mesma coisa mais barato.
Muito bem colocadas as suas palavras Luca.
Nós que trabalhamos com esta tecnologia sabemos como há inúmeras probabilidades de conseguirmos chegar até o dito “inatingível”.
O que estava pensando era dificultar um pouco as coisas, mas vou propor suas idéias ao meu líder e deixar com que ele decida o caminho que o projeto vai seguir.