l

成都手游码农一枚
随笔 - 33, 文章 - 0, 评论 - 117, 引用 - 0
数据加载中……

[Unity3D]浅谈游戏代码保护

      记得14年底第一次使用Unity3D写了一篇总结,现在看到里面的观点发现又不是值得探讨的地方,看来这两年还是有进步,今天就针
对里面提到的代码保护做个简单的思考记录。
      首先项目达到一定规模、项目比较创新方竞争对手、项目严重依赖客户端代码那么代码保护还是尽量做,如果不是也没必须瞎折腾。

Unity常见代码保护机制:
1.重新编译mono,修改mono_image_open_from_data_with_name 函数。
      优点:原理简单、顺带还可以做DLL更新(android)。
      缺点:易破解、编译麻烦、可能存在版本问题以及兼容性问题。
2.同上,但是隐藏加密函数,这个可以在网上搜索下,是第一种方案的加强版。
      优点:比第一种略微安全、防小白静态分析。
      缺陷:同上。
3.同上,编译同时优化处理so。(参见常用so加固方案)
      优点:应该可以防住大部分人。
      缺点:同上外加难度大。
4.引入自己的辅助so库,hook mono_image_open_from_data_with_name 函数,自己的so库做好保护机制。
      优点:不编译libmono.so、防静态分析。
      缺点:安全性转移到自己的so库了。
5.il2cpp,(没钱的产品推荐的方法),其实多数产品使用il2cpp已经可以达到很好的保护了,只是不能热更dll所以很多android产品还是放弃了。
      优点:很难还原较完整的代码、加较好的性能。
      缺点:android热更以及android稳定性。
6.dll混淆,这个其实在使用mono情况下都应该做。
7.采用第三方加固,(有钱的产品大力推荐的方法),都赚钱了自己还是别瞎折腾了,当然有自己的研发部例外。

缺点展示:
1.mono编译的形式就不做太多介绍了,ida直接看Mono代码静态分析。
2.hook mono_image_open_from_data_with_name 这种方式看到王者荣耀等腾讯sdk是这么做的。
      (这个实验仅供学习展示了这种方式的一个小小的缺点)
      原理清楚了,破解也从原理入手,只要抢先hook mono_image_open_from_data_with_name ,那么代码还是乖乖的到你这来了。
            
3.il2cpp  直接上工具:https://github.com/Jumboperson/Il2CppDumper 可以导出头文件和代码偏移。

写在最后:当你意识到需要保护代码的时候恭喜你估计你的项目已经成了^-^。

posted on 2017-05-04 22:55 l1989 阅读(1090) 评论(0)  编辑 收藏 引用 所属分类: 游戏


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理