我正在寻找一个批量反编译 Java 类的程序。我找到了JAD,但它不支持Java的一些新特性,而且这个程序的好处是它可以从命令行执行并自动生成一个*.java文件。
我还找到了 JD-GUI。它支持Java的大部分特性,但缺点是不能做批处理。您需要使用程序打开类文件,然后单击保存。
有没有办法让 JD-GUI 像 JAD 一样做批处理?
我正在寻找一个批量反编译 Java 类的程序。我找到了JAD,但它不支持Java的一些新特性,而且这个程序的好处是它可以从命令行执行并自动生成一个*.java文件。
我还找到了 JD-GUI。它支持Java的大部分特性,但缺点是不能做批处理。您需要使用程序打开类文件,然后单击保存。
有没有办法让 JD-GUI 像 JAD 一样做批处理?
JD-GUI 的命令行反编译是一个非常需要的功能,但尚未实现。也许您可以同时使用以下解决方法:
不幸的是,我还没有看到任何具有命令行支持的优秀开源 JD-GUI 替代方案,所以我认为上述内容目前已经很好了。
我可以推荐将 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+ 类)。
看起来您可以使用命令行一次启动带有一大堆库的 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 )。
jd-cli target.jar -od jar_result -g ALL
你会得到一个压缩的java源代码文件。