记一次Net软件逆向的过程(经典)

.NET
289
0
0
2022-04-14

目录:

  • 查壳
  • 混淆与反混淆
  • 程序调试
  • 下断
  • 反编译

查壳

1.先看下目录结构:

记一次Net软件逆向的过程(经典)

2.查下,是什么语言 ==> Net的,那不用说了,肯定能破解(毕竟是老本行嘛~)

记一次Net软件逆向的过程(经典)

混淆与反混淆

3.dnSpy打开后发现很多变量是乱码

记一次Net软件逆向的过程(经典)

4.用de4dot跑一波

记一次Net软件逆向的过程(经典)

5.生成了一个反混淆过的exe

记一次Net软件逆向的过程(经典)

程序调试

6.改名后打开,乱码问题解决

记一次Net软件逆向的过程(经典)

下断

PS:刚开始你单步跟着后面走走`F11`,遇到系统方法就`F10`跳过,或者导航返回一步`←`,在跳进方法的下一行设置个断点`F9`,然后继续运行就好

7.在程序入口处下个断

记一次Net软件逆向的过程(经典)

8.单步走一波

记一次Net软件逆向的过程(经典)

9.F11到了程序入口处

记一次Net软件逆向的过程(经典)

10.核心点

记一次Net软件逆向的过程(经典)

11.单步跟进去后发现程序动态加载了一个dll(至于我为什么知道是验证dll,请继续往后看)

记一次Net软件逆向的过程(经典)

12.在方法尾部,发现有个返回的bool值,大胆推测下,就是关键性的验证了

记一次Net软件逆向的过程(经典)

13.验证框

记一次Net软件逆向的过程(经典)

14.顺便输入点东西(激活码长点)

记一次Net软件逆向的过程(经典)

15.激活窗口关闭后会返回一个验证失败的bool值

记一次Net软件逆向的过程(经典)

16.调试修改看看

记一次Net软件逆向的过程(经典)

17.调试已绕过,但是打开的时候闪退

记一次Net软件逆向的过程(经典)

18.说明修改不彻底,后面程序还是通过ClassMain.boolrun来判断

记一次Net软件逆向的过程(经典)

19.那就编辑一下,发现特殊符号编译不通过

记一次Net软件逆向的过程(经典)

20.那就换个新的突破点

记一次Net软件逆向的过程(经典)

21.发现验证方法,那就编辑下

记一次Net软件逆向的过程(经典)

22.废掉验证,然后编译

记一次Net软件逆向的过程(经典)

23.修改完毕

记一次Net软件逆向的过程(经典)

24.保存下dll

记一次Net软件逆向的过程(经典)

25.大部分软件这一步就搞定了,但是这边还是不行

记一次Net软件逆向的过程(经典)

PS:老版本这一步就搞定了,新版本会始终从资源文件中释放dll

记一次Net软件逆向的过程(经典)

反编译

26.那就继续上大招:Reflector打开

记一次Net软件逆向的过程(经典)

27.去资源列表里面找dll

记一次Net软件逆向的过程(经典)

拖进dnspy发现,倒数第四个就是的了

记一次Net软件逆向的过程(经典)

28.那感情好啊,用我们之前调试生成的破解版dll替换下资源项的值

记一次Net软件逆向的过程(经典)

29.用修改后的dll替换旧的资源值

记一次Net软件逆向的过程(经典)

30.reflexil保存下

记一次Net软件逆向的过程(经典)

31.保存替换

记一次Net软件逆向的过程(经典)

32.ok了(根目录木有vip那个dll哦)

记一次Net软件逆向的过程(经典)

作者:毒逆天

出处:
https://www.cnblogs.com/dotnetcrazy