JD-GUI
|
软件语言:
|
软件授权:暂不知晓
|
|
适用系统:Windows
|
创建时间:2020-12-14 |
|
软件厂商/开发者信息: -
|
|
资讯 更多
- JD-GUI v0.3.6 官方版更新 2020-08-05
简介
基础知识
什么是反编译器
大家都知道,将源代码转换成二进制执行代码的过程叫“编译”,比如将 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、.net 这样的基于虚拟机技术的语言都是采用了 ByteCode 的二进制结构,因此很容易将 ByteCode 转化为“抽象语法树”(简称 AST,《编译原理》这门课中的概念),然后采用反编译器就可以将 AST 转换为代码了。
本词条资料来源于 soso 网友此处参考资料无法引用对于作者表示抱歉!!!
如需将预览的.class 文件转换成.java 文件只需点击 File 菜单里的 save 即可。
版本列表
-
-
-
JD-GUI v0.3.6 官方版
JD-GUI是一款支持跨平台使用的Java反编译工具,界面风格简约、操作方便,它可以 ...
软件大小:770.1 KB 更新时间:2020-08-05
-
