engenharia reversa é a arte de despejar os individuais , comandos no nível da máquina que compõem um programa compilado e usá-lo para recriar o seu código-fonte original . Enquanto qualquer programa compilado pode ser a engenharia reversa , o código de byte que compõe os programas Java compilados reter várias características de identificação que fazem engenharia reversa muito mais fácil do que outro código compilado. O Código Byte
Java não compila diretamente em código legível por máquina, mas sim no que é chamado de " código de byte . " O programador distribui este código byte , e quando os usuários finais o lançamento do programa , Java Virtual Machine compila o código byte em código de máquina específico da plataforma . Enquanto isso dá Java a vantagem de permitir um único código fonte começou a trabalhar em várias máquinas , o código de byte preserva várias características descritivas do código-fonte que tornam mais fácil para hackers para reconstruir o código fonte original.
Engenharia Reversa
Hackers podem ler o código de bytes de um aplicativo Java diretamente, usando a biblioteca " java.io.InputStream " . Com isso, eles podem ver os principais componentes e comandos de nível de código de bytes que compõem o arquivo de classe particular. Hackers pode rastrear diferentes variáveis através de métodos diferentes para reconstruir gradualmente o fluxo do programa de controlo . Uma vez que os hackers fazem isso, eles podem replicar código -fonte do aplicativo para diferentes fins maliciosos.
Ataques
Após um hacker reverter engenheiros um programa em particular , há várias maneiras ele pode explorar isso para ter acesso a máquinas que executam o programa. Estes incluem vulnerabilidades a explorar para fazer o programa executar código malicioso com a permissão do usuário , ou executar um "man in the middle" ataque. No último cenário , o hacker poderia adicionar seu próprio código malicioso código -fonte do aplicativo , recompilá-lo e colocá-lo na Internet , sob o pretexto do programa original . Usuários desavisados podem baixar o aplicativo e executar diretamente o código do hacker.
Prevenção Engenharia Reversa
Devido à natureza de código Java byte , é quase impossível parar qualquer um de ver o código byte núcleo. Embora métodos como a criptografia pode fornecer um grau de protecção , o mais eficaz a criptografia é, menos independente de plataforma o programa se torna. Os programadores podem , no entanto , joga engenharia reversa off com alguns truques de codificação. Estes incluem escrever funções que são irrelevantes para a execução real do programa, que pode jogar fora aqueles que tentam fazer engenharia reversa do programa.