記一次Net軟體逆向的過程(經典)

鯤逸鵬發表於2019-06-21

查殼

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哦)

相關文章