查殼
1.先看下目錄結構:
2.查下,是什么語言 ==> Net的,那不用說了,肯定能破解(畢竟是老本行嘛~)
混淆與反混淆
3.dnSpy打開后發現很多變量是亂碼
4.用de4dot跑一波
5.生成了一個反混淆過的exe
程序調試
6.改名后打開,亂碼問題解決
下斷
PS:剛開始你單步跟着后面走走`F11`,遇到系統方法就`F10`跳過,或者導航返回一步`←`,在跳進方法的下一行設置個斷點`F9`,然后繼續運行就好
7.在程序入口處下個斷
8.單步走一波
9.F11到了程序入口處
10.核心點
11.單步跟進去后發現程序動態加載了一個dll(至於我為什么知道是驗證dll,請繼續往后看)
12.在方法尾部,發現有個返回的bool值,大膽推測下,就是關鍵性的驗證了
13.驗證框
14.順便輸入點東西(激活碼長點)
15.激活窗口關閉后會返回一個驗證失敗的bool值
16.調試修改看看
17.調試已繞過,但是打開的時候閃退
18.說明修改不徹底,后面程序還是通過ClassMain.boolrun來判斷
19.那就編輯一下,發現特殊符號編譯不通過
20.那就換個新的突破點
21.發現驗證方法,那就編輯下
22.廢掉驗證,然后編譯
23.修改完畢
24.保存下dll
25.大部分軟件這一步就搞定了,但是這邊還是不行
PS:老版本這一步就搞定了,新版本會始終從資源文件中釋放dll
反編譯
26.那就繼續上大招:Reflector打開
27.去資源列表里面找dll
拖進dnspy發現,倒數第四個就是的了
28.那感情好啊,用我們之前調試生成的破解版dll替換下資源項的值
29.用修改后的dll替換舊的資源值
30.reflexil保存下
31.保存替換
32.ok了(根目錄木有vip那個dll哦)