jd-gui是常用的java反编译器;
由于java是跨平台的,所以jd-gui提供了多个系统的支持;
两种运行方式:1、以独立的程序的方式运行;2、以Eclipse插件的方式运行;
什么是反编译器?
将源代码转换成二进制执行代码的过程叫“编译”,比如将C源代码编译成exe可执行文件;那么把二进制执行代码转换成源代码的过程就叫“反编译”,比如把exe转换为C源代码就叫“反编译”。
反编译得到的是源代码吗?
反编译得到的代码是非常接近于源代码,但是或多或少与源代码有一些差异的,比如一些表达式被优化掉了。
程序可以反编译岂不是很不安全?
可以采用代码混淆等技术来加大反编译的难度和降低反编译代码的可读性,但是完全避免反编译是不可能的。
反编译器的原理是什么?
由于Java、.net这样的基于虚拟机技术的语言都是采用了ByteCode的二进制结构,因此很容易将ByteCode转化为“抽象语法树”(简称AST,《编译原理》这门课中的概念),然后采用反编译器就可以将AST转换为代码了。
如何使用反编译?
打开jd-gui,将预览的.class文件拖入窗口转换成.java文件,再点击Fi