-
-
[原创]Unity3D游戏引擎Android下mono模式源码保护升级版
-
发表于:
2019-1-28 09:51
8814
-
[原创]Unity3D游戏引擎Android下mono模式源码保护升级版
对于Unity3D源码的保护前面也讨论过了一种自定义格式的方式(Unity3d保护level1)。现在继续分享一下一种自己公司保护用的方式--自定义opcode,希望对做游戏安全保护的童鞋能起到一定的启发作用。
首先需要对Unity3D的jit机制行进初步的了解,具体的可以移步gslab(Unity3D jit机制分析)。在对mono的jit编译过程有清晰的认识后,便可进行下面的自定义opcode的操作了。
这里先简单的理一遍Unity3D jit的编译过程:
在实际的编译中调用了一个关键的函数mono_method_to_ir(位于mono\mini\method-to-ir.c文件中),这里谈论的opcodde自定义,就是从这个函数入手的。
*ip 指向的是opcode,opcode的定义位于mono\cil\opcode.def中,形式如下所示:
其中关键的是第一位的opcode名称和倒数第二位的十六进制index,这里所做的保护是将第一位名称和index进行随机打乱,这里就需要自己实现一个映射表,并且去重新实现mono_method_to_ir函数中的 switch(*ip)里面的实际功能了。
这里只做简单的描述,需要自己动手去分析mono的源码和实现一下。在自己定义了libmono.so以后,需要加入Android so文件的保护,不然自定义的libmono.so被别人一分析很容易就能被分析出自定义的那个opcode表。同时也需要在游戏后台进行反外挂数据风控的部署,游戏的保护不仅仅在于前端客户端的保护,在后端的风控保护与前端客户端的保护相互配合才能更好的保护游戏。这些都是个人愚见,望轻喷。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-1-28 09:52
被nsec编辑
,原因: 代码整理