Skip to content

一个基于 Vineflower 引擎的多线程 Java 批量反编译工具,支持快速处理大量的 class 文件和 JAR 文件。

License

Notifications You must be signed in to change notification settings

h3h3qaq/JavaDecompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Java Decompiler

一个基于 Vineflower 引擎的多线程 Java 批量反编译工具,支持快速处理大量的 class 文件和 JAR 文件。

功能特点

  • 多线程处理:利用多线程处理反编译以提高效率
  • 灵活配置:支持配置 Vineflower 反编译引擎的高级选项
  • 批量处理:一次性处理成千上万的类文件
  • 自动清理:可选择反编译成功后删除原始 class 文件

使用方法

在 test 目录下有使用样例的代码

        DecompilerConfig config = new DecompilerConfig.Builder()
                .inputPath("/xxxx/code")
                .outputPath("/xxxx/output")
                .threadCount(8)
                .deleteClassFiles(true)
                .build();
        OptionsBuilder optionsBuilder = new OptionsBuilder();
        Map<String, Object> vineflowerOptions = optionsBuilder.build();
        Decompiler decompiler = new Decompiler(config, vineflowerOptions);
        long startTime = System.currentTimeMillis();
        decompiler.execute();

        long endTime = System.currentTimeMillis();
        double totalTime = (endTime - startTime) / 1000.0;
        logger.info("总耗时: " + totalTime + " 秒");

测试

混合场景下(JAR 和 class 放在一个目录中)共 43553 个文件,开启 8 线程用了 391.875 秒

2025-04-27 22:26:57.191 INFO  文件总数:43552
2025-04-27 22:26:57.191 INFO  已成功反编译:43552
2025-04-27 22:26:57.191 INFO  失败:0
2025-04-27 22:26:57.192 INFO  总耗时: 391.875 秒

存在的问题

在 vineflower 反编译 class 文件的时候会有下面的情况:

xxx_1.class -> xxx.java

会丢失下划线以及数字,这个 bug 目前还没有修复,如果有师傅们有解决方案可以提交 PR

一起完善

作者只是为了在学习和研究中方便操作才写了这个工具,如果存在 bug 和不合理的地方欢迎指正

About

一个基于 Vineflower 引擎的多线程 Java 批量反编译工具,支持快速处理大量的 class 文件和 JAR 文件。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages