Como" descompilar " ficheiros de classe Java? [fechado]

que programa Posso usar para descompilar um ficheiro de classe? Vou conseguir o código Java, ou é apenas o código de montagem da JVM?

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

Author: Peter Mortensen, 2008-11-07

19 answers

Actualização De Fevereiro De 2016:

Www.javadecompilers.com lista JAD como sendo:

O descompilador Java mais popular, mas principalmente desta idade. Escrito em c++, tão rápido.
Desactualizado, não suportado e não descompila correctamente Java 5 e posterior

Então a sua quilometragem pode variar com o jdk recente (7, 8).

O mesmo site lista Outras ferramentas.

{[[2]} e javadecompiler, como assinalado por Salvador Valencia em o comments (Sept 2017), oferece um SaaS onde você envia o ficheiro .class para a nuvem e devolve-lhe o código descompilado.

Resposta Original: Out. 2008

  • o lançamento final do JSR 176, definindo as principais características do J2SE 5.0( Java SE 5), foi publicado em 30 de setembro de 2004.
  • A última versão Java suportada pela JAD, o famoso decompilador Java escrito por Pavel Kouznetsov, é JDK 1.3. A maior parte do Java descompiladores downloadable today from the Internet, such as " DJ Java Decompiler "or" Cavaj Java Decompiler", are powered by JAD: they can not display Java 5 sources.

Java Descompiler (Mais um descompilador Java Rápido) tem:

  • Suporte explícito para descompilação e análise Java 5+ ".ficheiros da classe".
  • uma boa GUI:

screenshot

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

Ele apresenta uma versão demo online que é realmente totalmente funcional! Você pode simplesmente largar um arquivo jar na página e ver o código fonte descompilado sem instalar nada.

 588
Author: VonC, 2017-09-15 21:45:21
Há alguns decompiladores lá fora... Uma pesquisa rápida produz:
  1. Procyon : open-source (Apache 2) e activamente desenvolvido
  2. Krakatau : Código Aberto (GPLv3) e activamente desenvolvido
  3. CFR : Código Aberto (MIT) e desenvolvido activamente
  4. JAD
  5. DJ Java Decompiler
  6. Mocha

E muitos mais.

Estes produzem código Java. Java vem com algo que permite você vê o código de byte JVM (javap ).
 101
Author: billjamesdev, 2016-11-07 15:39:35

Para ver o código-fonte Java verifica algum descompilador. Vai procurar por jad .

Se quiser ver bytecodes, basta usar javap que vem com o JDK.

 51
Author: Marko, 2008-11-07 16:03:51
Tentei várias, e o Procyon pareceu ser o melhor para mim. Está em desenvolvimento ativo e suporta muitas características das últimas versões do Java. Estes são os outros que tentei.
  • CFR
      É promissor, mas muitas vezes falha na descompilação do método. Vou ficar de olho neste. Também desenvolvido ativamente com suporte para as mais recentes funcionalidades Java.
  • Krakatau
    • tem uma abordagem diferente em que ele tenta produzir código Java equivalente em vez de tentar reconstruir a fonte original, que tem o potencial de torná-lo melhor para código ofuscado. Pelos meus testes, foi quase igual ao Procyon, mas ainda é bom ter algo diferente. Eu tive que usar a bandeira da linha de comando {[[0]} para que não parasse nos erros. Desenvolvido activamente, e curiosamente está escrito em Python.
  • JD-GUI
  • JAD
  •  29
    Author: bmaupin, 2014-12-22 16:00:27

    Eu uso Jad Decompiler .

    Existe um 'plugin' de Eclipsepara ele, jadeciplipse . É muito bom.

     18
    Author: sakana, 2016-07-15 13:21:08

    Procyon inclui um decompilador. É o FOSS.

     14
    Author: Janus Troelsen, 2013-06-10 14:02:51

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

    Também, descompilador Java é um descompilador com uma interface gráfica independente e integração Eclipse.

    Por último, Jdec não foi mencionado, embora não seja tão polido como outras opções.

     13
    Author: Quinn Taylor, 2009-09-18 23:59:11

    O JD-GUI é muito bom. Você poderia apenas abrir um arquivo JAR e navegar pelo código como se estás a trabalhar numa IDE. Bom.

     13
    Author: G Kumar, 2014-02-23 16:38:21
    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, livre, sem código-fonte disponível, http://www.benf.org/other/cfr/

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

    Fernflower , código aberto, https://github.com/fesh0r/fernflower,

    Jad – dado aqui só por razões históricas. Livre, sem código fonte disponível, http://varaneckas.com/jad/ Outdated, unsupported and does not descompile correctly Java 5 and later.

    Pode testar os decompiladores acima mencionados online, sem necessidade de instalação e fazer a sua própria escolha educada.

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

     11
    Author: Andrew Rukin, 2017-12-24 11:19:51

    Existem alguns programas que você pode usar. Você vai obter o código Java real, mas às vezes o código terá sido ofuscado de modo que 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

     10
    Author: Mike Pone, 2014-11-19 18:21:45

    A Maioria Dos decompiladores para Java são baseados em JAD . É uma ótima ferramenta, mas infelizmente não foi atualizada por um tempo e não lida muito bem com classes Java 1.5+. Eu não vi nenhuma ferramenta que irá lidar corretamente com classes 1.5+.

     9
    Author: John Meagher, 2008-11-07 16:18:26

    Olha paracavaj .

     6
    Author: Paulo Guedes, 2008-11-07 16:02:55
    Todos os links do JAD listados até agora parecem estar quebrados, então eu encontrei este site. Funciona muito bem (para o Linux, pelo menos)! No Ubuntu 11.10 eu tive que baixar o estático por qualquer razão.

    Http://www.varaneckas.com/jad

     6
    Author: kdazzle, 2012-04-04 03:11:15
    • JAD é um que funciona e é simples.

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

     5
    Author: Berlin Brown, 2011-03-13 05:41:45
    Se queres ver como o compilador Java faz certas coisas, não queres descompilação, queres desmontagem. Descompilação envolve a transformação do bytecode em fonte Java, o que significa que muita informação de baixo nível é perdida, e se você está se perguntando sobre a otimização do compilador, esta é provavelmente a mesma informação que você está interessado.

    De qualquer forma, por acaso escrevi um desmontador de código aberto Java . Ao contrário do Javap, isto funciona mesmo em aulas patológicas, então você pode ver o que as ferramentas de ofuscação estão fazendo com suas aulas também. Também pode fazer a descompilação, embora eu não o recomendasse.

     5
    Author: Antimony, 2012-11-30 03:13:59

    O JAD não trabalha para mim (edição 11.10 do Ubuntu), por isso segui em frente e segui em frente JODO. Pelo menos tem código fonte Java aberto e foi capaz de descompilar meu .classe apropriadamente.

    Eu recomendo verificar 'branches/generic' branch primeiro. Os troncos não estão estáveis.

     4
    Author: alexander.box, 2013-06-25 17:52:07

    Na plataforma IntelliJ IDEA, poderá usar o Plugin Java Descompiler IntelliJ. Ele permite que você exiba todas as fontes Java durante o seu processo de depuração, mesmo que você não as tenha todas. É baseado nas famosas ferramentas JD-GUI .

    enter image description here

     4
    Author: naXa, 2015-10-23 08:36:03

    Comdescompilador de AndroChef Java você pode descompilar apk, dex, jar e ficheiros de classe java. É simples e fácil. AndroChef JD é baseado em FernFlower. Você pode avaliá-lo em 10 usos gratuitos.

    AndroChef suporta funcionalidades de linguagem Java como genéricos, enums e anotações. De acordo com alguns estudos, o descompilador AndroChef Java é capaz de descompilar 98,04% das aplicações Java geradas com compiladores Java tradicionais - uma taxa de recuperação muito alta. É simples. mas ferramenta poderosa que lhe permite descompilar Java e Dalvik bytecode (DEX, APK) em fonte Java legível.

     1
    Author: naXa, 2015-10-23 08:44:20

    Para OSX eu recomendo: jarzilla ou JD-GUI

    Ambos te permitem ver jarra,guerra,etc. conteúdo de arquivo e descompila qualquer arquivo de classe dentro deles.

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

     1
    Author: cjackson, 2017-02-02 16:01:12