Java反编译工具CFR,FernFlower,JD-Core,jad,Procyon-Decompiler 对比分析结果

常见Java反编译工具CFR,FernFlower,Jd-core,jad,Procyon-Decompiler 经本人对比多个不同Class反编译后跟源码对比分析结果如下(测试环境:jdk1.8.0.202)

jdk8及以上的环境推荐使用:

1,Procyon-Decompiler(目前已经可以完美支持到JDK9+),反编译出来的源码几乎完全原汁原味,不会有太多的变化。包括while ,for 循环变量定义等都比较符合本人的编码风格。

2,jd-gui-windows-1.6.3(基于jd-core核心的图形化程序,完美支持到JDK8+),反编译出来的源码基本也是原汁原味,优点,正常情况可以正确匹配源码的代码行号。比如源码中36行  “while(rs.next()){ ”,那么基本反编译结果出来也会匹配显示36行号。 缺点是编译出来的代码存在代码不完全一致的情况发生。

比如16-37行源码如下:

Jd-gui.exe反编译出来为:

(从上面的截图我们可以看出来图中jd-gui反编译的代码中conn、 pst、rs 等变量的定义全部丢失。程序完全无法编译)

Procyon-Decompiler则几乎完全一样,但行号不会匹配,copy编译代码直接可以使用无任何错误

CFR结果如下,改动较多(单独在上面定义了rs,pst,然后在下面再初始化):

FernFlower则直接将源码中的while循环反编译成了for循环

jad基本就不用考虑了。很久不更新了,最新版本1.5.8g为2006年的。很多语法都不支持了,包括简单的

像下面这样的Servlet注解标识都解析不出来。

@WebServlet("/Querydata.do")  

更不用说JDK 1.7引入的字符串Switch、泛型接口改进等新功能,1.8增加的lambda表达式、方法传递、多重注解等新特性的支持。

精力有限,其它的没试。综合起来哪种好用自己定夺。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值