Pergunta

O programa pode Eu uso a decompile um arquivo de classe? Será que eu realmente obter o código Java, ou é apenas o código de montagem JVM?

questões de desempenho em Java neste site muitas vezes eu vejo respostas de pessoas que "descompilados" o arquivo de classe Java para ver como o compilador otimiza certas coisas.

Foi útil?

Solução

Atualização de fevereiro 2016:

www.javadecompilers.com lista JAD como sendo:

os mais populares decompiler Java, mas principalmente de apenas esta idade. Escrito em C ++, de modo muito rápido.
Desatualizado, sem suporte e não descompilar corretamente Java 5 e posterior

Assim, sua milhagem pode variar com jdk recente (7, 8).

A mesma lista local de outras ferramentas.

E javadecompiler, como observado por Salvador Valencia em os comentários (Sept 2017), oferece uma SaaS onde carregar o arquivo .class para a nuvem e ele retorna -lhe o código compilado.


resposta Original: outubro 2008

  • A versão final do JSR 176, que define as principais características do J2SE 5.0 (Java SE 5), foi publicada em 30 de setembro de 2004.
  • As últimas versão Java suportada pelo JAD, o famoso decompiler Java escrito pelo Sr. Pavel Kouznetsov, é JDK 1.3 .
  • Na maioria das Java decompilers para download a partir de hoje na Internet, como “DJ Java Decompiler” ou “Cavaj Java Decompiler”, são alimentados por JAD:. Eles não podem exibir Java 5 fontes

Java Decompiler (Ainda um outro decompiler rápida Java) tem:

  • suporte explícito para decompiling e análise Java 5 + “.class” arquivos.
  • A GUI agradável:

Captura de tela

Ele funciona com compiladores de JDK 1.1.8 até JDK 1.7.0, e outros ( Jikes , JRockit , etc.).

Apresenta uma linha demonstração ao vivo versão que é realmente totalmente funcional! Você pode simplesmente colocar um arquivo jar na página e ver o código fonte compilado sem instalar nada.

Outras dicas

Existem algumas decompilers lá fora ... Um rápido rendimentos de buscas:

  1. Procyon : open-source (Apache 2) e ativamente desenvolvido
  2. Krakatau : open-source (GPLv3) e ativamente desenvolvido
  3. CFR : open-source (MIT) e desenvolvido ativamente
  4. JAD
  5. DJ Java Decompiler
  6. Mocha

E muito mais.

Estas código Java produtos. Java vem com algo que lhe permite ver o código byte JVM ( javap ).

Para ver o código-fonte Java verificar alguns decompiler. Vai procurar jad .

Se você quiser ver bytecodes, uso apenas javap que vem com o JDK.

Eu tentei vários, e Procyon parecia estar a trabalhar o melhor para mim. É em desenvolvimento e suporta muitas características ativos das últimas versões do Java.

Estes são os outros que eu tentei:

  • CFR
    • promissor, mas muitas vezes não decompilation método. Eu vou estar mantendo meu olho em um presente. Também desenvolveu ativamente com suporte para as últimas Java apresenta.
  • Krakatau
    • tem uma abordagem diferente na medida em que tenta saída de código Java equivalente em vez de tentar reconstruir a fonte original, que tem o potencial de torná-lo melhor para código ofuscado. Do meu teste era mais ou menos a par com Procyon, mas ainda bom ter algo diferente. Eu tinha que usar o sinalizador de linha de comando -skip por isso não iria parar em erros. Desenvolvido ativamente, e curiosamente é escrito em Python.
  • JD-GUI
    • Trabalhou, mas a saída do Procyon foi muito melhor. Aqui está uma href="https://bitbucket.org/mstrobel/procyon/wiki/Decompiler%20Output%20Comparison" rel="noreferrer"> página . JD-GUI também está disponível como um Eclipse plug-in , que não funcionou para mim em tudo . não parece ser de origem e de desenvolvimento aberto parece esporádica.
  • JAD
    • funcionou, mas só suporta Java 1.4 e abaixo. Também disponível como um Eclipse plug-in . Não mais em desenvolvimento.

Eu uso JAD Decompiler .

Há um Eclipse plugin para isso, jadeclipse . É bastante agradável.

Procyon inclui um decompiler. É FOSS.

