如何“反编译”java类文件?

v8wbuo2f  于 2021-07-11  发布在  Java
关注(0)|答案(19)|浏览(419)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

5年前关门了。

锁定。这个问题和它的答案是锁定的,因为这个问题是离题的,但有历史意义。它目前不接受新的答案或互动。

我可以用什么程序反编译类文件?我真的会得到java代码,还是仅仅是jvm汇编代码?
在这个网站上的java性能问题上,我经常看到那些“反编译”java类文件以了解编译器如何优化某些东西的人的回答。

x6492ojm

x6492ojm1#

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

ix0qys7i

ix0qys7i2#

对于osx,我推荐:jarzilla或JDGUI
它们都允许您查看jar、war等文件内容并反编译其中的任何类文件。
贾希拉:https://code.google.com/p/jarzilla/
京东gui:http://jd.benow.ca/

polhcujo

polhcujo3#

使用androchef java反编译器,您可以反编译apk、dex、jar和java类文件。这很简单。androchef jd是基于fernflower的。你可以评估它在10个免费使用。
androchef支持java语言特性,比如泛型、枚举和注解。根据一些研究,androchef java反编译器能够反编译传统java编译器生成的98.04%的java应用程序—非常高的恢复率。它是一个简单但功能强大的工具,允许您将java和dalvik字节码(dex,apk)反编译成可读的java源代码。

pprl5pva

pprl5pva4#

在intellij idea平台上,您可以使用java反编译器intellij插件。它允许您在调试过程中显示所有java源代码,即使您没有所有的java源代码。它是基于著名的工具jdgui。

nfg76nw0

nfg76nw05#

jad对我不起作用(ubuntu11.10版),所以我向前看了看jodo。至少它有开放的java源代码,并且能够正确地反编译我的.class。
我建议先检查一下“分支/通用”分支。树干不稳。

lkaoscv7

lkaoscv76#

如果您想了解java编译器是如何完成某些事情的,您不需要反编译,而是需要反汇编。反编译涉及将字节码转换为java源代码,这意味着大量低级信息丢失,如果您想了解编译器优化,这可能正是您感兴趣的信息。
不管怎样,我碰巧写了一个开源java反汇编程序。与javap不同的是,它甚至可以在高度病态的类上工作,因此您可以看到模糊处理工具对您的类所做的工作。它也可以进行反编译,尽管我不推荐它。

2w3rbyxf

2w3rbyxf7#

jad是一个简单有效的工具。
另外,如果您只想查看这些方法,请使用javap。

qcbq4gxm

qcbq4gxm8#

到目前为止列出的所有jad链接似乎都被破坏了,所以我找到了这个网站。非常好用(至少对于linux是如此)!在Ubuntu11.10上,无论出于什么原因,我都不得不下载静态版本。
http://www.varaneckas.com/jad

qnyhuwrf

qnyhuwrf10#

大多数java反编译器都是基于jad的。这是一个很棒的工具,但不幸的是,它已经有一段时间没有更新了,不能很好地处理Java1.5+类。我还没有看到任何能够正确处理1.5+类的工具。

a0x5cqrl

a0x5cqrl11#

2016年2月更新:
www.javadecompilers.com 将jad列为:
最流行的java反编译器,但主要是这个时代的。用c++写的,速度很快。
过时、不受支持且无法正确反编译java 5及更高版本
所以你的里程数可能会随着最近的jdk(7,8)而变化。
同一站点列出其他工具。
正如salvador valencia在评论(2017年9月)中指出的,javadecompiler提供了一个saas,您可以在其中上传 .class 文件并返回反编译的代码。
原答案:2008年10月
JSR176的最终版本定义了J2SE5.0(JavaSE5)的主要特性,已于2004年9月30日发布。
由pavelkouznetsov先生编写的著名java反编译器jad支持的最新java版本是jdk1.3。
现在可以从internet下载的大多数java反编译器,如“dj java decompiler”或“cavaj java decompiler”,都是由jad提供支持的:它们不能显示Java5源代码。
java反编译器(又一个快速java反编译器)具有:
显式支持反编译和分析Java5+“.class”文件。
漂亮的图形用户界面:

它可以与jdk1.1.8到jdk1.7.0以及其他编译器(jikes、jrockit等)一起使用。
它的特点是一个在线直播演示版本,实际上是完全功能!您只需在页面上放置一个jar文件,就可以看到反编译的源代码,而无需安装任何东西。

yftpprvb

yftpprvb12#

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

qnyhuwrf

qnyhuwrf13#

jd gui真的很好。您可以打开一个jar文件并浏览代码,就好像您正在使用ide一样。好东西。

7fyelxc5

7fyelxc514#

soot是更新java代码的一个选项。至少它还有一个优点,就是最近还在维护。。。
另外,java反编译器是一个具有独立gui和eclipse集成的反编译器。
最后,jdec没有被提及,尽管它没有其他选项那么完美。

6vl6ewon

6vl6ewon15#

procyon包含一个反编译器。是自由/开源软件。

相关问题