根據以往破解經驗及之前破解FlyTreeView for ASP
NET
的經歷
Web控件的試用限制通常是在 New
Render
Init等位置實現
為此
我們直接展開NineRays
Web
UI
WebControls
FlyTreeView中的FlyTreeView類
以(圖六)中拋出的異常信息
Rays
Net FlyTreeView for ASP
NET TRIAL license has expired
為線索
逐個浏覽該類中的重點方法與函數的反匯編代碼
發現異常是在FlyTreeView類的構造函數New()中拋出的
其高級語言代碼如下
相關截圖見(圖八)
顯然
關鍵代碼是
Global
TRIAL_EXPIRE_DATE中保存的應該是控件試用的最後期限
我們只要將Global
TRIAL_EXPIRE_DATE中的期限值向後延長一定年限就可以達到破解的要求了
因為我們畢竟不是要做該控件的注冊機
不需要再做更復雜的分析
為此
我們在點擊(圖八)中藍色加亮的TRIAL_EXPIRE_DATE
轉到靜態全局類Global
浏覽其相關代碼
我們找到了如下關鍵代碼
相應的截圖見(圖九)
在以上由Reflector反編譯出的代碼中
以VB
NET和Delphi代碼最為直觀
它使我們一眼就看出該控件的最後使用期限為2004年8月3日
(不同時間下載或安裝的FlyTreeView表現在代碼中的截止日期可能不同
筆者未特意考證)
下一步的工作就是進入實際破解了
3
控件破解
在工作目錄中雙擊反匯編批處理文件myildasm
bat
工作目錄中便出現了反匯編後得出的NineRays
Web
UI
WebControls
FlyTreeView
il等相關文件
見下表
用記事本打開NineRays
Web
UI
WebControls
FlyTreeView
il
向後翻一至兩頁可以看到如下代碼
這是用於控件簽名的公鑰
應將其刪除
以避免破解後的控件的被GAC踢出去且添加不進工具箱
在記事本中利用查找功能查找
x
d
(2004年)
結合前面Reflector反匯編時得到的有關線索
可以確定NineRays
Web
UI
WebControls
FlyTreeView
il中對應Global()的構造函數的IL匯編代碼如下
將上述代碼中的
x
d
改為我們需要的年份就可以達到我們破解的目的
需要注意的是
新的年份值不可過大
否則可能超出操作系統支持的上限
那就可能出現
萬年蟲
了
這個值改為2050年就已經足夠了
因為人們不可能在四十多年後還在使用這個版本的FlyTreeView
況且到那時
如果微軟還僥幸存在的話
恐怕連DOTNET都不知被它淘汰到哪裡去了
2050對應的十六進制表示為
x
修改後保存NineRays
Web
UI
WebControls
FlyTreeView
il
接下來就是使用匯編工具ILASM編譯破解後的代碼了
在編譯之前
我們對也對控件來個數字簽名
(強名稱不是必需的
也可以不做
但如果不想做的話請將myilasm
bat中的/key:treekey
snk指令刪除)
要進行數字簽名
首先要使用SN.EXE產生簽名密鑰
在資源管理器中右擊工作目錄
FlyTreeView破解
的文件夾圖標後在彈出菜單中選擇
進入命令行
然後再DOS窗口鍵入 sn
k treekey
snk 回車
一個新的
隨機密鑰對
便存儲到了工作目錄下的treekey
snk文件中
接下來便進入實際編譯過程了
關閉DOS窗口和Reflector等軟件
回到資源管理器
刪除工作目錄中的NineRays
Web
UI
WebControls
FlyTreeView
dll
然後雙擊工作目錄中的批處理文件myilasm
bat
等編譯工作結束
就可以看到一個新的NineRays
Web
UI
WebControls
FlyTreeView
dll出現在工作目錄中
至此
如果之前的工作沒有失誤的話
FlyTreeView控件的破解工作就結束了
四破解後的測試 啟動 Visual Studio
NET
打開FlyTreeView示例站點Samples目錄中的示例項目Samples
csproj
在解決方案資源管理器中將項目對NineRays
Web
UI
WebControls
FlyTreeView的引用刪除
將對破解後的NineRays
Web
UI
WebControls
FlyTreeView的引用添加進來
並順便將其添加到工具箱中
重新生成Samples項目後將系統日期向後調整數年
在浏覽器中浏覽示例站點
你會發現不再拋出異常
為最後確認破解是否成功
換另外一台機器使用ip地址或域名方式訪問該示例站點
一切正常
From:http://tw.wingwit.com/Article/program/net/201311/13249.html