熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

常見dotNet加密保護工具分析介紹

2013-11-13 09:46:43  來源: .NET編程 
  本文主要介紹一些dotNet加密保護工具的原理以及就其脫殼進行簡單探討remotesoft protectormaxtocodeNet ReactorCliprotector  themida Netxenocode native compilerDNGuard 
   
     remotesoft protector
  
  應該是一款比較老的net加密保護工具了看其官方網站似乎還是年更新過該軟件沒有提供試用版下載相關資料比較少去年接觸過一個該軟件保護的Net程序加密後的程序發布時需要附帶native 的 dll 這款殼可以算是jit層的殼是jit wrap 模式通過hook getJit函數攔截 jit 請求在每次發生jit請求時其運行庫會將加密的程序集完全原地 解密還原
  
  特點整體解密
  脫殼攔截地層jit請求然後中斷這時程序集已經完全解密直接pe dump就行了 
   
     maxtocode
  這個大家應該比較熟悉了和 remotesoft protector 應該時前後腳起步的關系吧xxx和內核有很大差別
  特點單方法體解密
  
  maxtocode x 版本沒有用過不過DST組的菩提曾經寫過 maxtocode x 的脫殼機
  
  maxtocdoe x 其內核是EE層單方法體原地解密編譯之後再擦除解密的代碼
  
  脫殼因為是原地解密所以方法體代碼逃不過profile的可以在profile裡面記錄每個方法體然後填充到文件中
  方法二nop 調 其內核 的擦除代碼這個不用修改其內核文件只要還原 mscorwksdll 中其hook的第二處地方即可這樣方法體解密後就在內存中了所有方法invoke一面直接pe dump即可
  
  maxtocode x這個版本接觸得比較多我接觸的第一個maxtocode版本就是這一版其內核相對x變動比較大方法體已經不是原地
  
  解密的了也就是說profile已經不能監視到其il代碼了這算是一個巨大的進步吧x的內核基本上是一樣的只是後續的版本針對反射做了一些小動作
  
  脫殼直接反射修復後反射
  方法二直接調用其內核的解密函數進行脫殼簡單快速
  
  maxtocode 企業版Jit層內核 其在 ee 層和 jit層均安裝了多處 hook其內核在前面的文章裡面有詳細介紹
  
  脫殼因其jit層內核的漏洞可以用簡單的方式還原方法體Hook Jit 後可以簡單的進行方法體還原完成單個方法的脫殼
  把每個方法都脫一面填回文件即可
  
 Net Reactor
  一款很特別的net加密殼它有兩種模式 application 和 library
  第一種模式 是程序整體加密然後創建一個native的loader整體加密的脫殼很簡單dump 內存即可
  
  第二種模式 加密後的程序集也要帶一個native的dll和maxtocode一樣加了很多靜態構造函數一個startup函數
  但是在 startup函數調用後即完成了程序集的全部原地解密所以運行後直接dump內存就可以了
  
  脫殼直接pe dump
  
  CliProtector
  一款jit層的加密殼大概是去年年底發現的當時我在進行DNGuard的開發經分析後發現其內核模式和當時DNGuard 的jit層內核很相似分析後不久就發現了其jit層內核處理的一個漏洞可以用簡單的方式還原方法體也就是最近在maxtocode 企業版中發現的那個在我的DNGuard 中對這個漏洞進行了預防處理
  個人感覺其模式兼容性比maxtocode 企業版要好只是可惜它除了有jit層漏洞還偷了賴IL代碼沒有加密和我出的dnguard demo一樣只是把 il搬了一下位置沒有加密不過對於jit層脫殼來說加不加密倒無所謂了但這樣可能導致破解者從另一個角度去脫殼了
  特點單方法體解密
  脫殼Jit hook簡單方法體還原 同maxtocode企業版的脫殼方式
  方法二分析其加密文件結構直接還原(因其il代碼沒有加密可以不用考慮解密算法的研究)
  
  themida Net
  themida 是win的一個強殼它支持 Net的加密其加密方式是整體加密但是憑借其win anti的優勢相比其它整體加密的加密工具來說強度要高一點不過也就僅僅那麼一點
  
  脫殼過antipe dump
  
  xenocode native compiler
  xenocode 的專長是混淆保護不過它也提供了一個所謂的生成本地代碼的功能其生成本地代碼其實就是把 程序集打包創建一個native loader但是它的打包把framework都包進去了也就是說打包後的程序可以在沒有安裝framework的機器上直接運行代價是生成的文件體積非常大因為它把十幾兆的framework包進去了
  
  脫殼直接pe dump
  方法二分析其打包的文件格式直接解包(已有工具)
  
  DNGuard 內核模式同 maxtocode x脫殼方式也雷同
  
  DNGuard Jit層內核同maxtocode 企業版和CLIProtector相比少了一個漏洞不能用簡單方式還原方法體
  如果破解者對jit內核工作非常熟悉也能從jit層的結構體中重構出方法體
  
  脫殼Jit hook 結構體重構模式
  
總結
  以上除了 maxtocode x DNGuard CLiProtector 外其它工具加密的程序都存在profile漏洞可以通過profile獲取代碼
  
  綜合兼容性和強度 CLiProtector 和 maxtocode 企業版 要好一些
  DNGuard 的強度好一些兼容性比較差就只支持 v 的framework
  
  DNGuard新版已經開始采用兼容全部framework的模式了
  
  上面的所有工具加密的程序集都可以直接在jit層中截獲 IL字節碼 IL字節碼不是方法體它是方法體的一部分
  只取得il字節碼無法完成脫殼工作但是已可反為MSIL匯編代碼進行算法分析了
  
  DNGuard HVM的目標就是不讓jit層截獲可分析的IL字節碼
From:http://tw.wingwit.com/Article/program/net/201311/11563.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.