如何反编译整个Jar文件?[已关闭]

2022-09-02 02:03:30

有谁知道一个自由的反编译器可以反编译整个Jar文件而不是单个类?我对像name$1.class name$2.class name这样的子类有问题.class


答案 1

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文件中,都显示出来。

http://java.decompiler.free.fr/sites/default/screenshots/screenshot1.png

另请参阅问题“如何”反编译“Java 类文件?

不过,自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


答案 2

首先,值得记住的是,所有Java归档文件(//etc...)基本上都只是花哨.zip文件,并添加了一些清单和元数据。.jar.war

其次,为了解决这个问题,我个人使用了几个工具,可以在各个层面上解决这个问题:

  • Jad + Jadclipse 在 IDE 中用于反编译文件时.class
  • WinRAR,我最喜欢的压缩工具本身支持Java存档(再次,请参阅第一段)。
  • Beyond Compare是我最喜欢的比较工具,如果配置正确,可以在任何存档文件(包括s)之间进行动态比较。非常值得一试。jar

上述所有功能的优点是,我不需要持有任何其他使我的工作环境混乱的外部工具。我从其中一个文件中需要的所有内容都可以在我的IDE中处理,也可以与其他文件进行本机比较。


推荐