前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我应该拿什么来拯救你,我的游戏?

我应该拿什么来拯救你,我的游戏?

作者头像
张晓衡
发布2019-11-14 14:52:36
1.1K0
发布2019-11-14 14:52:36
举报
文章被收录于专栏:Creator星球游戏开发社区

前段时间,晓衡加入的一个小游戏个人开发者群突然,炸锅了!群里有两位伙伴开发的小游戏,一个破解上架头条,一个破解打成 Android 包。

过程中大家也积极讨论了一些防破解的方法,在征得到大家的同意后,我将讨论的方案整理了出来,希望对正在做小游戏的开发者们有所帮助或启发,如果你有更好的方案也欢迎留言讨论。

  • 混淆代码,禁止调试
  • 弱联网加密校验
  • 增加彩蛋

1

混淆代码,禁止调试

对于 JavaScript 代码来说,最简单是对代码进行混淆加密。当有不法分子拿到代码后,使他不能直接阅读,进行二次开发。

晓衡曾经做过一个儿童教育应用,使用 javascript-obfuscator 做混淆加密,同时开启禁止调试功能,效果如下:

混淆出来的代码,样子变成这样:

这里是 javascript-obfuscator 的 github 地址:

https://github.com/javascript-obfuscator/javascript-obfuscator

除了使用 javascript-obfuscator 提供的命令行工具,它还支持 Grunt、Gulp、Webpack 等插件方式,具体使用方法请参考官方教程,这里就不赘述了。

但是对于 JavaScript 项目,对方接将我们的游戏代码、资源一起搬走,大不了不做二次修改,将图片一换仍然可以运行,没有丝毫招架之力!

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

小结

随着微信小游戏日趋普及,开发商厂和个人开发者也大量涌入, 游戏同质化严重,不少小游戏厂商或个人将一套游戏代码经过简单换皮上线,更有投机者直接反编译别人的游戏变成自己的产品上架。

微信平台以及其它小游戏平台,为了打击这种现象,会对代码相似度进行审查,超过一定比例相似度的代码会被判定为“代码包侵权”,将不能通过审核。因此个人开发者上线小游戏时,建议对代码进行混淆,以免被人拿到引擎直接输出的代码混淆后上线,他将有机会逃过相似度审查。

晓衡也是一名普通的个人开发者,深知个人开发者的艰辛。游戏被盗,作为个人是很难与一些不良公司抗衡的,更重要的是它会极大地打击我们学习和创作的动力。上面介绍了三种保护游戏的方案,抛砖引玉,相信大家还有更多更好的方法,欢迎大家留言讨论或来公众号分享你的经验。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Creator星球游戏开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档