彩票走势图

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

原创|行业资讯|编辑:何跃|2021-11-26 13:53:31.520|阅读 538 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

通用中间语言 (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反编译):

CodeVirtualizer下载体验


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP