使用JD-GUI批量反编译Java文件

时间:2009-09-06 00:53:13

标签: java decompiling

我正在寻找一个批量反编译Java类的程序。我找到了JAD,但它不支持Java的一些新功能,这个程序的好处是它可以从命令行执行并自动生成* .java文件。

我还找到了JD-GUI。它支持Java的大多数功能,但缺点是它不能进行批处理。您需要使用该程序打开该类文件,然后单击“保存”。

有没有办法让JD-GUI像JAD一样进行批量处理?

4 个答案:

答案 0 :(得分:50)

JD-GUI的命令行反编译是highly requested功能,但尚未实现。也许您可以在此期间使用以下解决方法:

  1. jar(或zip)你想要反编译的所有类。
  2. 启动JD-GUI并打开jar(zip)存档。
  3. 使用“文件” - “保存JAR源”菜单选项。它将反编译归档中的所有类,并将其源保存到另一个zip文件中。
  4. 遗憾的是,我没有看到任何带有命令行支持的开源JD-GUI替代方案,所以我认为上面的内容与现在一样好。

答案 1 :(得分:3)

我可以推荐将Jad与JadRetro结合使用 - 当然,它不能使Jad生成java泛型,但反编译源(包括Java 1.5+类)在功能上等同于原始(并返回)在大多数情况下可编辑) 它的使用很简单:

jadretro * .class
jad .class

注意:
1. JadRetro可以像批处理模式一样使用:jadretro ...
2.如果您使用的是jad v1.5.8e(而不是最新的v1.5.8g),则应将“-c”选项传递给jadretro(否则jad将拒绝反编译Java 1.5+类)。

答案 2 :(得分:1)

看起来您可以使用命令行一次启动带有大量库的GUI,然后使用CTRL + ALT + s / CTRL + w快速保存/关闭每个选项卡。它在反编译一堆依赖项时不是自动化的,但是可以容忍的。 (请注意,“^”只是在Windows中执行多行命令的技巧。)

"c:\jd-gui-0.3.6.windows\jd-gui.exe" ^
 c:\my-libs\lib-a.jar ^
 c:\my-libs\lib-b.jar ^
 c:\my-libs\lib-c.jar ^
 c:\my-libs\lib-d.jar ^
 c:\my-libs\lib-e.jar

答案 3 :(得分:0)

JD-GUI 能够将类文件批量导出为 .java 文件,压缩为 jar 文件。

不过这个功能不是命令行控制的,而是鼠标点击,不稳定,有时会卡死。

您可以使用 jd-cli ( https://github.com/kwart/jd-cli/releases/tag/jd-cli-1.2.0 )。

  1. 准备您的 .jar 文件(包含类)
  2. 输入:foreach

你会得到一个压缩的java源代码文件。