Java反编译工具

在探寻Cglib动态代理实现原理时,因为使用jad反编译cglib动态生成的代理对象非常不容易阅读,循环语句被替换成了 goto 语句,十分的生涩难以理解,几经周折,找到两款能够解决眼下难题的软件:procyon 和 cfr。

网上部分同行推介使用 procyon,因为相比于 cfr 它对于 Java7 的语法糖(例如:switch 语句,cfr 反编译出来包含 goto 语句)支持更好。

写下这边博客是使用的 cfr (0.140) 和 procyon (0.5.34) ,这两个版本对于 switch 的支持都比较良好。

对于当前Cglib动态代理生成代理对象的源码反编译 cfr 生成的代码更加简练。
补1:在反编译 javassist 动态代理生成的代理类时,cfr 将 static 方法块的 throws ClassNotFoundException 省略了,procyon 和 jad 都能够反编译出。

CFR

http://www.benf.org/other/cfr/
下载链接:https://www.benf.org/other/cfr/cfr-0.140.jar

[usage]
java -jar cfr-0.140.jar --help

[example]
java -jar cfr-0.140.jar <Target>.class --outputdir .

procyon

https://bitbucket.org/mstrobel/procyon
下载链接:https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.34.jar

[usage]
java -jar procyon-decompiler-0.5.34.jar --help

[example]
java -jar procyon-decompiler-0.5.34.jar <Target>.class -o .	//反编译class文件,并储存到当前目录(根据包名生成目录结构)

JAD

https://varaneckas.com/jad/
下载链接:https://varaneckas.com/jad/jad158g.win.zip

[usage]
jad

[example]
jad <Target>.class -o .

XJad

http://www.blogjava.net/96sd2/archive/2006/06/28/55500.html
http://www.blogjava.net/96sd2/archive/2006/02/16/31077.html

下载链接:http://www.blogjava.net/Files/96sd2/XJad2.2.rar

可视化界面,内置 Jad 1.5.8,自动生成 *.java 文件。

Java Decompiler

http://java-decompiler.github.io/

JD-GUI

下载链接:
https://github.com/java-decompiler/jd-gui/releases/download/v1.4.1/jd-gui-1.4.1.jar
https://github.com/java-decompiler/jd-gui/releases/download/v1.4.1/jd-gui-windows-1.4.1.zip

JD-Eclipse

下载链接:https://github.com/java-decompiler/jd-eclipse/releases/download/v1.0.0/jd-eclipse-site-1.0.0-RC2.zip

源码&历史版本:https://github.com/java-decompiler/jd-eclipse

JD-IntelliJ

发布资源:http://plugins.jetbrains.com/plugin/7100
源码&历史版本:https://github.com/bric3/jd-intellij

Java编译

Jar包依赖:

set CLASSPATH=%CLASSPATH%;<dir>:/root/subfolder/xx.jar;....

同时编译多个class文件:

javac -d ./ ./*.java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值