当前位置: 首页 > 知识库问答 >
问题:

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

戚峻
2023-03-14

我们不允许对书籍、工具、软件库等寻求建议的问题。您可以编辑问题,以便用事实和引文来回答。

有谁知道一个免费的反编译器可以反编译整个Jar文件而不是单个类?我对name$1这样的子类有问题。类名$2。类名。班

共有3个答案

萧奇
2023-03-14

如果您碰巧同时拥有bash shell和jad:

JAR=(your jar file name)
unzip -d $JAR.tmp $JAR
pushd $JAR.tmp
for f in `find . -name '*.class'`; do
    jad -d $(dirname $f) -s java -lnc $f
done
popd

我可能有点,有点不同意,但它应该或多或少像广告上说的那样起作用。您应该得到$JAR。包含反编译文件的tmp。

祁鸿晖
2023-03-14

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

其次,为了解决这个问题,我个人使用了几种在各个层面处理这个问题的工具:

  • Jad Jadclipse在IDE中进行反编译时。类文件
  • WinRAR是我最喜欢的压缩工具,它本机支持Java归档(同样,请参见第一段)
  • Beyond Compare,我最喜欢的diff工具,如果配置正确,可以在任何存档文件之间进行动态比较,包括jar。非常值得一试

上述所有工具的优点是,我不需要持有任何其他会扰乱我工作环境的外部工具。我从这些文件中需要的任何东西都可以在IDE中处理,或者与其他文件本机不同。

督宏旷
2023-03-14

2022年更新:QuiltMC/quiltcloud是最新最先进的Java反编译程序:

Quiltflower是一种现代的通用反编译器,致力于提高代码质量、速度和可用性<羽绒花是一种蕨类植物和假花的叉。

变化包括:

  • 新的语言功能(尝试使用资源、切换表达式、模式匹配等)

Quiltflower最初只打算与带有Minecraft的QuiltMC工具链一起使用,它迅速扩展为一个通用java反编译器,旨在创建尽可能准确和干净的代码。

如果这个名字听起来很熟悉,那是因为Quiltflower是Fernflower的一个分支,Fernflower是著名的反编译器,由Stiver开发,Jetbrains维护,并成为Intellij IDEA中的默认反编译器

请参见输出示例。

运行良好与jang

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文件中的所有文件都会显示出来。

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

不过,自2009年末以来,JD Eclipse似乎没有发生任何变化(请参见变化)<因此,它与最新的Eclipse(3.8、4.2)的集成可能会有问题。

JD-Core正在积极维护。

两者都是(SO用户)Emmanuel Dupuy出色工作的结果。

2018年:David Kennedy Araujo评论中提到的更现代的选择:

JetBrains/intellij社区/插件/java反编译器/引擎

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年更新:FlorianWendelborn在评论中建议

这个效果很好:莱昂纳多·桑托斯的jdec.app。

 类似资料:
  • 问题内容: 我正在使用Java开发应用程序,但是我不会发布代码。问题是,我测试了其中的一个jar反编译器,它几乎可以完美地从我的jar文件中获取代码!我的问题是如何在不提取代码的情况下分发jar文件? 问题答案: 由于Java在编译过程中保留了大多数“元数据”(允许动态加载和反射),因此直接编译(不仅反汇编)已编译的类文件是一种直接的方法。这就是为什么恢复的代码与原始代码非常相似的原因。 虽然不是

  • 问题内容: 我可以使用什么程序反编译类文件?我实际上会得到Java代码,还是仅仅是JVM汇编代码? 关于此站点上的Java性能问题,我经常看到“反编译” Java类文件以了解编译器如何优化某些东西的人们的回答。 问题答案: 有一些反编译器…快速搜索结果: Procyon: open-source (Apache 2) and actively developed Krakatau: open-so

  • 我正在反编译一个谷歌chrome扩展,因为它看起来很可疑。扩展是用javascript编写的,但有人能告诉我像这样的符号到底是什么,以及如何将它们“翻译”回正常的字符串吗? “\x63\x68\x61\x72\x43\x6F\x64\x65” 完整文件的Jsbin:http://Jsbin.com/onevira/1/

  • 我想创建一个程序,可以编译一个.java文件到一个.class文件,就像在这个网站上做的:创新网站 null

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 我正在尝试制作一个minecraft客户端,但当我反编译它时,它说 ==在JAVA代码中发现错误== 初始客户端重新编译失败,请更正源代码,然后运行updatemd5按任意键继续。 我已经安装了java jdk,但是我还需要做什么

  • IDEA有一个很棒的内置功能-反编译器。它工作得很好。我可以复制源代码,但我找不到将所有反编译的java类提取到java文件的选项 这个项目有很多java类和包,所以我很想手动复制它 有人知道如何提取到java源文件吗。谢谢