原創(chuàng)|行業(yè)資訊|編輯:何躍|2021-11-26 13:53:31.520|閱讀 638 次
概述:由于虛擬化方法的性能顯著下降,代碼虛擬化應(yīng)僅應(yīng)用于選定的方法。要啟用代碼虛擬化,您可以了解本篇屬性裝飾相應(yīng)的方法。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
通用中間語言 (CIL) 是一組獨(dú)立于平臺(tái)的指令,由特定于語言的編譯器(C#、VB.NET...)從源代碼生成。 CIL 是獨(dú)立于平臺(tái)的,可以在任何公共語言基礎(chǔ)結(jié)構(gòu)支持的環(huán)境中執(zhí)行,例如 .NET 運(yùn)行時(shí)或 Mono。
CIL 和其他元數(shù)據(jù)的存儲(chǔ)方式必須遵循特定標(biāo)準(zhǔn) (ECMA-335)。通過這種方式,.NET Reflector 或 ILSpy 等工具能夠讀取 CIL 指令并將代碼轉(zhuǎn)換回其源語言(C#、VB.NET...)。
代碼虛擬化將 CIL 代碼轉(zhuǎn)換為一組隨機(jī)指令,這些指令在運(yùn)行時(shí)由我們自己的虛擬機(jī)進(jìn)行解釋。由于沒有正確解釋新指令集的標(biāo)準(zhǔn)化程序,因此無法重建原始 CIL 指令。因此,無法將虛擬化代碼翻譯回其源語言。
由于虛擬化方法的性能顯著下降,代碼虛擬化應(yīng)僅應(yīng)用于選定的方法。
要啟用代碼虛擬化,您需要使用以下屬性裝飾相應(yīng)的方法:
[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(); }
混淆保護(hù)后(用ILSpy反編譯):
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn