jd-gui.exe(java反编译工具)
jd-gui.exe(java反编译工具)是一款非常好用的编程工具软件,界面清爽大方,功能简单好用,轻松玩转,在jd-gui.exe(java反编译工具)里更多不同的效果等你来自由的选择使用,还在等什么赶快来下载吧!
jd gui全称为java decompiler,就是一个java语言的反编译软件,适合于java编程人员使用,它可以对完整的jar文件进行反编译,还可以直接修改相关的代码,以及一些其他的功能。大家使用前注意看下方的使用帮助哦!教你如何解决打不开的问题。
jd-gui使用帮助
第一次运行的时候可能提示“this application requires a Java Runtime Environment 1.8.0”(如下图所示),后面的版本号可能会是1.5.0-1.8.0.
这个大概的意思就是缺失java1.8.0的支持,只要安装一个就可以了,点击“确定”会自动跳转到官网进行安装;或者点击下面的链接进行安装。
什么是反编译
大家都知道,将源代码转换成二进制执行代码的过程叫“编译”,比如将C源代码编译成exe可执行文件;那么把二进制执行代码的过程就叫“反编译”,比如把exe转换为C源代码就叫“反编译”。
由于主流的C的编译器都进行了代码的优化,因此把C编译生成的exe文件反编译成C代码非常困难。但是像Java、.net这样基于虚拟机技术的编程语言则反编译非常容易,Java平台下有Jad、Jode、JD等反编译器,.net平台下则有Reflector等反编译器,反编译质量非常高,甚至和源代码几乎没什么差别。
反编译得到的是源代码吗?
反编译得到的代码是非常接近于源代码,但是或多或少与源代码有一些差异的,比如一些表达式被优化掉了,比如:
下面的源代码:
int i=1+1;
学过《编译原理》的同学知道有“常量优化”这个编译优化算法,因此上边的源代码一般会被优化为:int i=2;
由于在编译过程中已经进行了优化,把“1+1”这个原始的信息丢掉了,因此反编译出来的代码只能是:
int i=2;
可以看到反编译得到的代码和源代码是有区别的。
比如:andriod中
download = (Button)findViewById(R.id.xiaz);
被优化成了download = (Button)findViewById(0x7f070018);
主要功能
一、支持众多java编译器的反编译;
二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;
jd gui使用方法
解压缩后打开软件,直接将jar包拖进去就可以进行编译了。
android反编译说明:
android的apk反编译工具,适合大家一起学,可以把android生成的apk转为java代码,希望对大家有用。
一、更改apk文件的后缀名,如:LianyunHelper3.0.11.apk改成LianyunHelper3.0.11.zip
二、用zip解压缩LianyunHelper3.0.11.zip文件
三、从解压缩的文件夹中取出classes.dex文件并放到dex2jar.bat所在目录
四、运行cmd命令,进入dex2jar.bat所在的目录,输入dex2jar.bat classes.dex即可生成classes.dex.dex2jar.jar文件
五、用jd-gui工具打开classes.dex.dex2jar.jar文件,即可看到源码
六、将AndroidManifest.xml文件放到AXMLPrinter2.jar所在目录,运行cmd命令,进入 AXMLPrinter2.jar所在目录,输入java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt。
常见问题
JD-Core和JD-GUI区别:
JD-Core是一个免费的库,从一个或多个“.class”文件中 重构Java源代码。JD-Core可以用来恢复丢失的源代码,并深究Java运行时类库。支持Java 5的功能:如注释,泛型或枚举 。
JD-GUI 和 JD-eclipse都包括JD-Core。JD-GUI是一个独立的显示“.class” 文件Java源代码的图形用户界面工具。您可以使用JD-GUI浏览和重建源代码的即时访问方法和字段,以代码高度方式来显示反编译过来的代码。
更新日志
v1.6.0更新内容:
1.修正了“.class”表达式的识别错误。
2.修正错误识别“开关枚举”指令。
3.用已知的数字常量(例如Long.MAX_VALUE)替换数值。
4.删除了不必要的“java.lang”前缀。
5.修正了在最后位置上包含三元运算符的try-cacht语句的识别错误。
6.添加了返回的通用变量的转换说明。
7.隐藏匿名类的合成字段。