怎样给代码加密,从莉莉丝的彩蛋说起

2015年03月25日 12:02 0 点赞 0 评论 更新于 2025-11-21 15:12

在这个世界上,我们常看到两种胜利:一举成功和绝地反击。作为旁观者,我们往往更喜欢后者,因为它足够刺激,让人倍感畅快!

近日,莉莉丝凭借一个小彩蛋获取了 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 将采用默认值,分别为 2dxLuaXXTEA。此外,我们还可以通过输入 -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 加固功能

此外,AnySDK 也具备基础的加密功能,它能通过框架、打包工具、服务端等多方面的加固处理,防止渠道包被破解和二次打包。

最后,让我们用一首诗来总结:

代码安全打油诗
植入彩蛋虽然好,防范未然是最高;
代码就像女盆友,照顾好了没烦恼;
lua 要编字节码,xxtea 加密是个宝;
加固软件也别落,专业工具就是好;
一切都在 cocos,保护安全任调教。

还没结束!最后的最后,cocos 君有个“小彩蛋”要送给大家:手把手教大家如何植入一颗自己的彩蛋。

世界上没有密不透风的墙,也没有永远无法被反编译的软件,即便强大如微软 Windows 也难以抵挡山寨商的觊觎。所以,像《刀塔传奇》那样加入彩蛋,为法律诉讼提供证据,未来可能会成为游戏的标配。

注:获取下述案例代码及资源请访问:http://upyun.cocimg.com/cocos/Brave.rar ,该代码需要在 Quick - Cocos2d - x 3.3 上运行。

启动案例游戏后,在背景的上下左右 4 个角各点一次,会弹出一个彩蛋界面。注意每个角只能点一次,多点少点都不行。