首页 文章

如何“反编译”Java类文件? [关闭]

提问于
浏览
556

我可以使用什么程序来反编译类文件?我真的会获得Java代码,还是仅仅是JVM汇编代码?

关于这个站点上的Java性能问题,我经常看到那些“反编译”Java类文件的人的反应,看看编译器如何优化某些东西 .

19 回答

  • 4

    Soot是较新Java代码的选项 . 至少它具有最近仍然保持的优势......

    此外,Java Decompiler是一个具有独立GUI和Eclipse集成的反编译器 .

    最后,Jdec还没有像其他选项那样优雅 .

  • 1

    JD-GUI真的很棒 . 您只需打开一个JAR文件并浏览代码,就好像您正在使用IDE一样 . 好东西 .

  • 5

    2016年2月更新:

    www.javadecompilers.com将JAD列为:

    最受欢迎的Java反编译器,但主要仅限于此时代 . 写在C中,所以非常快 . 过时,不受支持且无法正确反编译Java 5及更高版本

    所以你的里程可能会随着最近的jdk而变化(7,8) .

    同一网站列出了其他工具 .

    javadecompiler,如the commentsthe comments(2017年9月)中所述,提供了一个SaaS,您可以将 .class 文件上传到 Cloud 端,并返回反编译代码 .


    原答案:2008年10月

    • JSR 176的最终版本,定义了J2SE 5.0(Java SE 5)的主要功能,已于2004年9月30日发布 .

    • 由Pavel Kouznetsov先生编写的着名Java反编译器JAD支持的最新Java版本是 JDK 1.3 .

    • 今天从互联网上下载的大多数Java反编译器,例如“DJ Java Decompiler”或“Cavaj Java Decompiler”,都是由JAD提供支持的:它们无法显示Java 5源代码 .

    Java Decompiler(又一个快速Java反编译器):

    • 显式支持反编译和分析 Java 5+ “.class”文件 .

    • 一个不错的GUI:

    screenshot

    它适用于从JDK 1.1.8到JDK 1.7.0以及其他(JikesJRockit等)的编译器 .

    它具有在线live demo version,实际上功能齐全!你可以在页面上删除一个jar文件,看看反编译的源代码而不安装任何东西 .

  • 13

    有一些反编译器......快速搜索产生:

    还有很多 .

    这些产生Java代码 . Java带有一些东西可以让你看到JVM字节码(javap) .

  • 101

    要查看Java源代码,请检查一些反编译器 . 去搜索 jad .

    如果要查看字节码,只需使用JDK附带的 javap .

  • 11

    我尝试了几个,Procyon似乎对我来说效果最好 . 它正在积极开发中,并支持最新版Java的许多功能 .

    这些是我试过的其他人:

    • CFR

    • 有希望,但经常失败的方法反编译 . 我会留意这个 . 还积极开发支持最新的Java功能 .

    • Krakatau

    • 采用不同的方法,因为它尝试输出等效的Java代码,而不是尝试重建原始源,这有可能使其更好地用于混淆代码 . 根据我的测试,它与Procyon大致相同,但仍然很高兴有不同的东西 . 我确实必须使用 -skip 命令行标志,因此它不会用Python编写 .

    • JD-GUI

    • 工作了,但是Procyon 's output was much better. Here'是page comparing Procyon output to the original and JD-GUI . JD-GUI也可用作Eclipse plugin,它似乎不是开源的,开发似乎是零星的 .

    • JAD

    • 已完成,但仅支持Java 1.4及更低版本 . 也可作为Eclipse plugin . 不再在开发中 .

  • 10

    我用JAD Decompiler .

    有一个Eclipse插件,jadeclipse . 这很不错 .

  • 5

    Procyon 包括一个反编译器 . 这是FOSS .

  • 4

    以下是截至2015年2月的反编译列表:

    Procyon ,开源,https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

    CFR ,免费,无源代码,http://www.benf.org/other/cfr/

    JD ,仅限非商业用途,http://jd.benow.ca/

    Fernflower ,开源,https://github.com/fesh0r/fernflower

    JAD - 此处仅出于历史原因 . 免费,没有可用的源代码,http://varaneckas.com/jad/过时,不受支持且无法正确反编译Java 5及更高版本 .

    您可以在线测试上述反编译器,无需安装,并做出自己的教育选择 .

    Java decompilers in the cloud: http://www.javadecompilers.com/

  • 14

    您可以使用一些程序 . 您将获得实际的Java代码,但有时代码将被混淆,因此方法以一个字母或数字或随机混合的字母和数字命名 .

    DJ Decompiler Mocha

  • 51

    大多数Java反编译器都基于JAD . 它已经更新了一段时间,并且不能很好地处理Java 1.5类 . 我还没见过能够正确处理1.5个类的工具 .

  • 6

    看看cavaj .

  • 9

    到目前为止列出的所有JAD链接似乎都被破坏了,所以我找到了这个网站 . 效果很好(至少对Linux来说)!在Ubuntu 11.10上,无论出于何种原因,我都必须下载静态的 .

    http://www.varaneckas.com/jad

  • 29
    • JAD是一个有效且简单的工具 .

    • 另外,如果您只想查看方法,请使用javap .

  • 18

    如果你想看看Java编译器如何做某些事情,你不想反编译,你想要反汇编 . 反编译涉及将字节码转换为Java源代码,这意味着丢失了大量低级信息,如果您对编译器优化感到疑惑,这可能是您感兴趣的信息 .

    无论如何,我碰巧写了open source Java disassembler . 与Javap不同,它甚至可以在高度病态的类中工作,因此您可以看到混淆工具对您的类进行了哪些操作 . 它也可以做反编译,但我不推荐它 .

  • 588

    JAD没有JODO向前移动并且在JODO上徘徊 . 至少它有Open Java源代码,并且能够正确地反编译我的.class .

    我建议先查看'branches/generic'分支 . 树干不稳定 .

  • 13

    在IntelliJ IDEA平台上,您可以使用Java Decompiler IntelliJ Plugin . 它允许您在调试过程中显示所有Java源代码,即使您没有全部 . 它基于着名的工具JD-GUI .

    enter image description here

  • 6

    使用AndroChef Java Decompiler,您可以反编译apk,dex,jar和java类文件 . 它简单易行 . AndroChef JD基于FernFlower . 您可以在10个免费使用中评估它 .

    AndroChef支持Java语言功能,如泛型,枚举和注释 . 根据一些研究,AndroChef Java Decompiler能够反编译使用传统Java编译器生成的98.04%的Java应用程序 - 非常高的恢复率 . 它是一个简单但功能强大的工具,允许您将Java和Dalvik字节码(DEX,APK)反编译成可读的Java源代码 .

  • 1

    对于OSX,我建议:jarzilla或JD-GUI

    他们都允许你查看jar,战争等 . 文件内容并反编译其中的任何类文件 .

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

相关问题