天天看點

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

.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捆綁

啟用此選項可建立.NET Core 3.x單個檔案應用程式。可執行檔案是自解壓縮的,包含運作應用程式所需的所有依賴項(包括本地依賴項)。首次運作該應用程式時,該應用程式将根據應用程式名稱和建構辨別符提取到目錄中。再次運作該應用程式時,啟動速度更快。除非使用了新版本,否則該應用程式無需再次提取自身。

反調試

此選項将啟用受保護程式集中的反調試器檢測。如果連接配接了調試器,目前程序将終止。

抗ILDASM

此功能可防止使用反編譯工具進行反編譯。反編譯工具(如ILDASM-Microsoft中間語言反彙程式設計式)将報告它們無法打開受保護的程式集。

防篡改

此選項可防止黑客工具篡改/修改受保護的程式集。在運作時,受保護的程式集将執行幾個二進制完整性檢查。

代碼虛拟化

通用中間語言(CIL)是一組與平台無關的指令,由特定于語言的編譯器(C#,VB.NET ...)從源代碼生成。CIL是獨立于平台的,并且可以在任何公共語言基礎架構支援的環境(例如.NET運作時或Mono)上執行。CIL和其他中繼資料的存儲方式必須遵循特定的标準(ECMA-335)。這樣,.NET Reflector或ILSpy之類的工具就可以讀取CIL指令并将代碼轉換回其源語言(C#,VB.NET ...)。

代碼虛拟化将CIL代碼轉換為一組随機指令,這些指令在運作時由我們自己的虛拟機解釋。由于沒有正确解釋新指令集的标準化程式,是以無法重建原始CIL指令。是以,虛拟代碼無法轉換回其源語言。

由于虛拟化方法的性能大大降低,是以代碼虛拟化應僅應用于標明的方法。要啟用代碼虛拟化,需要使用以下屬性裝飾相應的方法:

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

用法示例

之前

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

之後

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

其餘的存根代碼将執行虛拟機。

壓縮和加密資源

.NET Reactor可以通過壓縮和加密托管資源來提高保護和程式集的大小。在運作時,需要時,資源将自動解壓縮和解密。

控制流混淆

控制流混淆将方法内部的代碼轉換為意大利面條代碼,而這又保留了代碼的功能,這使得人眼和反編譯器很難遵循程式邏輯。反編譯器無法将意大利細面條代碼反編譯回原始源代碼。

嵌入元件

.NET Reactor接收程式集(在“ 其他檔案”中列出)并将其嵌入到Main Assembly中。

在可執行檔案中嵌入依賴項可以幫助您部署和維護軟體,因為您可以将所有依賴項嵌入到一個有效的可執行檔案中。在運作時,嵌入式依賴項直接從記憶體中加載,而不提取到硬碟驅動器中。.NET Reactor對嵌入式程式集不施加任何保護。如果要保護嵌入式程式集,則應将其與主程式集合并或先對其進行保護。

評估鎖

如果隻希望在有限的時間内使用受保護的程式集,請啟用Evaluation_Lock。在“ Runtime_Minutes”(分鐘)(分鐘)和“ Trial_Days”(天)之間選擇。此鎖将您的軟體轉變為“試用版”。

硬體鎖

如果要将許可證檔案連結到特定計算機,請啟用“硬體鎖定” 。建立的許可證檔案僅在具有定義的硬體ID的計算機上有效。要擷取硬體ID,請使用.NET Reactor SDK庫License.dll。

隐藏方法調用

隐藏對外部和/或内部方法的調用。方法調用通過在運作時動态建構的委托進行重定向。通常,僅隐藏外部方法調用就足夠了。

之前:

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

然後:

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

最後(混淆處理->命名約定->隐身):

.NET Core代碼保護!.NET Reactor這些保護機制你不得不知道!

許可檔案

有效的許可證檔案将您鎖定的.NET軟體解鎖。要建立有效的許可證檔案,必須加載正确的主密鑰。它必須與用于保護軟體的主密鑰相同。可以通過許可證管理器建立許可證檔案。

映射檔案

要對跟蹤痕迹進行模糊處理,需要一個映射檔案。映射檔案包含所有混淆名稱的翻譯。該堆棧跟蹤deobfuscator需要映射檔案重建原始的堆棧跟蹤。

合并程式集

啟用此選項可将多個部件合并到單個目标部件中。.NET Reactor将您的程式集(“ 主程式集”和“ 其他檔案中列出的程式集”)合并到一個目标程式集中。

合并依賴項可以改善對軟體的保護。合并的依存關系不再對使用者可見,并且由于它們是主裝配的真實部分,是以它們也将自動受到保護。如果主程式集是可執行檔案,則目标程式集仍然是具有相同入口點的可執行檔案。

第三方庫通常已經受到保護,是以不建議将它們與主程式集合并。如果在合并裝配件時遇到問題,則應将其嵌入到主裝配件中。

本機EXE檔案

.NET Reactor能夠為您的應用程式生成本機x86 EXE檔案存根。這樣就無法在反編譯器中直接打開受保護的應用程式。反編譯器将受保護的應用程式識别為本地EXE檔案。

NecroBit

NecroBit是一種強大的保護技術,通過用加密代碼替換方法中的CIL代碼,可以為您的敏感覺識産權提供全面保護。這樣就不可能對方法源代碼進行反編譯/反向工程。

混淆

除了源代碼保護,.NET Reactor還提供了徹底的類和成員混淆,并輔之以不同的排除方案,在混淆名稱中使用了不可列印的字元,甚至是增量混淆,它們始終為類型和成員名稱生成相同的混淆字元串。

模糊處理類型和成員名稱。混淆過程将程式轉換為等效程式,使反向工程更加困難。這種方法的優點是它可以在标準硬體上運作,并且無需對虛拟機或可用的解釋器進行任何更改。

.NET Reactor完全支援聲明式混淆。聲明式混淆允許您直接定義哪些類型和成員應排除在混淆之外。這可以通過在源代碼中使用自定義屬性System.Reflection.ObfuscationAttribute來完成。.NET Reactor自動檢測該屬性,并從混淆中排除相應的類型和成員。

混淆節點:

  • 建立映射檔案-啟用“建立映射檔案”以建立一個将未混淆名稱與混淆名稱交叉引用的檔案,該名稱由堆棧跟蹤反混淆器使用。
  • 啟用-設定為True以混淆所有非公共類和成員名稱。
  • 排除-選擇要避免混淆的類型。
  • 增量混淆-如果您希望IntelliLock始終為您的類型和成員名稱生成相同的混淆字元串,則需要啟用此選項。
  • 模糊公共類型-啟用它也可以模糊所有類型和成員名稱。
  • 混淆可序列化類型-禁用此選項可防止混淆可序列化類型。
  • 使用不可列印的字元-不可列印的字元使用不可列印的字元串來混淆類型和成員名稱,但是如果程式集必須作為安全代碼運作,則無法使用。

準時制方法

與本機EXE檔案功能和NecroBit結合使用,.NET Reactor能夠将托管方法轉換為REAL x86本機代碼。隻有不影響運作時和平台行為的方法(大多數是諸如屬性getter / setters之類的小方法)才會轉換為本機代碼。本質上,此功能具有内置保護,可防止元件修改。

字元串加密

字元串加密使黑客難以了解您的代碼并嘗試對程式集進行代碼更新檔,因為他将無法識别消息文本或其他有用的字元串,進而使識别更新檔代碼的難度變得更大。此功能具有内置的防止組裝操作的保護。