明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

IDEA 自带的反编译工具

Posted on 2024-05-09 14:35  且行且思  阅读(4950)  评论(0编辑  收藏  举报

无论是社区版 IDEA,还是专业版 IDEA,都自带了反编译插件 Java Bytecode Decompiler。

 

反编译的关键是 java-decompiler.jar,位于 IDEA 安装目录下的 /plugins/java-decompiler/lib/ 下。

其中:

[-<option>=<value>]* 中的 * 表示选项可有零个、一个或多个。所有选项可以参看源码。常见选项:

  1. log,日志级别:-log=warn(共有 4 个日志级别:TRACE、INFO、WARN、ERROR,默认是 INFO)。
  2. hes,Hide Empty Super invocation,隐藏空参的 super 调用。默认打开。
  3. hdc,Hide empty Default Constructor,隐藏空参的默认构造器。默认打开。
  4. dgs,Decompile Generic Signatures,反编译泛型签名。默认关闭。
  5. ren, Rename,重命名混淆后的代码。重命名规则:(class|method|field)_<consecutive unique number>。默认关闭。
  6. urc,配合选项 ren 使用,用于自定义重命名规则。
  7. mpm,单个方法最大处理时长,单位是秒。默认是 0,表示没限制。

示例一,反编译 .class 文件:

java -jar java-decompiler.jar -log=warn d:/my.class d:/decompiled

上述命令表示将文件 d:/my.class 进行反编译,生成 my.java,存放在目录 d:/decompiled。

 

示例二,反编译 .jar 文件:

java -jar java-decompiler.jar -log=warn d:/my.jar d:/decompiled

上述命令表示将文件 d:/my.jar 进行反编译,生成一个新的 my.jar,存放在目录 d:/decompiled。

虽然新的 my.jar 也是 .jar 后缀,但它里面的文件是 .java 格式,而非 .class 格式。

直接将新 my.jar 解压即可获得反编译后的源码。

 

示例三,反编译目录:

java -jar java-decompiler.jar -log=warn d:/my d:/decompiled

上述命令表示将目录 d:/my 进行反编译,生成一个新的 my 目录,存放在目录 d:/decompiled。

反编译 .jar 文件时,建议先解压成目录,然后反编译