如何反编译整个Jar文件?[已关闭]
有谁知道一个自由的反编译器可以反编译整个Jar文件而不是单个类?我对像name$1.class name$2.class name这样的子类有问题.class
有谁知道一个自由的反编译器可以反编译整个Jar文件而不是单个类?我对像name$1.class name$2.class name这样的子类有问题.class
2022年更新:QuiltMC/quiltflower是最新的最先进的Java反编译器:
Quiltflower 是一个现代的通用反编译器,专注于提高代码质量、速度和可用性。
被花是蕨类植物和锻造花的叉子。
更改包括:
- 新的语言功能(尝试使用资源、切换表达式、模式匹配等)
- 更好的控制流生成(回路、试捕捉和开关等)
- 更高的可配置性
- 更好的错误消息
- Javadoc 应用程序
- 多线程
- 优化
- 许多其他杂项功能和修复
Quiltflower最初只是为了与Minecraft的QuiltMC工具链一起使用,它迅速扩展为一个通用的java反编译器,旨在创建尽可能准确和干净的代码。
如果这个名字听起来很熟悉,那是因为Quiltflower是Fernflower的分支,Fernflower是由Stiver开发的(in)著名的反编译器,由Jetbrains维护,并成为Intellij IDEA中的默认反编译器。
Fernflower也很快进入了许多其他工具。在过去的一年中,Quiltflower 增加了对现代字符串串联、代码格式化程序、密封类、模式匹配、切换表达式、资源试用等功能的支持。Quiltflower还关注反编译输出的代码质量,并且非常重视可读性。
请参阅输出示例。
与jbang一起运行良好
https://github.com/QuiltMC/quiltflower/releases/download/1.8.1/quiltflower-1.8.1.jar
艺术
java -jar quiltflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\binary\Boot.class c:\Temp\source\
2009年:JavaDecompiler可以用jar做得很好:从0.2.5开始,所有文件,JAR文件中,都显示出来。
不过,自2009年底以来,JD-Eclipse似乎没有改变(参见变化)。
因此,它与最新的Eclipse(3.8,4.2 +)的集成可能会有问题。
JD-Core得到积极维护。
两者都是(SO用户)Emmanuel Dupuy的出色工作的结果。
2018年:一个更现代的选择,在David Kennedy Araujo的评论中提到:
JetBrains/intellij-community/plugins/java-decompiler/engine
Fernflower是第一个真正适用于Java的分析反编译器,可能还适用于一般的高级编程语言。
java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination> java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\
另请参阅如何反编译为 java 文件 intellij 想法,以获取使用最近的 IntelliJ IDEA 的命令。
2022年更新:Florian Wendelborn在评论中建议
这个效果很好:莱昂纳多·桑托斯的 jdec.app。
首先,值得记住的是,所有Java归档文件(//etc...)基本上都只是花哨.zip
文件,并添加了一些清单和元数据。.jar
.war
其次,为了解决这个问题,我个人使用了几个工具,可以在各个层面上解决这个问题:
.class
jar
上述所有功能的优点是,我不需要持有任何其他使我的工作环境混乱的外部工具。我从其中一个文件中需要的所有内容都可以在我的IDE中处理,也可以与其他文件进行本机比较。