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表达式、方法传递、多重注解等新特性的支持。
精力有限,其它的没试。综合起来哪种好用自己定夺。
本文来自博客园,作者:IT情深,转载请注明原文链接:https://www.cnblogs.com/wh445306/p/16751931.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?