我应该使用什么程序来反编译一个class文件?我会得到Java代码,还是只有JVM汇编代码?
在这个网站上关于Java性能问题的回答中,我经常看到人们从"class"文件中"反编译"出来以查看编译器如何优化某些内容。
我应该使用什么程序来反编译一个class文件?我会得到Java代码,还是只有JVM汇编代码?
在这个网站上关于Java性能问题的回答中,我经常看到人们从"class"文件中"反编译"出来以查看编译器如何优化某些内容。
大多数针对Java的反编译器都基于JAD。这是一个很好的工具,但不幸的是它已经有一段时间没有更新了,并且不能很好地处理Java 1.5+类。我还没有看到任何可以正确处理1.5+类的工具。
迄今为止列出的所有JAD链接似乎都失效了,所以我找到了这个网站。对于Linux来说很好用!在Ubuntu 11.10上,由于某种原因,我不得不下载静态版本。
JAD是一款工作简单的反编译软件。
如果您只想查看方法,可以使用javap。
JAD对我来说不起作用(Ubuntu 11.10问题),所以我已经转向并停留在JODO。至少它有开放的Java源代码,并且能够正确反编译我的.class文件。
我建议先查看'branches/generic'分支。主干不稳定。
对于OSX,我建议使用:jarzilla或JD-GUI
它们都允许您查看jar、war等文件内容并反编译其中的任何类文件。
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
使用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源代码。