CIL和其他元数据的存储方式必须遵循一个特定的标准(ECMA-335)。这样,像.NET Reflector或ILSpy这样的工具就能够读取CIL指令,并将代码翻译回其源语言(C#、VB.NET…)
通用中间语言(CIL)是一套独立于平台的指令,由特定语言的编译器(C#、VB.NET…)从源代码中生成。CIL是独立于平台的,可以在任何通用语言基础设施支持的环境中执行,如.NET运行时或Mono。
CIL和其他元数据的存储方式必须遵循一个特定的标准(ECMA-335)。这样,像.NET Reflector或ILSpy这样的工具就能够读取CIL指令,并将代码翻译回其源语言(C#、VB.NET…)。
代码虚拟化将CIL代码转换为一组随机的指令,在运行时由我们自己的虚拟机进行解释。由于没有标准化的程序来正确解释新的指令集,原始的CIL指令不能被重构。因此,虚拟化的代码不能被翻译回其源语言。
由于虚拟化方法的性能明显下降,代码虚拟化应该只应用于选定的方法你可以在选定的方法中标注以下属性:
[System.Reflection.ObfuscationAttribute(Feature = "Virtualization", Exclude = false)]

实现虚拟化之后代码如下:

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!