繁体   English   中英

JD-GUI批量反编译Java文件

[英]Batch decompiling of Java files with JD-GUI

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

我还找到了 JD-GUI。 支持Java的大部分特性,缺点是不能做批处理。 您需要使用程序打开类文件并单击保存。

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

JD-GUI 的命令行反编译是一个非常需要的功能,但尚未实现。 或许您可以同时使用以下解决方法:

  1. jar(或 zip)你想要一起反编译的所有类。
  2. 启动 JD-GUI 并打开您的 jar (zip) 存档。
  3. 使用“文件”-“保存 JAR 源”菜单选项。 它将从您的存档中反编译所有类,并将它们的源代码保存到另一个 zip 文件中。

不幸的是,我还没有看到任何具有命令行支持的好的开源 JD-GUI 替代品,所以我认为上面的内容目前已经很好了。

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

jadretro *.class
jad类

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

看起来您可以使用命令行一次启动带有一大堆库的 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

File > Save all sources 将所有文件保存在主目录中。

JD-GUI 具有将类文件批量导出为.java 文件的能力,压缩在一个jar 文件中。

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

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

  1. 准备 your.jar 文件(包含类)
  2. 输入: jd-cli target.jar -od jar_result -g ALL

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM