欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

修改System.dll绕过.net的License

修改System.dll绕过.net的License

    前两天同学给我发了个.net编写的cpu优化的程序,由于注册机制无法正常使用,他寻思看我能不能有什么解决办法。以前搞过一些简单的crackme,但对.net程序的机制还很陌生。破解过程当中遇到了很多问题,发个帖子叙述一下具体情况,当中一些遗留问题也希望能得到达人们的指点~
  
 
    解压后就这些文件,DLLInject是主程序,HID是机器码文件生成用的,那个dll文件至今不知道做什么用的(猜测可能是优化CPU时用到)。直接运行DLLInject会弹出需要注册的对话框。
  
 
    这种对话框乍看来只有许可证文件存在程序才能正常运行,点击OK程序就退出了。后来才查到这样的验证机制是.net本身提供的System.ComponentModel.LicenseXXX。.net许可证机制提供了框架,具体的许可证校验算法肯定还是作者自己实现的,以配合硬件机器码完成验证。
  
 
    用Reflector无法正常载入,看来文件还被特意修改过啊,解决方法:http://hi.baidu.com/dreamzgj/blog/item/3c0bc18e243592f0513d928a.html。不过马上又出现了新的错误:Reflector Error:Module '…' contains zero or multiple module definitions。解决方法:http://hi.baidu.com/dreamzgj/blog/item/5cd5f1456fedc388b2b7dc8a.html。都是同一个人写的文章。这回Reflector载入虽然还是提示数组越界的错误(看来还有其他被修改的小地方),名称也都被混淆过(另外用StrongNameRemove根本不能正常载入该程序),但起码可以看个大致结构了,entrypoint函数(S9oGE4FMD)还是无法显示。
  
 
    其他很多函数内容都是形如下式,都是一些看起来毫无作用的垃圾信息。估计是干扰函数或者是运行时动态修复吧。
  
 
    用ILDASM把代码导成il形式看入口函数终于能正常查看了,也是为数不多的能看到一些语句的函数(其他函数都是返回个null值就没了)。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功