Como descompilar um programa em java?

o Agnaldo apresenta (de forma superficial) o Jad - um descompilador java.

Como descompilar um programa escrito em java?

 
publicado por Agnaldo em 20 de maio de 2008 no www.50minutos.com.br
 
Pergunta do aluno: Como posso obter o arquivo fonte (.java) a partir de um arquivo binário (.class) em java?

Resposta: Eu uso um programinha chamado Jad. Possui interface console e usamos da seguinte forma:

jad [argumentos] NomeDoArquivo.class

Por exemplo, se quiser descompilar o arquivo Pessoa.class, usamos (na forma mais simples):

jad Pessoa.class (um arquivo Pessoa.jad será criado)

Para obter uma ajuda a respeito dos argumentos permitidos, basta executar:

jad

Existem programas com interface gráfica que chamam o Jad internamente, como o FrontEndPlus (baixado no próprio site do JAD) e o Decafe Pro.

 

O código fonte original da classe Pessoa (arquivo Pessoa.java) é:

public class Pessoa{
      private String nome;
      private char sexo;
      private int idade;


      public Pessoa(String nome, char sexo, int idade){
       this.nome = nome;
       this.idade = idade;
       this.sexo = sexo;
      }


      public String toString(){
       return this.nome + " tem "
       + String.valueOf(this.idade) + " anos e é do sexo "
       + (this.sexo == 'M' ? "masculino" : "feminino");
      }
}

O código gerado pelo Jad a partir do arquivo Pessoa.class é:

// FrontEnd Plus GUI for JAD
// DeCompiled : Pessoa.class


public class Pessoa
{


    private String nome;
    private char sexo;
    private int idade;


    public Pessoa(String s, char c, int i)
    {
     nome = s;
     idade = i;
     sexo = c;
    }


    public String toString()
    {
     return (new StringBuilder()).append(nome)
     .append(" tem ").append(String.valueOf(idade))
     .append(" anos e é do sexo ")
     .append(sexo != 'M' ? "feminino" : "masculino").toString();
    }
}

Artigos relacionados