记一次Net软件逆向的过程(经典)
查壳
1.先看下目录结构:
2.查下,是什么语言 ==> Net的,那不用说了,肯定能破解(毕竟是老本行嘛~)
混淆与反混淆
3.dnSpy打开后发现很多变量是乱码
4.用de4dot跑一波
5.生成了一个反混淆过的exe
程序调试
6.改名后打开,乱码问题解决
下断
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哦)