Fuligem é uma opção para novo código Java. Pelo menos tem a vantagem de ser ainda recentemente mantido ...

Além disso, Java Decompiler é um decompiler tanto com um stand- sozinho GUI e integração Eclipse.

Finalmente, JDEC não foi mencionado, embora não é tão polido como outras opções.

JD-GUI é realmente bom. Você poderia apenas abrir um href="http://en.wikipedia.org/wiki/JAR_%28file_format%29"> arquivo JAR

Aqui está uma lista de decompilers a partir de fevereiro 2015:

Procyon , open-source, https: // bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

CFR , livre, sem código fonte disponível, http: / /www.benf.org/other/cfr/

JD , gratuito para uso não comercial, http: //jd.benow .pt /

Fernflower , open-source, https://github.com/fesh0r/ fernflower ,

JAD - dada aqui apenas por uma razão histórica. Livre, sem código-fonte disponível, http://varaneckas.com/jad/ Desatualizado, sem suporte e não descompilar corretamente Java 5 e posterior.

Você pode testar decompilers acima mencionados on-line, não requer instalação e fazer a sua própria escolha educada.

Java decompilers na nuvem: http://www.javadecompilers.com/

Existem alguns programas que você pode usar. Você vai obter o código Java real, mas às vezes o código terá sido ofuscado por isso métodos são nomeados por uma letra ou número ou uma mistura aleatória de letras e números.

DJ Decompiler Mocha

A maioria dos decompilers para Java são baseados em JAD . É uma ótima ferramenta, mas infelizmente não foi atualizado por um tempo e não lida com Java 1.5+ aulas muito bem. Eu não vi nenhuma ferramenta que irá lidar adequadamente 1.5+ classes.

Dê uma olhada Cavaj .

Todos os links JAD listados até agora agora parecem ser quebrado, então eu encontrei este site. Funciona muito bem (para Linux, pelo menos)! No Ubuntu 11.10 Eu tive que baixar a estática por qualquer motivo.

http://www.varaneckas.com/jad

  • JAD é um que funciona e é simples.

  • Além disso, se você só quer ver os métodos, o uso javap.

Se você quiser ver como o compilador Java faz certas coisas, você não quer descompilação, você quer desmontagem. Decompilation envolve transformar o bytecode em código Java, o que significa que uma grande quantidade de informações de baixo nível está perdido, e se você está querendo saber sobre otimização do compilador, esta é provavelmente a própria informação que você está em interessado.

De qualquer forma, acontece que eu tenha escrito um código aberto Java desmontador . Ao contrário javap, isso funciona mesmo em classes altamente patológicos, para que possa ver o que ofuscação ferramentas estão fazendo para suas aulas também. Ele também pode fazer descompilação, embora eu não recomendo.

JAD não funciona para mim (Ubuntu 11.10 emissão) para que eu me mudei para a frente e são interrompidos em JODO . Pelo menos ele tem código fonte aberto Java e foi capaz de decompor o meu .class corretamente.

Eu recomendo dar uma olhada no 'ramos / genérico' ramo em primeiro lugar. Os troncos não é estável.

Em IntelliJ IDEA plataforma você pode usar Java Decompiler IntelliJ Plugin . Ele permite que você para exibir todas as fontes de Java durante o processo de depuração, mesmo se você não tê-los todos. Baseia-se as ferramentas famosos JD-GUI .

enter descrição da imagem aqui

Com AndroChef Java Decompiler você pode descompilar apk, dex, frasco e Java Class-arquivos. É simples e fácil. AndroChef JD é baseado em FernFlower . Você pode avaliá-lo em 10 usos livres.

AndroChef suporta recursos de linguagem Java como genéricos, enumerações e anotações. De acordo com alguns estudos, AndroChef Java Decompiler é capaz de decompor 98,04% das aplicações Java gerados com os compiladores tradicionais Java - uma taxa de recuperação muito alto. É simples mas poderosa ferramenta que permite que você descompilar Java e Dalvik bytecode (DEX, APK) em código Java legível.

Para OSX Eu recomendo: jarzilla ou JD-GUI

Ambos permitem visualizar jar, guerra, etc. o conteúdo do arquivo e decompiles quaisquer arquivos de classe dentro deles.

Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/

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