Code Virtualization代码虚拟化混淆方法的实践

由于虚拟化方法的性能显着下降,代码虚拟化应仅应用于选定的方法。要启用代码虚拟化,您可以了解本篇属性装饰相应的方法。

通用中间语言 (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)] 

代码混淆前:

[System.Reflection.Obfuscation(Feature = "Virtualization", Exclude = false)]public void CreateFile(string filename, string content){string directory = Path.GetDirectoryName(filename) ;if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}StreamWriter streamWriter = new StreamWriter(File.Open(filename, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite));streamWriter .Write(content);streamWriter.Flush();streamWriter.Close();}

混淆保护后(用ILSpy反编译):

Code Virtualization代码虚拟化混淆方法的实践

标签:

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

上一篇 2021年10月23日
下一篇 2021年10月23日

相关推荐

发表回复

登录后才能评论