网站地址:www.jdecode.net
推荐理由:功能强大、成功率高、错误少、安全、免费、国产
1、功能强大
- 主流版本支持:支持 Java 5 ~ 11主流版本,经过大规模测试验证。其他版本也可以使用,但反编译成功率和代码正确率会有些下降
- 全类型支持:Class, Interface, Enum, Annotation, Inner Type, Anonymous Type
- 全方法支持:normal, static, constructor, static block, lambda
- 全注解支持:Declaration, Type, Method, Annotation Type parameter, Type argument, Parameter, Local variable
亮点:最全面的注解支持 ,示例代码演示各种类型注解
2、反编成功率高
jdecode对 Java 5-11 主流版本的反编译成功率平均在 90%以上。常见的其他工具如JD、JAD 一般反编译成功率在 70~80%左右。还有一点,jdecode 很少完全崩溃,很少出现某些工具报“INTERNAL ERROR” 进而不能反编译出任何内容的情况。
注:反编译成功率与 class 文件的复杂度、大小有很大关系,从目前来看,包括国外的工具,还没有任何一个反编译工具能够 100%成功,jdecode 在反编译成功率上明显领先的,但在使用中也有反编译失败的情况。
注:此处成功率数据来源于对10万余个class的对比测试,仅供参考
3、代码错误少
目前来看,没有反编译工具能保证反编译出的代码 100% 无错误 且 与源class逻辑完全一致。
这里面原因非常多和复杂,主要原因有:
- JAVA 和 JVM 差异导致错误,有时正确反编译出来就是错的,如static块压缩的变量冲突
- JAVA 语法糖和 JDK 编译优化太复杂,极少数场景无法正确还原
- JDK 编译擦除,极少数场景无法正确处理变量和类型
错误有时候无法避免,只要错的有理有据,那便是极好的。
错误不可怕,只要容易改对就行。jdecode 极力避免表面正确,实际和源 class 逻辑不符的情况。
注:有些工具如 JD 做了优化,有时候很不错,有时候就优化出问题,实际逻辑已经和源码不一样了,关键还看不出错误,这可就太坑了。
经过综合考虑,jdecode 尽量不做多余的优化,保障逻辑的一致 比 表面上的代码正确更重要。
举例说明:JD 对 数组初始化的代码优化导致逻辑错误。
jdecode反编译的源码,虽然看起来不太精简,但是逻辑是正确的。因为 class 中的 JVM 指令原本就是这样的。 jdecode 首先保证正确性,这种方式更好。
3、安全
jdecode 采用多种措施保证用户的数据安全:
- jdecode 可以不注册使用,不收集、不跟踪、不保留任何访问信息
- jdecode 绝不查看、绝不保留用户上传文件,文件24小时内自动删除
- class 文件的上传、java 文件的下载都进行了足够位数的非对称算法加密
- 网站整体使用 https 进行通信加密
4、感谢
感谢各位高手兄耐心看完此文!!!
反编译工具开发很有难度,作为学习 Java 20多年的老开发人员,仍感到知识有限、能力不足,再加上业余时间有限,这项目也是数次启动又停下。jdecode 2009年就开了头,2016年又做了一点,2020年因疫情隔离时天天在家里,反而业余时间多,这个工具才算完成。
又经过数年测试和修改bug,期间N次遇到感觉搞不定的问题,N次感觉复杂度和工作量超预期、严重超预期,但最终还是都搞定了,完成了!这个工具虽然不大,但真是高难度!需要对 Java、JVM 深入了解才行,值得叉腰牛气三秒钟!
经过对比测试发现还不错,比我常用的反编译工具好用,所以就简单搭了个网站让大家也用用,希望对大家也有一点点帮助!
欢迎各位高手使用,欢迎提出任何问题、意见或建议,谢谢!
(邮件:jdecode@163.com QQ:3056013637)
欢迎进行赞助、合作,现在每年还需要一些服务器之类费用
附录:其他同类工具
在线工具 www.decompiler.com、www.javadecompilers.com
离线工具 JD-Core、JD-GUI、JAD、CFR、FernFlower、Procyon-Decompiler等等