编译」(compile),就有「反编译」(decompile)
同样的道理,有「编译」(compile),就有「反编译」(decompile);有「反编译」,就有「反反编译」。对于Java和.NET这种虚拟机器的中间码来说,尤其明显。
Java程序编译后的结果是Java Bytecode,而.NET编译后的结果是CIL(Common Intermediate Language),两者都具有下列的特性:
-同为堆栈式(stack-based)指令集。
-同为高阶面向对象机器语言
-和平台无关
-Code Validation
-Symbolic Link
上述任何一点特色,都可以让程序变得更容易反编译,全部五点结合起来更是不得了。所以要反编译Java和.NET可以说是相当容易的。网络上就到处流传着Java的反编译器(decompiler),可以把编译后的档案反推出原始码,
Powered by Zoundry