先说一下,反编译并非完全编译,越复杂的越难反编译,只能保证将其反编译为机器语言(汇编语言)。但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。像*.exe之类的很难反编译,比如使用eXeScope,就算是最简单程序也只能反编译成机器码,一般人是看不懂的,也很难看懂的。而java则是使用的JVM,所以教容易反编译,能大概反编译成源代码。这里我说的是大概,差不多的意思。下面简单介绍一下反编译。
高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
反编译: 机器码(汇编语言) → 高级编程语言
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件:
VB: VBExplorer 、VB反编译精灵和VBRezQ;只能反编译界面图像,好像代码不能完全反编译
JAVA: JAD(Joint Application Development) ;java的反编译比较常见,所以反编译比较完全, 将class文件反编译成java文件也是有可能的
C++: eXeScope
Dephi: DEDE
c#:Reflector
易语言:E-Code E