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