彩票走势图

logo Eziriz中文文档

代码虚拟化


作为开发人员,自己辛苦在.net框架下写的dll或者exe文件,不想被别人通过反编译工具轻松查看。那么我们就需要对自己写的代码进行保护。在笔者经过大量的搜索与尝试后,发现一款不错的程序保护工具.NET Reactor。如其名字所示,这是一款针对.net程序进行保护的专门工具,因为专业,所以强大。

.NET Reactor 最新下载

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

DevExpress VCL图表控件

剩余的存根代码执行虚拟机。

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP