反编译及其工具
正编译过程:
自然语言 --> 程序语言(源程序)--> 机器语言(二进制代码)--> 执行
每一步都是一个【信息丢失】的过程。
编译器将源程序编译成机器语言是一个加密的过程。
再往后发展:
自然语言 --> 程序语言(源程序 --编译器---> 中间语言(字节码)--> 机器语言(二进制代码) --> 执行
中间语言词汇少,比较精炼,执行起来也更快。这些语言一般也会用上JIT技术,进一步把中间语言编译成机器语言(而非解释执行),执行效率也就跟那些原生的编译语言不相上下了。所以说能反编译的语言大多是能编译成【中间语言】的高级语言。
再后来为了防止源码被反编译出现了混淆器。
目前的.NET反编译工具有Reflector(收费),和ILSpy(开源、免费)。