Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Como torna programa java seguro?

Boa noite a todos. Estava pesquisando na internet sobre um assunto e acabei esbarrando em site falando sobre como fazer engenharia reversa de aplicativos java. Por isso surgiu a dúvida "Como torna um programa java 'seguro'?".

Dando uma olhada na web vi um vídeo falando que desde que o usuário conheça assembler todo programa é passivo de engenharia reversa, porém, pesquisando soluções ente num fórum aonde um dos membros falou algo que concordei:

"... Descompilar um bytecode do Java traz os dados de bandeja pra qq cara com menos de 1 mês de programação. Descompilar um código nativo vai vir um monte de chamadas assembly que não fazem sentido nenhum pra gente pela quantidade de código gerado...."

Quero entender melhor a situação, pois estou estudando java, mas se for preciso simplesmente aceito começar a estudar outra linguagem em troca de conseguir uma nível de segurança maior nos meus projetos.

10 respostas
solução!

Olá Guilherme, realmente é possível descompilar um bytecode de java. No entanto, hoje já existem alternativas para tornar o código mais seguro sim. No entanto, isso não torna seu programa 100% seguro, apenas dificulta a descompilação. Mas não deixe isso te abalar, afinal toda linguagem que utiliza compilador está suscetível a engenharia reversa.

Para proteger mais seu código Java, você pode se utilizar de Ofuscadores. O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa. Assim, o processo consiste em remover informações relacionadas a depuração como tabelas de variáveis, número de linhas e renomear os pacotes, classes e métodos. Há também alguns ofuscadores mais avançados que alteram o fluxo de controle do código, reestruturando assim a lógica existente e inserindo códigos falsos que não funcionam.

Ofuscados não são apenas utilizados em Java, mas em outras linguagens também como HTML e JavaScript.

Alguns exemplos de ofuscadores são: Klassmaster, Proguard, Retro Guard.

Espero ter ajudado! Bons Estudos!

Valeu pela ajuda, Romário.

Mais uma dúvida.

Se o programa base java estive todo online (hospedado em servidor), e usar um outro programa java, como janela para chamar o programa base, para rodar na máquina do usuário consigo assim proteger parte do código certo ou ainda assim pode dar algum problema?

Sim guilherme. Fazendo isso é uma forma de proteger o seu código sim. Pois você não vai disponibilizar ao cliente toda a regra de negócio de sua aplicação, somente o que ele utilizará. Ainda também é possível criptografar a troca de dados entre as duas aplicações, tornando ainda mais seguro a troca de informações de seu programa.

Ok. Quanto a criptografia, para realizá-la tenho que instalar algum programa no eclipse ou já tem alguma ferramenta nativa ou é um programa externo?

Não, o java já possui uma API responsavel por isso. O nome da API é SSLSocket.

Entendo. Tem algum(ns) livro(s) que você recomendaria para mim sobre java, criação de programas em java, criação de aplicativos em java, java para web, java para games?

Pois estou tentando me especializar em java.

Livros para Java:

  • Use a Cabeça! Java
  • Java, Como programar

Aconselho você ler primeiro apenas sobre java e após isso começar com Java para web e etc..

Ok, valeu!

Por nada! Guilerme, se todas suas dúvidas foram solucionadas lembre-se de fechar o tópico.

Bons Estudos!

Desculpe, estou no celular e o corretor colocou seu nome errado.

Bons estudos Guilherme!