2013年9月11日 星期三

[轉貼] c# dll完美破解

出處:http://www.360doc.com/content/10/1012/09/3722251_60285817.shtml

一、准備
需要的軟件:
Ildasm.exe:用來將dll,exe編譯為IL文件
ilasm.exe:用來將IL文件編譯回來dll或exe
這2個工具裝好VS就有了(VS2005的可以處理2003的,反過來不行)
文本處理工具:
根據不同情況需要使用上面不同的工具
其他工具:
平時可以使用Reflector,有些特別的使用Fox方便。當處理一些版權保護的或經過特殊混淆的.net1.X時需要使用修改過的Ildasm
上面這些東東在用到的時候再具體說
.net的通常破解流程大致就是:
1,使用ildasm編譯目標文件(exe/dll)為IL
2,去掉強名,使用ilasm反編譯回來看看是否可正確運行
如果可以運行,那麼基本都可以搞定(步驟3);如果不可以(步驟4)
3,查找IL文件中的限制進行修改再次反編譯直到破解完成
4,查看IL文件是否還有其他限制找到並剔除
如果還是不能運行可能該死的東東不能使用通常的方法破解,具體問題具體分析了
二、示例
選擇一個日程控件(下載:http://www.mediachase.com/ )
安裝、運行後看看他的試用限制是怎麼體現的
我們隨便找一個頁面運行看看效果Home/fullsample.aspx
我們看到,當沒有注冊時會出現警示語
(有些軟件的試用提示是隨機出現的,但不管怎麼說,我們要破解一個軟件時第一步就是要了解這個軟件的限制是什麼)
接下來我們嘗試看看是否可以反編譯
打開Ildasm.exe編譯為IL文件
(Ildasm.exe默認在C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin )
我們用EmEditor打開IL文件並刪除強名
刪除強名,是使用反編譯方法破解的必須步驟,只要使用了Ildasm編譯就必須刪除強名
灰色部分就是強名,全部刪除並保存
接下來將IL編譯回DLL
進入VS2005命令行(如果直接用cmd進入DOS因為環境變量的問題可能需要輸入全路徑)
切換到IL目錄執行
ilasm /dll /resource=Mediachase.Web.UI.WebControls.res Mediachase.Web.UI.WebControls.il
  
執行成功(但不表示該控件可通過此方法破解)
我們還是回到VS刷新剛才打開的頁面,發現沒有出現錯說,這基本上說明該控件是可以用這種方法破解的
接下來我們就要進入爆破點查找階段
EmEditor打開IL文件
查找關鍵字,我們輸入「This is」 找到了2個結果
接下來定位一下這個是在那裡掉用的,我們往下翻頁看到
是在Calendar::RenderContents中
打開Reflector.exe,讀取DLL並定位 ,一共2處,並且都在同一個過程內
我們發現2個有個共同點,都是根據變量IsDemoVersion來決定是否輸出警示語
那麼我們現在有2條路
1直接刪除警示語,那麼自然就OK了
2,修改變量IsDemoVersion
我們選擇2
點擊Me.IsDemoVersion跳轉 ,鼠標右擊-Analyze
查看所有調用IsDemoVersion變量的地方
發現只有兩處,一個是我們剛才停留的地方,還有一處,我們看看  
我們看到,當實例初始化的時候IsDemoVersion被賦值True
並且我們也通過之前的不走步驟得出只有這一個地方是改變IsDemoVersion的
所以,我們只要把IsDemoVersion改為False就大功告成了
最後操刀
打開EmEditor並定位
找到對應位置,我們只要把True改為False(IL中是ldc.i4.1改為ldc.i4.0)
保存IL
重新dos編譯
再次刷新頁面
警示語不見了
總結:
  • 破解前首先要弄清軟件的限制
  • 使用Ildasm破解時需要先刪除IL中的強名
  • 在做IL修改時,善於利用的EmEditor的插件查找功能,他可以列出所有目標
  • 盡量在限制的根源突破,比如這次,可以直接刪除字符串達到破解目的,可通過修改IsDemoVersion則更好一些,因為日後一些復雜的軟件都有多個點,那時就必須重根抓起

沒有留言:

張貼留言