原創|使用教程|編輯:李顯亮|2020-07-27 14:43:53.270|閱讀 462 次
概述:.NET Reactor是一個功能強大的代碼保護和軟件許可系統,適用于為.NET Framework編寫的軟件,并支持生成.NET程序集的所有語言。想了解.NET Reactor都有哪些保護機制,你需要知道這些含義。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
.NET Reactor是一個功能強大的代碼保護和軟件許可系統,適用于為.NET Framework編寫的軟件,并支持生成.NET程序集的所有語言。
.NET Reactor迎來了久違的版本更新,進入v6.3.0.0全新時代!支持Blazor保護,支持.NET 5 Preview 4保護,允許創建.NET Core 3.x單個文件應用程序,改進了許多功能性能,等等10個功能的更新和改進,還沒有體驗的朋友可點擊下方按鈕下載試用。
本文將介紹.NET Reactor的功能和保護機制中的重要名詞含義,了解了這些才能更好的掌握功能使用,希望對您有所幫助。
啟用此選項可創建.NET Core 3.x單個文件應用程序。可執行文件是自解壓縮的,包含運行應用程序所需的所有依賴項(包括本地依賴項)。首次運行該應用程序時,該應用程序將根據應用程序名稱和構建標識符提取到目錄中。再次運行該應用程序時,啟動速度更快。除非使用了新版本,否則該應用程序無需再次提取自身。
此選項將啟用受保護程序集中的反調試器檢測。如果連接了調試器,當前進程將終止。
此功能可防止使用反編譯工具進行反編譯。反編譯工具(如ILDASM-Microsoft中間語言反匯編程序)將報告它們無法打開受保護的程序集。
此選項可防止黑客工具篡改/修改受保護的程序集。在運行時,受保護的程序集將執行幾個二進制完整性檢查。
通用中間語言(CIL)是一組與平臺無關的指令,由特定于語言的編譯器(C#,VB.NET ...)從源代碼生成。CIL是獨立于平臺的,并且可以在任何公共語言基礎架構支持的環境(例如.NET運行時或Mono)上執行。CIL和其他元數據的存儲方式必須遵循特定的標準(ECMA-335)。這樣,.NET Reflector或ILSpy之類的工具就可以讀取CIL指令并將代碼轉換回其源語言(C#,VB.NET ...)。
代碼虛擬化將CIL代碼轉換為一組隨機指令,這些指令在運行時由我們自己的虛擬機解釋。由于沒有正確解釋新指令集的標準化程序,因此無法重建原始CIL指令。因此,虛擬代碼無法轉換回其源語言。
由于虛擬化方法的性能大大降低,因此代碼虛擬化應僅應用于選定的方法。要啟用代碼虛擬化,需要使用以下屬性裝飾相應的方法:
用法示例
之前
之后
其余的存根代碼將執行虛擬機。
.NET Reactor可以通過壓縮和加密托管資源來提高保護和程序集的大小。在運行時,需要時,資源將自動解壓縮和解密。
控制流混淆將方法內部的代碼轉換為意大利面條代碼,而這又保留了代碼的功能,這使得人眼和反編譯器很難遵循程序邏輯。反編譯器無法將意大利細面條代碼反編譯回原始源代碼。
.NET Reactor接收程序集(在“ 其他文件”中列出)并將其嵌入到Main Assembly中。
在可執行文件中嵌入依賴項可以幫助您部署和維護軟件,因為您可以將所有依賴項嵌入到一個有效的可執行文件中。在運行時,嵌入式依賴項直接從內存中加載,而不提取到硬盤驅動器中。.NET Reactor對嵌入式程序集不施加任何保護。如果要保護嵌入式程序集,則應將其與主程序集合并或先對其進行保護。
如果只希望在有限的時間內使用受保護的程序集,請啟用Evaluation_Lock。在“ Runtime_Minutes”(分鐘)(分鐘)和“ Trial_Days”(天)之間選擇。此鎖將您的軟件轉變為“試用版”。
如果要將許可證文件鏈接到特定計算機,請啟用“硬件鎖定” 。創建的許可證文件僅在具有定義的硬件ID的計算機上有效。要獲取硬件ID,請使用.NET Reactor SDK庫License.dll。
隱藏對外部和/或內部方法的調用。方法調用通過在運行時動態構建的委托進行重定向。通常,僅隱藏外部方法調用就足夠了。
之前:
然后:
最后(混淆處理->命名約定->隱身):
有效的許可證文件將您鎖定的.NET軟件解鎖。要創建有效的許可證文件,必須加載正確的主密鑰。它必須與用于保護軟件的主密鑰相同。可以通過許可證管理器創建許可證文件。
要對跟蹤痕跡進行模糊處理,需要一個映射文件。映射文件包含所有混淆名稱的翻譯。該堆棧跟蹤deobfuscator需要映射文件重建原始的堆棧跟蹤。
啟用此選項可將多個部件合并到單個目標部件中。.NET Reactor將您的程序集(“ 主程序集”和“ 其他文件中列出的程序集”)合并到一個目標程序集中。
合并依賴項可以改善對軟件的保護。合并的依存關系不再對用戶可見,并且由于它們是主裝配的真實部分,因此它們也將自動受到保護。如果主程序集是可執行文件,則目標程序集仍然是具有相同入口點的可執行文件。
第三方庫通常已經受到保護,因此不建議將它們與主程序集合并。如果在合并裝配件時遇到問題,則應將其嵌入到主裝配件中。
.NET Reactor能夠為您的應用程序生成本機x86 EXE文件存根。這樣就無法在反編譯器中直接打開受保護的應用程序。反編譯器將受保護的應用程序識別為本地EXE文件。
NecroBit是一種強大的保護技術,通過用加密代碼替換方法中的CIL代碼,可以為您的敏感知識產權提供全面保護。這樣就不可能對方法源代碼進行反編譯/反向工程。
除了源代碼保護,.NET Reactor還提供了徹底的類和成員混淆,并輔之以不同的排除方案,在混淆名稱中使用了不可打印的字符,甚至是增量混淆,它們始終為類型和成員名稱生成相同的混淆字符串。
模糊處理類型和成員名稱。混淆過程將程序轉換為等效程序,使反向工程更加困難。這種方法的優點是它可以在標準硬件上運行,并且無需對虛擬機或可用的解釋器進行任何更改。
.NET Reactor完全支持聲明式混淆。聲明式混淆允許您直接定義哪些類型和成員應排除在混淆之外。這可以通過在源代碼中使用自定義屬性System.Reflection.ObfuscationAttribute來完成。.NET Reactor自動檢測該屬性,并從混淆中排除相應的類型和成員。
混淆節點:
與本機EXE文件功能和NecroBit結合使用,.NET Reactor能夠將托管方法轉換為REAL x86本機代碼。只有不影響運行時和平臺行為的方法(大多數是諸如屬性getter / setters之類的小方法)才會轉換為本機代碼。本質上,此功能具有內置保護,可防止組件修改。
字符串加密使黑客難以理解您的代碼并嘗試對程序集進行代碼補丁,因為他將無法識別消息文本或其他有用的字符串,從而使識別補丁代碼的難度變得更大。此功能具有內置的防止組裝操作的保護。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn