Qual programa posso usar para descompilar um arquivo de classe? Na verdade, receberei o código Java ou é apenas o código de montagem da JVM?
Nas questões de desempenho do Java neste site, muitas vezes vejo respostas de pessoas que "descompilaram" o arquivo de classe Java para ver como o compilador otimiza certas coisas.
java
decompiler
Kip
fonte
fonte
Respostas:
Atualização em fevereiro de 2016:
www.javadecompilers.com lista JAD como sendo:
Portanto, sua milhagem pode variar com o jdk recente (7, 8).
O mesmo site lista outras ferramentas.
E o javadecompiler, conforme observado por Salvador Valencia nos comentários (setembro de 2017), oferece um SaaS em que você faz o upload do
.class
arquivo na nuvem e retorna o código descompilado.Resposta original: outubro de 2008
Descompilador Java (outro descompilador Fast Java):
Ele funciona com compiladores do JDK 1.1.8 até o JDK 1.7.0 e outros ( Jikes , JRockit , etc.).
Possui uma versão demo online ao vivo que é totalmente funcional! Você pode simplesmente soltar um arquivo jar na página e ver o código-fonte descompilado sem instalar nada.
fonte
Existem alguns decompiladores por aí ... Uma rápida pesquisa gera:
E muitos mais.
Eles produzem código Java. O Java vem com algo que permite ver o código de bytes da JVM ( javap ).
fonte
Para ver o código-fonte Java, verifique algum descompilador. Vá procurar jad .
Se você quiser ver bytecodes, basta usar o javap que vem com o JDK.
fonte
Eu tentei vários, e Procyon parecia funcionar melhor para mim. Está em desenvolvimento ativo e suporta muitos recursos das versões mais recentes do Java.
Estes são os outros que eu tentei:
-skip
sinalizador de linha de comando para não parar por erros. Desenvolvido ativamente e, curiosamente, está escrito em Python.fonte
IGNORE_EXCEPTIONS
coisa foi alterada para o sinalizador da linha de comando-skip
.Eu uso o JAD Decompiler .
Existe um plugin Eclipse para ele, jadeclipse . É bem legal.
fonte
Procyon inclui um descompilador. É FOSS.
fonte
A fuligem é uma opção para o código Java mais recente. Pelo menos tem a vantagem de ainda ser mantido recentemente ...
Além disso, o Java Decompiler é um descompilador com uma GUI independente e integração com o Eclipse.
Por fim, o Jdec não foi mencionado, embora não seja tão sofisticado quanto as outras opções.
fonte
JD-GUI é realmente bom. Você pode simplesmente abrir um arquivo JAR e navegar pelo código como se estivesse trabalhando em um IDE. Coisa boa.
fonte
Aqui está uma lista de descompiladores a partir de fevereiro de 2015:
Procyon , código aberto, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , gratuito, sem código-fonte disponível, http://www.benf.org/other/cfr/
JD , gratuito apenas para uso não comercial, http://jd.benow.ca/
Fernflower , código aberto, https://github.com/fesh0r/fernflower ,
JAD - fornecido aqui apenas por razões históricas. Gratuito, sem código-fonte disponível, http://varaneckas.com/jad/ Desatualizado, sem suporte e não descompila corretamente o Java 5 e posterior.
Você pode testar os descompiladores mencionados acima online, sem necessidade de instalação e fazer sua própria escolha.
Descompiladores Java na nuvem: http://www.javadecompilers.com/
fonte
Existem alguns programas que você pode usar. Você obterá o código Java real, mas às vezes o código será ofuscado, portanto os métodos são nomeados por uma letra ou número ou uma mistura aleatória de letras e números.
DJ Decompiler Mocha
fonte
A maioria dos decompiladores para Java é baseada no JAD . É uma ótima ferramenta, mas infelizmente não foi atualizada por um tempo e não lida muito bem com as classes Java 1.5+. Eu não vi nenhuma ferramenta que lide adequadamente com mais de 1,5 classes.
fonte
Dê uma olhada no cavaj .
fonte
jad
por baixo.Todos os links JAD listados até agora parecem estar quebrados, por isso encontrei este site. Funciona muito bem (para Linux, pelo menos)! No Ubuntu 11.10, eu tive que baixar o estático por qualquer motivo.
http://www.varaneckas.com/jad
fonte
JAD é aquele que funciona e é simples.
Além disso, se você quiser apenas ver os métodos, use javap.
fonte
Se você deseja ver como o compilador Java faz certas coisas, não deseja descompilar, desmontar. A descompilação envolve a transformação do bytecode em fonte Java, o que significa que muitas informações de baixo nível são perdidas e, se você está pensando em otimização do compilador, provavelmente é essa a mesma informação em que você está interessado.
De qualquer forma, eu escrevi um desmontador Java de código aberto . Ao contrário do Javap, isso funciona mesmo em classes altamente patológicas, para que você possa ver o que as ferramentas de ofuscação também estão fazendo nas suas aulas. Também pode descompilar, embora eu não recomendo.
fonte
O JAD não funciona para mim (questão do Ubuntu 11.10), então segui em frente e mergulhei no JODO . Pelo menos, ele possui código-fonte Open Java e foi capaz de descompilar meu .class corretamente.
Eu recomendo verificar a ramificação 'branches / generic' primeiro. Os troncos não são estáveis.
fonte
Na plataforma IntelliJ IDEA, você pode usar o Java Decompiler IntelliJ Plugin . Permite exibir todas as fontes Java durante o processo de depuração, mesmo se você não tiver todas elas. É baseado nas famosas ferramentas JD-GUI .
fonte
Com o AndroChef Java Decompiler, você pode descompilar arquivos de classes apk, dex, jar e java. É simples e fácil. O AndroChef JD é baseado em FernFlower . Você pode avaliar em 10 usos gratuitos.
fonte
Para OSX, eu recomendo: jarzilla ou JD-GUI
Ambos permitem que você veja jar, guerra, etc. conteúdo do arquivo e descompila todos os arquivos de classe dentro deles.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
fonte