最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
怎样给代码加密,从莉莉丝的彩蛋说起
在这个世界上,我们常看到两种胜利:一举成功和绝地反击。作为旁观者,我们往往更喜欢后者,因为它足够刺激,让人倍感畅快!
近日,莉莉丝凭借一个小彩蛋获取了 uCool 起诉案的关键证据(uCool 是山寨版《Heroes Charge》的开发商),不费吹灰之力就打得对手节节败退,这一事件一时成为手游界的热门话题。
众所周知,《刀塔传奇》基于 cocos 引擎开发,一经推出便大获成功。各种山寨版本也在海外市场迅速蔓延,uCool 甚至为《Heroes Charge》投入千万资金抢购“超级碗”广告时段。面对山寨版盛行的局面,此次莉莉丝依靠“木马计”成功扭转局势。但俗话说得好,“亡羊补牢,不如防患于未然”。
今天,cocos 君将为大家传授“三步加密法”,为代码层层加固,给予其全方位的保护。
1. 拒绝纯裸奔,莫忘字节码
开发者应坚守原则,拒绝代码“裸奔”!所有开发者请跟我念:
lua 要编译成字节码,不要白白送人!
lua 要编译成字节码,不要白白送人!
lua 要编译成字节码,不要白白送人!
除非你真的懒得动手……
方法其实很简单,在 cocos 里调用 cocos luacompile 命令,就能轻松将源码编译成字节码。
(命令行)
(duang~效果出来啦!)
2. xxtea 加密是个宝,谁用谁知道
完成字节码编译后,我们要继续为代码升级安全防护。
Cocos2d - x v3.2 版本已经集成了 xxtea 加密功能。开发者只需在命令行使用 cocos luacompile 并加上 -e 参数,就能通过 xxtea 加密方式提升代码的安全等级,其效果显著,谁用谁知道!
输入 -e True 是为了开启 xxtea 加密。若不再输入其他参数,xxtea 加密的 key 和 sign 将采用默认值,分别为 2dxLua 和 XXTEA。此外,我们还可以通过输入 -k 和 -b 来自定义 key 和 sign。
下面就是见证奇迹的时刻啦!
(duang~代码一秒变乱码!)
具体使用方式可查看这篇教程:Cocos_luacompile
这里 cocos 君要给大家一个小贴士:自 2015 年 2 月起,苹果官方要求所有 iOS 新应用必须支持 64 - bit,而当前 Luajit 稳定版本还不支持 ARM64。所以,为了让一套 lua 脚本能同时在 32 位和 64 位的 iOS 设备上运行,我们可以使用 cocos luacompile -s src_dir -d dst_dir -e True -k sdfds -b affd --disable-compile True 指令对 Lua 源文件进行 xxtea 加密,这样文件就能在两种架构的 iOS 设备上正常运行。
(命令行)
(毫无源码痕迹,就是这么任性!)
3. 加固软件也别落,专业工具就是好
除了上述两种方法,我们还可以使用专业工具为代码构建一层 360 度的防护网。
目前,Cocos Store 与多家移动应用安全服务商展开合作,提供了各种实用的第三方工具。这些工具能在不影响用户体验的前提下,对游戏应用进行加固保护,防止逆向工程破解,杜绝恶意篡改、注入代码、窃取创意、内存修改等威胁,让游戏源码如同存放在瑞士银行地下保险箱一样安全。
此外,AnySDK 也具备基础的加密功能,它能通过框架、打包工具、服务端等多方面的加固处理,防止渠道包被破解和二次打包。
最后,让我们用一首诗来总结:
代码安全打油诗
植入彩蛋虽然好,防范未然是最高;
代码就像女盆友,照顾好了没烦恼;
lua 要编字节码,xxtea 加密是个宝;
加固软件也别落,专业工具就是好;
一切都在 cocos,保护安全任调教。
还没结束!最后的最后,cocos 君有个“小彩蛋”要送给大家:手把手教大家如何植入一颗自己的彩蛋。
世界上没有密不透风的墙,也没有永远无法被反编译的软件,即便强大如微软 Windows 也难以抵挡山寨商的觊觎。所以,像《刀塔传奇》那样加入彩蛋,为法律诉讼提供证据,未来可能会成为游戏的标配。
注:获取下述案例代码及资源请访问:http://upyun.cocimg.com/cocos/Brave.rar ,该代码需要在 Quick - Cocos2d - x 3.3 上运行。
启动案例游戏后,在背景的上下左右 4 个角各点一次,会弹出一个彩蛋界面。注意每个角只能点一次,多点少点都不行。