那些年幹過的事(三)—系統序列號破解與防護

背景:

在推廣產品時經常需要搭建演示環境,而每次都需要經過繁瑣的序列號申請過程,很是麻煩。尤其是在着急確認某功能時,越是着急越容易出問題,經常需要發送好幾遍序列號。我實在受不了這種折騰,就想弄個產品演示版本,遠離繁雜耗時的lic申請。

目的:

破解產品序列號限制,不影響產品正常使用。

條件:

無產品源代碼;已知產品使用.Net 4.0開發;已知正常序列號爲一加密文件;

工具:

.Net Refletor、UE、IDA.Pro.Advanced.v6.1、MSIL微軟中間語言

推薦一篇文章

http://www.topzs.com/tech-box/you_qian_ru_shen_ren_shi_cil_de_ji_ben_gou_cheng_cil_cao_zuo_ma_su_ji_biao_cil_cao_zuo_ma_da_quan_su 由淺入深認識CIL的基本構成+CIL操作碼速記表+CIL操作碼大全速查(二)

方法步驟:

首先,通過reflector找到與序列號相關的程序代碼,這個比較好達到,明顯的標誌licenseValidate類;

第二,分析license驗證機制,尋找突破口。驗證流程爲讀取加密lic文件,解密文件,通過RSA算法進行序列號校驗,根據校驗結果返回驗證結果。這個校驗還是比較糙的,我們可以直接對校驗結果的返回值進行patch,也就是不管驗證結果是否正確,都返回true,這樣就繞開序列號限制了。

第三,使用IDA打開待破解的文件,按照在reflector看到的方法名進行定位,IDA中提供圖形化界面及對應的16進制聯動功能,可以很方便的幫我們定位到需要修改的16進制地址。IDA中顯示的是IL文件格式,我們通過走讀可以找到最終校驗返回的代碼位置,就是將返回false的地方修改爲返回true。這個地方需要使用《CIL操作碼速記表+CIL操作碼大全速查》,以便於我們理解程序。

第四,使用UE打開待修改文件,定位到我們要修改的位置,可以按照每行的16進制地址號定位,我們需要返回false對應的中間語言部分ldc.i4.0修改爲ldc.i4.1,對應到hex模式下就是將ldc.i4.0對應的操作碼爲16,修改爲ldc.i4.1對應的操作碼爲17。

第四,修改完成後直接保存,測試程序是否可正常運行。

感悟:

對於.net代碼需要在編譯時進行混淆或加殼防護,對序列號的校驗應該增強校驗方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章