[RESOLVIDO] Impedir descompactação Jar / Ocultar Código

Boa tarde. Uma dúvida talvez um tanto quanto boba, mas vamos a ela.

Eu consigo extrair o .jar com o WinRar. Então posso visualizar as informações que compõem o arquivo como meu código.

Existe alguma maneira impedir que meu código seja extraído? Se sim, o que devo pesquisar para aprender a fazer isto. Já procurei no fórum e não consegui encontrar algo parecido.

Muito obrigado a todos.

Olá tudo bem?

Segue um post completo sobre esse assunto.

Você não pode impedir a extração do conteúdo de um arquivo .jar, se encriptar seu arquivo .jar, precisaria de um programa próprio para conseguir carregar as classes dentro dele.

Um arquivo .jar, nada mais é do que um “pacotão de arquivos” gerado no formato .zip e não necessariamente ele precisa estar compactado.

Em princípio, você não distribui seu código-fonte (arquivos .java) com um .jar, ele deveria conter somente os .class e recursos necessários para a execução de sua aplicação.

Mas, existem muitas ferramentas que tentam reconstruir um arquivo .java a partir dos .class descompilados, lembrando que o próprio JDK vem com um descompilador, o javap.

O que você pode fazer para tornar seu código mais complicado de descompilar, é utilizar um ofuscador de código. Ofuscadores pegam o seu .class e alteram algumas coisas nele, mas mantendo o contrato da compatibilidade com a especificação da máquina virtual java. Eles podem, por exemplo:

  • criar sobrecargas de métodos com mesmo tipo de parâmetros, mas com retorno diferente;
  • alterar os fluxos lógicos utilizando labels e instruções goto;
  • utilizar a palavra reservada const em algumas variáveis;

Enfim, fazem a maior “bagunça” no bytecode, mas mantendo a compatibilidade com a máquina virtual Java. As alterações que citei por exemplo, não são válidas para o compilador Java, mas a máquina virtual suporta essas operações.

Então, se alguém usar alguma ferramenta de engenharia reversa, que gere arquivos .java a partir dos .class ofuscados, vai ser complicado refatorar esses fontes obtidos para poder compilá-los novamente.

Existem ofuscadores gratuitos como por exemplo o ProGuard e outros pagos, como o Zelix KlassMaster.

Entendi. Muito obrigado. Irei pesquisar a respeito.