现在的游戏项目如果达到一定规模、项目比较创新方竞争对手、项目严重依赖客户端代码那么代码保护还是尽量做,如果不是也没必须瞎折腾。

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 可以导出头文件和代码偏移。

Unity3d游戏代码保护的更多相关文章

  1. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  2. Unity3D游戏在iOS上因为trampolines闪退的原因与解决办法

    http://7dot9.com/?p=444 http://whydoidoit.com/2012/08/20/unity-serializer-mono-and-trampolines/ 确定具体 ...

  3. 第一章-第二题Unity3D游戏引擎相关--By林培文

    1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的?  他们的目标都是盈利么?  他们的目标都是赚取用户的现金么?还是别的? 2004年,Unity3D诞生于丹麦哥本 ...

  4. 【安卓安全】ARM平台代码保护之虚拟化

    简介:代码的虚拟化即不直接通过CPU而是通过虚拟机来执行虚拟指令.代码虚拟化能有效防止逆向分析,可大大地增加了代码分析的难度和所需要的时间,若配合混淆等手段,对于动静态分析有着较强的防御能力. 背景: ...

  5. 将Unity3D游戏移植到Android平台上

    将Unity3D游戏移植到Android平台是一件很容易的事情,只需要在File->Build Settings中选择Android平台,然后点击Switch Platform并Build出ap ...

  6. unity3d游戏无法部署到windows phone8手机上的解决方法

    今天搞了个unity3d游戏,准备部署到自己的lumia 920上,数据线连接正常,操作正常,但是“build”以后,始终无法部署到手机上,也没有在选择的目录下生产任何相关文件.(你的系统必须是win ...

  7. Unity3D游戏UI开发经验谈

    原地址:http://news.9ria.com/2013/0629/27679.html 在Unity专场上,108km创始人梁伟国发表了<Unity3D游戏UI开发经验谈>主题演讲.他 ...

  8. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  9. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

随机推荐

  1. qq群的表设计探究

    2018年3月21日  课题组管理就如qq的群是一样的,课题组有课题组组长:qq群有群主:课题组有组员:qq群有群人员 对于一个课题组来说,组长可以对课题组进行修改,组员只能看得见,但是不能修改.所以 ...

  2. delphi保存和提取ini文件信息

    procedure TLoginForm.FormShow(Sender: TObject);var ini:TIniFile; name:string;begin //实现动态提取数据库的登录用户名 ...

  3. B. Email from Polycarp

    B. Email from Polycarp time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  4. Hbase排错

    1.执行MR任务报Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads():?subprocess failed with c ...

  5. HYSBZ - 1588 营业额统计 (伸展树)

    题意:营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营 ...

  6. POJ 2785:4 Values whose Sum is 0 二分

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 18221   Accep ...

  7. 中文文本分类之CharCNN

    文本分类是自然语言处理中一个非常经典的任务,可用的模型非常多,相关的开源代码也非常多了.这篇博客用一个CNN模型,对新闻文本进行分类. 全部代码有4个模块:1.数据处理模块(命名为:cnews_loa ...

  8. 01-JAVA语言基础——课程作业1—编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

    1.题目:编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 2.程序设计思想: 通过运行配置输入数字后,其保存类型为String类型,因此需要采用Integer.valueOf(arg)将 ...

  9. mcu运行时间估算

    昨个伙计问我他那个板子的程序运行时间估算问题… 现在说一下估算的思路.首先确定有几个点,板子的主频.时钟周期,机器周期. 首先由主频f得到一个时钟周期为1/f. 再者时钟周期与机器周期有一个比例关系, ...

  10. [LeetCode] 932. Beautiful Array 漂亮数组

    For some fixed N, an array A is beautiful if it is a permutation of the integers 1, 2, ..., N, such ...