文檔半島外圍網上直營>>Eziriz中文文檔>>代碼虛擬化
                代碼虛擬化
作為開發人員,自己辛苦在.net框架下寫的dll或者exe文件,不想被別人通過反編譯工具輕松查看。那么我們就需要對自己寫的代碼進行保護。在筆者經過大量的搜索與嘗試后,發現一款不錯的程序保護工具.NET Reactor。如其名字所示,這是一款針對.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)]用法示例
前:
[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反編譯):
	 
 
剩余的存根代碼執行虛擬機。

 QQ交談
QQ交談 在線咨詢
在線咨詢 
                 
                
 渝公網安備
            50010702500608號
渝公網安備
            50010702500608號
             
            
 客服熱線
客服熱線