| 关键词: 验证 存下 程序 编译 dll 一波 方法 资源 入口处 乱码 |
目录:
查壳 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哦) ![]() 作者:毒逆天 出处:https://www.cnblogs.com/dotnetcrazy |
| 本文出处: https://www.toutiao.com/i6704915088018506243/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|