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

关于该站点上的Java性能问题,我经常看到已经“反编译” Java类文件以查看编译器如何优化某些东西的人们的回答。


#1楼

到目前为止,列出的所有JAD链接似乎都已损坏,因此我找到了此站点。 效果很好(至少适用于Linux)! 在Ubuntu 11.10上,无论出于何种原因,我都必须下载静态版本。

http://www.varaneckas.com/jad


#2楼

如果要查看Java编译器如何执行某些操作,则不需要反编译,而需要反汇编。 反编译涉及将字节码转换为Java源代码,这意味着丢失了许多低级信息,并且如果您想知道编译器优化,那么这可能就是您感兴趣的信息。

无论如何,我碰巧写了一个开源Java反汇编程序 。 与Javap不同,这甚至可以在高度病理的类上使用,因此您也可以查看混淆工具对类的作用。 它也可以反编译,尽管我不建议这样做。


#3楼

煤烟是更新的Java代码的一种选择。 至少它的优点是最近仍在维护...

而且, Java Decompiler是具有独立GUI和Eclipse集成的反编译器。

最后,虽然没有像其他选项那样精巧 ,但是没有提及Jdec


#4楼

Procyon包括反编译器。 是FOSS。


#5楼

JAD对我不起作用(Ubuntu 11.10问题),所以我向前迈进了一步,开始使用JODO 。 至少它具有Open Java源代码,并且能够正确地反编译我的.class

我建议先检查“分支/常规”分支。 中继线不稳定。


#6楼

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

这些是我尝试过的其他产品:

  • 病死率

    • 有希望的方法反编译通常是失败的。 我会一直关注这个。 还积极开发并支持最新的Java功能。
  • 喀拉喀托
    • 采用不同的方法,因为它尝试输出等效的Java代码,而不是尝试重建原始源,这有可能使其更适合混淆代码。 根据我的测试,它与Procyon大致相当,但还是有一些不同之处。 我确实必须使用-skip命令行标志,以便它不会因错误而停止。 积极开发,有趣的是它是用Python编写的。
  • 图形界面
    • 可行,但是Procyon的输出要好得多。 这是比较Procyon输出与原始JD-GUI的页面 。 JD-GUI也可以作为Eclipse插件使用 ,这对我根本不起作用。 似乎不是开源的,开发似乎是零星的。
  • 贾德
    • 有效,但仅支持Java 1.4及更低版本。 也可以作为Eclipse插件使用 。 不再开发中。

#7楼

看一看cavaj 。


#8楼

要查看Java源代码,请检查一些反编译器。 去寻找贾德

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


#9楼

有一些反编译器...快速搜索结果:

  1. Procyon :开源(Apache 2)并积极开发
  2. Krakatau :开源(GPLv3),并积极开发
  3. CFR :开源(MIT)并积极开发
  4. 贾德
  5. DJ Java反编译器
  6. 摩卡咖啡

还有很多。

这些产生Java代码。 Java附带了一些让您看到JVM字节码( javap )的东西。


#10楼

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

DJ反编译 摩卡


#11楼

我使用JAD Decompiler 。

有一个Eclipse插件jadeclipse 。 很好


#12楼

大多数Java反编译器都是基于JAD的 。 这是一个很棒的工具,但是不幸的是,有一段时间没有更新,并且不能很好地处理Java 1.5+类。 我还没有看到任何可以正确处理1.5+类的工具。


#13楼

2016年2月更新:

www.javadecompilers.com将JAD列出为:

最受欢迎的Java反编译器,但仅限于这个时代。 用C ++编写,非常快。
过时,不受支持且无法正确反编译Java 5及更高版本

因此,您的里程可能会因最近的jdk而异(7,8)。

同一站点列出了其他工具。

如萨尔瓦多·瓦伦西亚 ( Salvador Valencia)在评论中 (2017年9月)所述,javadecompiler提供了一个SaaS,您可以在其中将.class文件上传到云中并返回经过反编译的代码。


原始答案:2008年10月

  • 定义J2SE 5.0(Java SE 5)的主要功能的JSR 176的最终版本已于2004年9月30日发布。
  • 由Pavel Kouznetsov先生编写的著名Java反编译器JAD支持的最新Java版本是JDK 1.3
  • 目前,可从Internet下载的大多数Java反编译器(例如“ DJ Java Decompiler”或“ Cavaj Java Decompiler”)均由JAD提供支持:它们无法显示Java 5源。

Java Decompiler (还有另一个Fast Java decompiler)具有:

  • 明确支持反编译和分析Java 5+ “ .class”文件。
  • 一个不错的GUI:

它可以与从JDK 1.1.8到JDK 1.7.0以及其他版本( Jikes , JRockit等)的编译器一起使用。

它具有一个在线实时演示版本 ,实际上功能齐全! 您只需将jar文件放在页面上,即可查看反编译的源代码,而无需安装任何内容。


#14楼

以下是截至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反编译器: http //www.javadecompilers.com/


#15楼

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

它们都允许您查看jar,war等。 文件内容并反编译其中的任何类文件。

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


#16楼

