[轉貼] c# dll完美破解

2012111914:38
出處: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的,反過來不行)

文本處理工具:

UltraEdit :http://www.crsky.com/soft/1469.html

EmEditorPro:http://www.crsky.com/soft/4278.html

根據不同情況需要使用上面不同的工具

其他工具:

Reflector.exe :http://www.pediy.com/tools/dotnet.htm

xenocode FOX: http://www.pediy.com/tools/dotnet.htm

修改過的Ildasm:http://www.pediy.com/tools/dotnet.htm

平時可以使用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則更好一些,因為日後一些復雜的軟件都有多個點,那時就必須重根抓起