转:介绍几个著名的实用的Java反编译工具,提供下载
from :http://www.glorze.com/219.html
反编译
众所周知,我们将源代码进行编译,生成可执行的程序或者容器发布包,这个将代码转换的过程就是编译的过程,而反编译就是将这些已经执行好的程序转换成程序人员可以阅读的源代码的过程就是反编译的过程。由于像Java这类基于虚拟机技术的高级语言反编译相对容易,所以衍生出很多不错的反编译软件,下面老四为大家介绍几款,并希望您根据您的自己喜好选择性使用,当然是在你需要的时候,而且软件排名分先后,分先后。。。文末提供合集下载,请自助获取。
反编译的基本原理:基于虚拟机的高级语言,几乎都采用了字节码的二进制,所以通过二进制的字节码转化为编译原理中的抽象语法,再配合反编译器就可以将抽象语法转化为代码。更牛逼的是基于这些原理还能实现各个平台的语言之间的代码转换。
PS:再牛逼的反编译也不可能做到跟源代码一模一样,多少都会有差异,不要在意这些细节。。。
1.JD-GUI
包括图形化界面,eclipse插件以及idea插件,采用C++开发,支持苹果Mac、微软windows以及Linux多个平台,可以反编译class文件、jar包等。用的人比较多。但是它已经好久没有更新了,jdk7的代码很多语法都不支持,就别提已经大热的jdk8了,在我说完这句话的时候,去oracle官网一看,jdk10都发布惹。。。不过凭借着便捷与图形化还是再加上时间的沉淀,老四还是给它排在第一位。对了,JD-GUI的核心其实是听过jd-core来完成的。
eclipse的插件安装方法也是常规操作,jd-gui官网下载eclipse插件,解压放到你的eclipse安装目录就好了。然后在你的eclipse中用jd形式打开class文件就可以了,但是貌似jd已经不支持java 8的反编译了,在eclipse中直接报错,使用的时候请注意。因为老四目前没有安装idea,所以不介绍idea的jd-gui插件了。

2.CFR-非常优秀并且支持java8
这款201313年横空出世,至今都保持更新的反编译工具,因为其持续更新承接java的变化而且反编译效果非常良好,越来越来被人们更多的使用,根据cfr官网上的介绍,CFR支持反编译当今最新的Java特性--Java 8,例如lambda表达式以及java7中的switch支持String类型等,但是人家最要命也最装逼的是cfr完全是用Java 6编写的。。。
cfr没有图形化工具,需要在命令行中使用,首先的你的系统要配置java的环境,然后进入到cfr的jar包目录,运行类似如下的命令。

你一定觉得很不方便,对不对?一定在想是否存在便捷一点的工具,对不对?其实工具也就是一个脚本而已,也没有方便太多,这里放出一个脚本文件,至于用不用您自己参考。
|
1
2
3
4
|
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\cfr.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
|
3.Jadx-开源,快速并且支持安卓
这又是一款相当强大的反编译神器了,现在已经在全球最大的同性交友社区GitHub上开源了,图形化的界面以及支持拖拽方式的操作可以大大满足你日常的需要了,如果你使用Gradle(老四没用过,老四用Maven),它也支持导出Gradle工程,而且它支持诸如apk、dex、jar、class、zip等多种文件格式。当前该项目依然在不断更新当中,相信也会越来越好。如果你喜欢折腾,那就可以去交友社区下载源码自己编译生成工具为自己所用,如果你不愿意可以去release栏下载官方最新的zip包,windows下直接运行jadx-gui.bat就可以了。

当然,由于项目比较新,当前不断更新的过程中你可能会遇到很多的问题,这个时候你需要经常关注源代码,查看软件运行日志以及官方FAQ来解决问题。
4.Procyon-可以媲美cfr的有款Java反编译工具
与cfr一样,不像JD-GUI那样已经万年不更新了,Procyon同样支持Jdk1.8的类编译,譬如java8的很多新特性他都支持并且在一下几方面的反编译甚至已经超越了cfr,Procyon反编译后不仅输出java源码,还能输出原始字节码等。但是和cfr一样
- 方法传递
- Lambda表达式
- 接口规范
- 匿名内部类
- 注解
- 枚举
- switch(String)
下面来看看Procyon作者是怎么描述他的亲儿子的:
作为一名在.NET和Java平台之间分配时间的开发人员,我对Java生态系统中反编译器选择不足感到惊讶和沮丧。Jad(不再维护,封闭源代码)和JD-GUI(GPL3)都是相当不错的选择,但前者不支持Java 5+语言特性,后者倾向于禁用我的LINQ / DLR树编译器发出的代码。为了解决这个问题,我最近开始自己开发一个反编译器,受ILSpy和Mono.Cecil的启发(并且大量借鉴)。尽管仍然不完整,但我自己的测试似乎表明,Procyon反编译器通常可以对付其他领先的Java反编译器。但是,有一些已知的问题:用Eclipse编译的类(或其他任何东西javac)可能会产生不太理想的结果,特别是对于像基于String的switch语句这样的结构。到目前为止,我主要测试了使用Javac编译的类。随着时间的推移,我将努力改进对其他编译器的支持。不幸的是,我还没有像JD-GUI一样的GUI前端(但第三方前端存在 - 见下文!)。但是,我确实为支持ANSI / xterm-256的控制台提供颜色编码输出。我还提供三种输出模式:1.Java(默认)2.原始字节码(类似于javap,但更漂亮;运行-r)3.字节码AST(中间表示;运行-b,添加-u未优化)
Procyon的用法几乎同cfr一样,不在赘述。

