Pergunta

Estou tentando descobrir o que o arquivo de classe de um miniaplicativo Java está fazendo nos bastidores.Abri-lo com o Bloco de Notas ou o Textpad apenas mostra um monte de bobagens.

Existe alguma maneira de colocá-lo de volta em um formato legível para que eu possa tentar descobrir o que ele está fazendo?

  • Ambiente == Windows com VS 2008 instalado.
Foi útil?

Solução

jd-gui é o melhor descompilador do momento.ele pode lidar com recursos mais recentes em Java, em comparação com o JAD empoeirado.

Outras dicas

Se você não se importa em ler o bytecode, o javap deve funcionar bem.Faz parte da instalação padrão do JDK.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure

Você quer um descompilador java, você pode usar a ferramenta de linha de comando javap para fazer isso.Também, Como fazer o descompilador Java descreve como você pode descompilar um arquivo de classe.

o que você está procurando é um descompilador Java.Eu recomendo JAD http://www.kpdus.com/jad.html É gratuito para uso não comercial e dá conta do recado.

Observação:isso não tornará o código exatamente igual ao que foi escrito.ou sejavocê perderá comentários e possivelmente nomes de variáveis, então será um pouco mais difícil do que apenas ler o código-fonte normal.Se o desenvolvedor for realmente reservado, ele também terá ofuscado seu código, tornando-o ainda mais difícil de ler.

cpuguru, se seu applet foi compilado com javac 1.3 (ou inferior), sua melhor opção é usar Jad.

Infelizmente, o último JDK suportado pelo JAD 1.5.8 (14 de abril de 2001) é o JDK 1.3.

Se o seu applet foi compilado com um compilador mais recente, você pode tentar JD-GUI :este descompilador está em desenvolvimento, porém gera fontes Java corretas, na maioria das vezes, para classes compiladas com os JDKs 1.4, 1.5 ou 1.6.

DarenW, obrigado pela sua postagem.JD-GUI ainda não é o melhor descompilador...mas estou trabalhando :)

Conforme apontado por @MichaelMyers, use

javap -c <name of java class file> 

para obter o código assembly da JVM.Você também pode redirecionar a saída para um arquivo de texto para melhor visibilidade.

javap -c <name of java class file> > decompiled.txt

Usando Jad descompilar é provavelmente sua melhor opção.A menos que o código tenha sido ofuscado, ele produzirá um resultado correto.

Esse é o código compilado, você precisará usar um descompilador como o JAD: http://www.kpdus.com/jad.html

Você precisa usar um descompilador.Outros sugeriram o JAD, existem outras opções, o JAD é o melhor.

Vou repetir os comentários de que você pode perder um pouco em comparação com o código-fonte original.Ficará especialmente engraçado se o código usar genéricos, devido ao apagamento.

Plugin JAD e/ou JADclipse Eclipse, com certeza.

Se o arquivo de classe que você deseja examinar for de código aberto, você não deve descompilá-lo, mas anexar os arquivos de origem diretamente ao seu IDE.dessa forma, você pode simplesmente visualizar o código de alguma classe de biblioteca como se fosse seu

jd-gui "http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q="é a melhor e mais fácil opção para descompilar o arquivo .class....

Como sugerido, você pode usar JAD para descompilar e visualizar os arquivos.Para facilitar a leitura você pode usar o plugin JADclipse para Eclipse para integrar o JAD diretamente ao Eclipse ou usar o DJ Java Decompiler que é muito mais fácil de usar do que o JAD de linha de comando

JAD é uma excelente opção se você deseja um código Java legível como resultado.Se você realmente deseja se aprofundar nos detalhes do .class formato de arquivo, você vai querer javap.Ele vem junto com o JDK e permite "descompilar" o bytecode hexadecimal em ASCII legível.A linguagem que ele produz ainda é bytecode (nada parecido com Java), mas é bastante legível e extremamente instrutivo.

Além disso, se você realmente quiser, você pode abrir qualquer .class arquivo em um editor hexadecimal e leia o bytecode diretamente.O resultado é idêntico ao uso javap.

Não há necessidade de descompilar Applet.class.O código-fonte das classes públicas da API Java vem com o JDK (se você optar por instalá-lo) e é melhor legível do que o bytecode descompilado.Você pode encontrá-lo compactado em src.zip (localizado na pasta de instalação do JDK).

CFR - outro descompilador java é um ótimo descompilador para Java moderno escrito em Java 6.

você também pode usar os descompiladores Java online disponíveis.Por exemplo http://www.javadecompilers.com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top