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.
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:
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.
- Procyon : open-source (Apache 2) e activamente desenvolvido
- Krakatau : Código Aberto (GPLv3) e activamente desenvolvido
- CFR : Código Aberto (MIT) e desenvolvido activamente
- JAD
- DJ Java Decompiler
- Mocha
E muitos mais.
Estes produzem código Java. Java vem com algo que permite você vê o código de byte JVM (javap ).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.
-
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.
- 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.
- Funcionou, mas a saída do Procyon foi melhor. Aqui está uma página comparando a saída do Procyon com a original e JD-GUI . JD-GUI também está disponível como um plugin Eclipse, que não funcionou para mim de todo. Não parece ser de fonte aberta e o desenvolvimento parece esporádico.
- funcionou, mas só suporta Java 1.4 e abaixo. Também está disponível como um 'plugin' de Eclipse. Já não está em desenvolvimento.
Eu uso Jad Decompiler .
Existe um 'plugin' de Eclipsepara ele, jadeciplipse . É muito bom.
Procyon inclui um decompilador. É o FOSS.
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.
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.
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/
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.
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+.
Olha paracavaj .
JAD é um que funciona e é simples.
Além disso, se você só quer ver os métodos, use javap.
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.
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.
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.
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/