Como descompilar um programa escrito 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.classpublic 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();
}
}