常見dotNet加密保護工具分析介紹
本文主要介紹一些dotNet加密保護工具的原理以及就其脫殼進行簡單探討。remotesoft protector、maxtocode、.Net Reactor、Cliprotector
、themida .Net、xenocode native compiler、DNGuard。
remotesoft protector
應該是一款比較老的。net加密保護工具了,看其官方網站似乎還是06年更新過。該軟體沒有提供試用版下載,相關資料比較少。去年接觸過一
個該軟體保護的.Net程式。加密後的程式釋出時需要附帶native 的 dll。
這款殼可以算是jit層的殼,是jit wrap 模式,通過hook getJit函式,攔截 jit 請求。在每次發生jit請求時其執行庫會將加密的程式集完全
“原地” 解密還原。
特點:整體解密
脫殼:攔截地層jit請求,然後中斷。這時程式集已經完全解密,直接pe dump就行了。
maxtocode
這個大家應該比較熟悉了,和 remotesoft protector 應該時前後腳起步的關係吧。其1.x,2.x,3.1x和3.2核心有很大差別。
特點:單方法體解密
maxtocode 1.x 版本沒有用過,不過DST組的菩提曾經寫過 maxtocode 1.x 的脫殼機。
maxtocdoe 2.x 其核心是EE層,單方法體“原地”解密。編譯之後再擦除解密的程式碼。
脫殼:因為是“原地”解密,所以方法體程式碼逃不過profile的。可以在profile裡面記錄每個方法體,然後填充到檔案中。
方法二:nop 調 其核心 的擦除程式碼。這個不用修改其核心檔案,只要還原 mscorwks。dll 中其hook的第二處地方即可。這樣方法體解密後就
在記憶體中了。所有方法invoke一面,直接pe dump即可。
maxtocode 3.1x,這個版本接觸得比較多,我接觸的第一個maxtocode版本就是3.10。這一版其核心相對2.x變動比較大。方法體已經不是原地
解密的了,也就是說profile已經不能監視到其il程式碼了,這算是一個巨大的進步吧。3.1x的核心基本上是一樣的,只是後續的版本針對反射做
了一些小動作。
脫殼:直接反射、修復後反射。
方法二:直接呼叫其核心的解密函式進行脫殼,簡單快速。
maxtocode 2007 企業版,Jit層核心 ,其在 ee 層和 jit層均安裝了多處 hook。其核心在前面的文章裡面有詳細介紹。
脫殼:因其jit層核心的漏洞,可以用簡單的方式還原方法體。Hook Jit 後可以簡單的進行方法體還原完成單個方法的脫殼。
把每個方法都脫一面,填迴檔案即可。
.Net Reactor
一款很特別的。net加密殼。它有兩種模式, application 和 library。
第一種模式 是把 。net程式整體加密,然後建立一個 native的loader。整體加密的脫殼很簡單,dump 記憶體即可。
第二種模式 加密後的程式集也要帶一個native的dll。和maxtocode一樣,加了很多靜態建構函式,一個startup函式。
但是在 startup函式呼叫後,即完成了程式集的全部“原地”解密。所以執行後直接dump記憶體就可以了。
脫殼:直接pe dump。
CliProtector
一款jit層的加密殼,大概是去年年底發現的。當時我在進行DNGuard2.0的開發,經分析後發現其核心模式和當時DNGuard 2.0的jit層核心很相似。分析後不久就發現了其jit層核心處理的一個漏洞,可以用簡單的方式還原方法體。也就是最近在maxtocode 2007 企業版中發現的那個。在我的DNGuard 2.0 中對這個漏洞進行了預防處理。
個人感覺其模式相容性比maxtocode 2007企業版要好。只是可惜,它除了有jit層漏洞,還偷了賴,IL程式碼沒有加密,和我出的dnguard 1.0 demo一樣,只是把 il搬了一下位置,沒有加密。不過對於jit層脫殼來說加不加密倒無所謂了。但這樣可能導致破解者從另一個角度去脫殼了。
特點:單方法體解密
脫殼:Jit hook,簡單方法體還原, 同maxtocode2007企業版的脫殼方式。
方法二:分析其加密檔案結構,直接還原(因其il程式碼沒有加密,可以不用考慮解密演算法的研究)。
themida .Net
themida 是win32的一個強殼,它支援 。Net的加密,其加密方式是整體加密,但是憑藉其win32 anti的優勢,相比其它整體加密的加密工具來說強度要高一點,不過也就僅僅那麼一點。
脫殼:過anti,pe dump。
xenocode native compiler
xenocode 的專長是混淆保護,不過它也提供了一個所謂的生成原生程式碼的功能。其生成原生程式碼其實就是把 程式集打包,建立一個native loader。但是它的打包把framework都包進去了,也就是說打包後的程式可以在沒有安裝framework的機器上直接執行,代價是生成的檔案體積非常大,因為它把十幾兆的framework包進去了。
脫殼:直接pe dump。
方法二:分析其打包的檔案格式直接解包(已有工具)。
DNGuard 1.0 核心模式同 maxtocode 3.1x。脫殼方式也雷同。
DNGuard 2.0 Jit層核心,同maxtocode 2007企業版和CLIProtector。相比少了一個漏洞,不能用簡單方式還原方法體。
如果破解者對jit核心工作非常熟悉,也能從jit層的結構體中重構出方法體。
脫殼:Jit hook 結構體重構模式。
總結:
以上除了 maxtocode 3.x, DNGuard, CLiProtector 外,其它工具加密的程式都存在profile漏洞,可以通過profile獲取程式碼。
綜合相容性和強度 CLiProtector 和 maxtocode 2007 企業版 要好一些。
DNGuard 2.0的強度好一些,相容性比較差,就只支援 v2.0.50727.42 的framework。
DNGuard新版已經開始採用相容全部framework的模式了。
上面的所有工具加密的程式集,都可以直接在jit層中截獲 IL位元組碼。 IL位元組碼不是方法體,它是方法體的一部分。
只取得il位元組碼無法完成脫殼工作,但是已可反為MSIL彙編程式碼,進行演算法分析了。
DNGuard HVM的目標就是不讓jit層截獲可分析的IL位元組碼。
相關文章
- wireshark、異常資料分析、常見RST介紹
- 常見原型設計工具介紹-00-overvuew原型Vue
- 加密保護軟體 WinLicense 註冊常見問題(一):許可證加密
- 介紹幾種MySQL常見的圖形化工具MySql
- meterpreter常見指令碼介紹指令碼
- 如何進行程式碼混淆?方法與常見工具介紹行程
- linux常見特殊符號介紹Linux符號
- 常見伺服器系統介紹伺服器
- 常見的代理IP型別介紹型別
- 介紹 DotNet 庫 - Viyi.Strings
- 代理IP常見錯誤程式碼介紹
- 四款常見IT自動化運維工具簡單介紹-行雲管家運維
- dotnet core微服務框架Jimu介紹微服務框架
- 高匿代理的介紹及常見問題
- 幾種常見網路抓包方式介紹
- 常見的四類HTTP狀態碼介紹HTTP
- 常見加密演算法及常見加密演算法簡述加密演算法
- 資料夾加密小工具:保護你的隱私安全加密
- 常見啟用函式的介紹和總結函式
- 1(5)led燈閃爍、常見ip核介紹
- 開源≠免費 常見開源協議介紹協議
- 增長實驗室-ab分流的流量保護功能介紹
- JS常見加密混淆方式JS加密
- 常見的Web安全漏洞及測試方法介紹Web
- NO.A.0002——make.常見的監控軟體介紹
- 常見的反爬蟲措施與應對方法介紹爬蟲
- Python的常見模組:OS和 time模組介紹Python
- Linux常見的開發命令有哪些?分類介紹!Linux
- Python的控制語句有哪些?常見內容介紹!Python
- NLPIR文字分析工具的功能和特色介紹
- 動態惡意軟體分析工具介紹
- 介紹 9 款 MySQL 常見的圖形化工具,第三款我用了 10 年MySql
- 介紹一個提供免費郵箱小號接收驗證碼的工具 保護隱私安全
- 文字加密:常見的密碼加密解密方法加密密碼解密
- Flutter 常見異常分析Flutter
- PHP常見的加密技術PHP加密
- 【謹記】關於“等級保護”工作的10個常見問題!
- 關於“等保保護”最常見問題解答!
- .NET GC 實時監控 dotnet-gcmon 介紹GC