Visual Basic 2010是一种编译型语言还是解释型语言?VB程序是否可以被反汇编?
Visual Basic 2010是一种编译型语言还是解释型语言?VB程序是否可以被反汇编?
这有点两者兼备。它被编译成中间语言(IL),然后在运行时进行“即时编译”(JIT),转换为机器码。
这取决于执行环境。但通常会进行编译,分为两步:首先将源代码编译成中间语言(IL),然后在运行时通过即时编译器将IL转换为机器码。但是在像.NET Micro Framework这样的环境中,会使用IL解释器。中间形式允许相当不错的反编译,Reflector是最好的工具。
这是一种混合编译方式。代码被编译成CIL(通用中间语言: http://en.wikipedia.org/wiki/Common_Intermediate_Language)。CLR (公共语言运行时) JIT(即时) 编译该CIL为本机代码。
由于CIL代码保持不变,因此将CIL反编译为C#、VB .NET或另一个.NET变体相对简单。有几种产品可以实现这一点(Reflector、dotPeek)。为了防止源代码被盗,您可以使用混淆器(例如Dotfuscator)来确保将CIL反编译为C#/VB .NET的任何尝试都会产生无意义的结果。
这很复杂。
与Java类似,.Net语言(包括C#和VB)被编译成一种名为IL(Intermediate Language)的字节码语言。然后将此IL分发到其他计算机。
但是,事情并没有就此结束。在实际执行之前,JIT(即时)编译器将IL编译为本地代码。是的,像所有语言一样,VB也可以被反汇编。