有人知道可以反编译整个Jar文件而不是单个类的免费反编译器吗?我有一个问题的子类,如名称$1.类名称$2.类名称
当前回答
喜欢的东西:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
也许?
其他回答
喜欢的东西:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
也许?
2022年更新:QuiltMC/quiltflower是最新最先进的Java反编译器:
Quiltflower是一个现代的通用反编译器,专注于提高代码质量、速度和可用性。 Quiltflower是Fernflower和Forgeflower的分叉。
Changes include: New language features (Try with resources, switch expressions, pattern matching, and more) Better control flow generation (loops, try-catch, and switch, etc.) More configurability Better error messages Javadoc application Multithreading Optimization Many other miscellaneous features and fixes Originally intended just for use with the QuiltMC toolchain with Minecraft, Quiltflower quickly expanded to be a general purpose java decompiler aiming to create code that is as accurate and clean as possible. If the name sounds familiar it's because Quiltflower is a fork of Fernflower, the (in)famous decompiler that was developed by Stiver, maintained by Jetbrains, and became the default decompiler in Intellij IDEA. Fernflower also quickly found its way into many other tools. Over the past year, Quiltflower has added support for features such as modern string concatenation, a code formatter, sealed classes, pattern matching, switch expressions, try-with-resources, and more. Quiltflower also focuses on the code quality of the decompiled output, and takes readability very seriously.
请参阅输出示例。
运行jbang很好 https://github.com/QuiltMC/quiltflower/releases/download/1.8.1/quiltflower-1.8.1.jar
Or:
jar quiltflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\binary\Boot.class
2009: JavaDecompiler可以很好地处理jar:从0.2.5开始,将显示jar文件中的所有文件。
另见问题“我如何”反编译“Java类文件?”。
不过,JD-Eclipse自2009年底以来似乎没有变化(参见变化)。 因此,它与最新的Eclipse(3.8, 4.2+)的集成可能存在问题。
积极维护JD-Core。
两者都是(SO用户)Emmanuel Dupuy出色工作的结果。
2018年:一个更现代的选择,大卫·肯尼迪·阿劳霍在评论中提到:
JetBrains / intellij-community /插件/ java-decompiler /引擎
Fernflower是Java的第一个实际工作的分析反编译器,可能对于一般的高级编程语言也是如此。 Java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination> .jar] [-<option>=<value> java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\ java \rt.jar c:\Temp\source\
请参见如何反编译到java文件intellij idea的命令与最近的intellij idea。
2022年更新:弗洛里安·温德尔伯恩在评论中建议
这个很好用:jdec。莱昂纳多·桑托斯的app。
首先,值得记住的是,所有Java归档文件(.jar/.war/等等…)基本上都是花哨的.zip文件,并添加了一些清单和元数据。
其次,为了解决这个问题,我个人使用了几个可以在各个层面处理这个问题的工具:
Jad + Jadclipse,在IDE中编译。class文件 WinRAR是我最喜欢的压缩工具,它支持Java存档(请参见第一段)。 Beyond Compare是我最喜欢的差异工具,如果配置正确,它可以在任何归档文件(包括jar)之间进行动态比较。值得一试。
前面提到的优点是,我不需要持有任何其他外部工具,使我的工作环境混乱。我从这些文件中需要的任何东西都可以在我的IDE中处理,或者与其他文件本地进行区别。
我使用一个名为(令人沮丧的)JD: Java反编译器。
我发现在处理为Java 5或更高版本编译的类时,它比大多数反编译器都要好。不幸的是,在JAD通常会成功的地方,它仍然会有一些问题。
注意:此解决方案仅适用于Mac和*nix用户。
我也试过找杰德,但一无所获。我的快速解决方案是下载包含jad的MacJad。一旦你下载了它,你可以在[where-you-download - MacJAD]/MacJAD/Contents/Resources/jad中找到jad。
推荐文章
- 导致java.lang.VerifyError错误的原因
- 如何在Java中监控计算机的CPU、内存和磁盘使用情况?
- 如何设置超时在改造库?
- java lambda可以有一个以上的参数吗?
- HashMap -获取第一个键值
- 使用Jackson将JSON字符串转换为漂亮的打印JSON输出
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- Javadoc @see或{@link}?
- 在准备语句中使用“like”通配符
- Android Eclipse -无法找到*.apk
- javac和Eclipse编译器之间的区别是什么?
- 工厂模式和策略模式之间的区别是什么?
- 在Java中使用正则表达式提取值
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Intellij IDEA Java类在保存时不能自动编译