-
混淆代码,禁止调试
-
弱联网加密校验
-
增加彩蛋
2弱联网校验混淆代码只能是让“盗码者”不能阅读源码,做二次开发,但不能解决他们直接破解资源,换皮打包的问题。目前还有一种大多数单机使用的方案:弱联网&资源校验。
1弱联网将我们的游戏关键数据保存到服务器上,比如关键配置、用户存档,或者是向服务请求加密验证,在游戏中使用自己的平台 appid 作为密钥等手段。通过弱联网,就算游戏客户端代码、资源被盗也无法正常游戏,也能起到保护作用,是一种比较实用的方案。2资源校验如果我们没有服务器怎么办呢?这里讨论一种方案供大家参考。在工程中保存一个空配置文件,开发模式时不用读取它。发布 Release 构建时,对生成的关键图片资源、JS代码等生成 MD5 指纹,替换到构建资源中。在引擎加载资源过程中,通过系统接口获文件对象,计算文件 MD5 做比较,如果 MD5 不匹配则不进行游戏。下面是晓衡在网络上找一个 browser-md5-file 的模块,效果如下: browser-md5-file 它是一个 NPM 模块,使用很方便这里是 Github 地址:https://github.com/forsigner/browser-md5-file不过这里有一个难点,如何通用 Creator 引擎或其它 H5 引擎获取到资源文件的 File 对象呢?而且在不同平台,比如普通 H5 、微信小游戏、头条小游戏 环境不同还需要进一步研究。除了微信小游戏、H5游戏,也有不少开发者使用引擎打包 iOS、Android 原生游戏,如果不做一些保护手段,直接将安装包中的res、src导出是非常容易的事情。读取原生资源文件相对简单,使用引擎提供的 jsb.fileUtils.getDataFromFile 即可。
3彩蛋”彩蛋“方案是一位伙伴想起曾经莉莉丝的《刀塔传奇》反编译案提出来的,看下图: 案件情况如下:
《刀塔传奇》开发商莉莉丝在美国加州向法院提起对《Heroes Charge》开发商uCool的诉讼,斥其侵权,但由于玩法不被保护,所以莉莉丝的胜诉希望并不大。但莉莉丝任选择与 uCool 对簿公堂,可以想见是掌握了决定性证据,现在这个证据终于公布。莉莉丝在Facebook官方主页发布了一段视频,这则视频内容表明了uCool所推出的游戏《Heroes Charge》反编译《刀塔传奇》代码的一个关键性证据。在视频中,演示者从App Store登陆,下载了《Heroes Charge》的App,然后打开了App。演示者登陆游戏后,点击进入了“远古神庙”关卡,然后开始点击屏幕。在多次点击屏幕之后,赫然跳出了一个窗口。窗口上写着“LILITH GAMES ©”。在《Heroes Charge》的游戏中出现了《刀塔传奇》开发商莉莉丝游戏的商标,这显然并不正常。彩蛋是不得已的最后一手,当我们的游戏发现已经被盗时,向平台提出申诉,彩蛋将是一个重要的申述证据。
4小结随着微信小游戏日趋普及,开发商厂和个人开发者也大量涌入, 游戏同质化严重,不少小游戏厂商或个人将一套游戏代码经过简单换皮上线,更有投机者直接反编译别人的游戏变成自己的产品上架。微信平台以及其它小游戏平台,为了打击这种现象,会对代码相似度进行审查,超过一定比例相似度的代码会被判定为“代码包侵权”,将不能通过审核。因此个人开发者上线小游戏时,建议对代码进行混淆,以免被人拿到引擎直接输出的代码混淆后上线,他将有机会逃过相似度审查。晓衡也是一名普通的个人开发者,深知个人开发者的艰辛。游戏被盗,作为个人是很难与一些不良公司抗衡的,更重要的是它会极大地打击我们学习和创作的动力。上面介绍了三种保护游戏的方案,抛砖引玉,相信大家还有更多更好的方法,欢迎大家留言讨论或来公众号分享你的经验。