使用AndroChef Java反编译器,您可以反编译apk,dex,jar和Java类文件。 这很简单。 AndroChef JD基于FernFlower 。 您可以免费使用10次来评估它。

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


#17楼

在IntelliJ IDEA平台上,您可以使用Java Decompiler IntelliJ插件 。 它允许您在调试过程中显示所有Java源代码,即使您没有全部源代码也是如此。 它基于著名的工具JD-GUI 。


#18楼

  • JAD是一种有效且简单的工具。

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


#19楼

JD-GUI真的很好。 您可以打开一个JAR文件,然后像浏览IDE一样浏览代码。 好东西。

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

  1. 反编译Java class文件

    需求 有时需要确认自己的改动在服务器上是否已经部署,最可靠的办法就是将代码反编译对比看下 反编译 一般部署到服务器上的Java应用会打成 jar 包,此时可以先解压 jar xvf xxx.jar 然 ...

  2. java compiler类_利用 JavaCompiler 编译 Java 类文件

    1.[代码]DiagnosticCollectorCompile.java import java.io.IOException; import java.util.Arrays; import ja ...

  3. asm java 反编译_dex-tools-2.1-SNAPSHOT 反编译Java class文件和Android dex文件到Java源码的利器 - 下载 - 搜珍网...

    压缩包 : fcef342f7efebdee9176000f148113.zip 列表 dex-tools-2.1-SNAPSHOT/ dex-tools-2.1-SNAPSHOT/lib/ dex- ...

  4. Java反编译字节码文件

    如何查看 Java 的字节码文件? 在 Java 中,字节码文件.class实际上是二进制文件,并不能直接查看.要想查看,我们只能通过反编译对其进行解析,然后查看解析后的源码. 如何反编译字节码文件 ...

  5. jad 反编译java

    1 安装 解压jad.zip文件到任何的目录.将会创建两个文件,一个是jad.exe另一个是readme文 件,不需要任何别安装 2 如何使用jad 如果我们有一个单独的java文件example1. ...

  6. java javap_javap的用途不断发展:您的Java类文件中隐藏了什么?

    java javap 什么是Javap,如何使用它以及何时要反汇编类文件? 作为Java开发工具包(JDK)的一部分,我们可以使用许多工具,这些工具有助于更好地理解Java代码. 这些工具之一是jav ...

  7. javap的用途不断发展:您的Java类文件中隐藏了什么?

    什么是Javap,如何使用它以及何时要反汇编类文件? 作为Java开发工具包(JDK)的一部分,我们可以使用许多工具,这些工具有助于更好地理解Java代码. 这些工具之一是javap命令,它为我们提供 ...

  8. 【深入理解JVM】Java类文件的基本结构

    Java类文件(.class文件)是一个为已编译Java程序仔细定义的格式.Java源代码被编译成能够被任何JVM加载和执行的类文件.在被JVM加载之前,类文件可能是由网络传输而来. 类文件是独立于底 ...

  9. 使用ASM 4处理Java类文件–第一部分:世界,您好!

    什么是ASM :ASM是一个用于处理Java字节码的开源Java库. 因此,它具有与Apache BCEL相同的目的. 由于本文假定读者具有Java类文件格式的某些知识,因此建议在此处进行阅读. 那么 ...

最新文章

  1. vim批量转文件编码
  2. So many interfaces!
  3. java 中static 关键字的用法全解
  4. PPT科研绘图第二节 如何调整三维旋转参数
  5. linux s删除第一行,Linux文本处理三驾马车之一sed
  6. PostgreSQL数据库远程连接功能的开启
  7. sql去重、or、in、and、groupby的使用
  8. mysql序列化字段反序列化_序列化serialize()与反序列化unserialize()的实例
  9. resiprocate 之repro注册
  10. 第7.3节 Python特色的面向对象设计:协议、多态及鸭子类型
  11. Servlet实现登录带有验证码验证案例
  12. php元换成万元,1000元怎么换算成万元(元怎么换成万元)
  13. python博弈树_博弈方法
  14. 如何区分芯片原装、散新、翻新,减少器件的不良率?
  15. 博观约取 和实生物----张铜彦先生的魏碑情结
  16. 计算机网络--万维网实验
  17. element表格固定某一行_ElementUI Table 首行固定
  18. ORAN专题系列-18:5G O-RAN FrontHaul前传接口互操作性测试规范IOT概述与总体架构
  19. html msn 消息,MSN HTML代码
  20. 基于c数据结构——实现多项式合并同类项,加法和乘法

热门文章

  1. 将桌面文件映射至E盘
  2. jQuery 图片滚动 Carousel Lite 使用说明
  3. ORACLE AWR简介
  4. ROBOTS.TXT在SEO优化中的运用(ROBOTS.TXT SEO优化实战)
  5. 使用全备+binlog日志恢复数据库
  6. Qt中与文件目录相关操作
  7. JQuery在循环中绑定事件的问题详解
  8. Spring4.0学习笔记(5) —— 管理bean的生命周期
  9. Android快速开发(2)
  10. YII framework CComponent基础类解读(转)