5.其实还有fernflower、Jad等等反编译工具,但是因为Jad就如rocyon作者所言Jad已经不再维护了,fernflower在老四所写的另一篇文章《你可能不知道的两个逆天的Java反编译在线网站》的在线网址中提供了fernflower反编译的输出,您可以在那里体验,另外fernflower有两个不错的优点:
- 大部分能反编译得到的java文件可以直接使用
- 能给你反编译的就会给你反编译,不能的不鸟你
就以上这些,老四都已经打包好了,需要的文末自助下载。如果发现更好的工具会在本页面更新,请您随时留意。
更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请赞助盒烟钱,点我去赞助。抱拳。
转:介绍几个著名的实用的Java反编译工具,提供下载的更多相关文章
- Java反编译工具Luyten介绍
比较精准的一个java反编译工具,笔者有时候用jd-gui反编译不出来的class用luyten都可以反编译出来. 官方网站:https://github.com/deathmarine/Luyten ...
- Android反编译工具介绍与简单实用方法
Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar class ...
- Java反编译插件JODE介绍
编程入门级博客:(大牛请直接忽略) 1.编程没有捷径,只有多谢代码.手动敲代码,才是最好的学习方法.写给自己!(配置Eclipse General选项:Appearance:Code Assist:) ...
- IL反编译的实用工具
初识Ildasm.exe——IL反编译的实用工具 Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello Wor ...
- 【原创】Java批量反编译利器(jd-gui)介绍
Java反编译利器(jd-gui)介绍 当要做白盒测试或安全测试时,我们需要借助工具扫描被测代码,相信大家都遇到过没有源代码,而需要反编译的情形吧,也可能大家用过jad工具,我这里介绍下方便的工具jd ...
- 转载文章----初识Ildasm.exe——IL反编译的实用工具
转载地址http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662307.html Ildasm.exe 概要:(路径:C:\Program ...
- 初识Ildasm.exe——IL反编译的实用工具
原文地址:http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662307.html Ildasm.exe 概要: 一.前言: 微软的IL反 ...
- [No000013B]初识Ildasm.exe——IL反编译的实用工具
Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello World 的 exe 可执行文件)抽取出 IL 代码,并且 ...
- IL反编译的实用工具Ildasm.exe
初识Ildasm.exe——IL反编译的实用工具 https://www.cnblogs.com/yangmingming/archive/2010/02/03/1662307.html 学 ...
随机推荐
- 转:Linux中tomcat服务成功发布但局域网浏览器无法访问
转自:http://blog.csdn.net/mooncom/article/details/53168143 昨天,我在搭建Linux中服务器环境时,碰见一个问题,这里和大家分享一下. 问题描述: ...
- 几个 h5页面效果和 自动 app 生成网站 微页
用MAKA.易企秀.兔展就够了,MAKA和兔展用户体验好些,易企秀广告有点丑,不过模板多一些. 至于交互类工具,iH5.Mugeda.Epub360这三个里面选一个就行. -------------- ...
- Android学习笔记(3)----手机调试[OFFLINE]的解决方式
问题描述 今天用Android Studio开发了一个简单的调用摄像头的App,结果想调试的时候发现选择调试设备的对话框中,手机名称后面总是跟着一个[OFFLINE]的标识,只能选择启动AVD来进行调 ...
- java正则表达式校验移动电话、固话、邮编的校验
package com.tmall.epp.web.module.util; import java.util.regex.Pattern; /** * 移动电话.固话.邮编的校验 * @since ...
- HTML简单框架网页制作 吴昊
- December 11th 2016 Week 51st Sunday
If a thing is worth doing it is worth doing well. 如果事情值得做,那就做好. If it is worth doing, then it is wor ...
- HTTP协议图--HTTP 报文首部之首部字段(重点分析)
1.首部字段概述 先来回顾一下首部字段在报文的位置,HTTP 报文包含报文首部和报文主体,报文首部包含请求行(或状态行)和首部字段. 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富.首部字 ...
- C#互操作
一.引言 “为什么我们需要掌握互操作技术的呢?” 对于这个问题的解释就是——掌握了.NET平台下的互操作性技术可以帮助我们在.NET中调用非托管的dll和COM组件. ..NET 平台下提供了3种互操 ...
- 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft
前言 随着 .NET 平台的出现,报表相关的开发控件随之出现,目前已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的4款 .NET报表控件,给所有报表开发人员在做产品选型时一 ...
- 高可用web框架
nginx nginx简介 Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apa ...