GameRes游资网

 找回密码
 立即注册
返回列表
查看: 91|回复: 0

H5游戏的致命之殇

[复制链接]
发表于 2018-11-6 20:01:18 | 显示全部楼层 |阅读模式
游戏程序
平台类型:  
程序设计:  
编程语言:  
引擎/SDK: H5/Html5 
H5一门可以说刚起步,但却已经波折发展好几年的的互联网技术语言,而其中被用于游戏开发却是近两年的事情,收益与国几大H5引擎开发商的研发加持机,近两年H5游戏风头正盛,且爆款屡见。在行业欣欣向荣之际, 同样作为一个游戏开发者我不得不在此给行业稍微降温下。

后边我将针对目前H5作为游戏研发很容易忽略的致命性漏洞问题给各位还在H5游戏开发的伙伴们进行下分享。
虽然相对于app应用而言,H5游戏目前可以说是简陋了点,游戏研发梯队与U3D比较而言更是差得不是一丢丢。。。稍微有点跑题了。

言归正传,H5游戏 的致命之殇其实也是其他游戏的致命之殇。那就是游戏机程序的安全性问题。
只是目前的H5游戏相对其他语言而言更加脆弱而已,但不可否认H5游戏正悄悄的走向了掘金之路。近两年流水过亿的H5游戏已经有好几款了,其中几年流水过数亿的少数绝对爆款H5游戏也正在酝酿发育中。

但越是在钱途无限的喜悦中,大家更应该提前发觉到其中的危机。

H5游戏 的安全性问题首先暴露为素材资源机代码的公开性。
总所周知JS是即使编译式语言,其代码在浏览器上是明码公开的,随便找一个chrome内核的浏览器打开一个H5游戏按下F12 进入到调试面板,游戏的执行代码便可一览无遗更不用说JS代码的句柄注入,甚至常规点的pc浏览器都可以随便对市面上的H 5游戏进行实时句柄断点调试。对于有经历过游戏外挂的开发者而言应该会十分清楚,代码注入这种高危基本无法防御的外挂制作方式应该深有体会。

对于一般人而言断点调试或者代码注入而言可能稍有门槛,但是对于游戏资源的盗窃操作,那却几乎没有开发经验的小白菜鸟都能轻松盗取。
QQ图片20181106015118.png


上图就是近期传闻某流水过亿的H5游戏的整站包括所有前段代码下载 (....... 最近广告老火了,就先拿来练手了,某宝强代言的一款叫XX破晓的无营养单击传奇游戏 ........)

下载的资源只做分享学习
链接:https://share.weiyun.com/5uDcZhB
密码:5vjetq



当然要做到整站下载并不是是个小白就能做到,但是根据浏览器的下载请求,把加载过的图片素材或者运行的想过js 脚本文件下载下来那是几乎不费力气的。(至于整站下载其实得益于某JS引擎的傻瓜式漏洞。后续将继续为大家分享)。

QQ图片20181106020458.png
眼睛如果好使的,大家应该看到上图另一款游戏,在F12调出调试面板后右会边的一些日志输出或者报错都是一览无遗的。(看了调试信息不得不替这家这家游戏公司感到忧伤呢。)。当然类似的问题几乎市面上所有H5游戏都存在。 对于这么详细的信息,外挂制作者而言就最喜欢了。不得不说H5 的游戏天生就是在裸奔。


当然你可能会说我们的H5游戏并不在PC上运行,目前只能在手机上才能打开,我只能说,别太傻太天真了,既然是网络游戏必不可少的
一般都会将游戏站点资源缓存到CDN服务器上,只要找到了你的CDN地址再加上类似Layabox这类h5引擎的傻瓜是后门机制,配合一些类似(Thor)手机抓包工具的使用,游戏的整站资源下载简直是分分钟的事情,就像上边第一张图的那游戏那样,通过抓包工具捕获到用于记录游戏资源版号allfiles.txt资源版号文件。要扒掉layabox这类H5手游的整站资源简直就是喝水一样简单的事情。
抓包软件目前市面上有很多,而且功能也很强大,除了在手机端安装抓包工具外,我们也可以使用PC端的抓包工具通过设置代理,开放我ifi的方式拦截手机发送的数据包 其中Fiddler 就是有类似的功能,而且使用简易,具体的设置教程可参考下边的文章。
Fiddler下载地址

PC如何使用Fiddler 抓取手机数据包教程 --传送门


w.png

上述设置完成后就可以在PC的Fiddler上抓取手机访问的各种数据包了。同类微信朋友圈的图片或者一些隐藏但加载了的图片也就可以随意
保存了。

不过不同的H5游戏开发者对程序的安全性有不同的应对能力。因此并不一定说就能如如我之前那样轻松将某游戏的站点资源整站下载下来但是配合抓包工具的使用,对于攻破H5游戏却是很有帮助。

分享完抓包方法后,下边继续讲解下如何利用浏览器的开发者工具来哦进行会调试断点游戏的执行逻辑。因为H5游戏基本基于JS语言进行运行,而先前也过JS脚本在浏览器上是明码运行的,虽然layabox,白鹭等H5游戏引擎在发布时提供了简单的混淆发布版本,但是那也仅仅是IDE在开过过程中的实时的断点调试功能。因为大部分H5游戏开发者都较为习惯在浏览器上进行直接的调试开发。那也就为H5游戏的安全问题留下了不可擦拭的痕迹。比如开发过程中开发者往往很习惯的在代码里添加一些调试输出信息,


111.png

如图这类调试及保存信息也是对H5游戏的破解或者注入提供了很大的便利,只要在源码模式下,通过字符串搜索,就很容易可以定位到输出脚本所在的位置,然后通过断点功能,就可以根据实际的需要进行代码的定位及破解的验证。(尽管如此毕竟混淆还是可以一定程度阻挠部分小菜鸟开发者进行进一步的破解的,但最怕就是一些开发者为了调试省事把为混淆的编译版本直接丢到游戏的资源站点上,犯下如此的低级错误被别人破解也不能怪谁了。比如一开始的那款游戏,从下载的整站资源看来他们不仅将为混淆的代码版本丢到了资源站点,而且貌似还通过不同的文件命名方式进行了不同脚本的版本控制。)


2222.png QQ图片20181106192209.png

如果不幸的你的游戏也有这样的情况,那请务必尽快修复。不然作为破解者很简单的就可以根据游戏的输出信息或者代码的名称规则猜测到你们游戏的想过通信协议逻辑的具体实现地方了,不要认为H5游戏也是基于webSocket 通信会相对安全,因为只要知道了具体的socket通信协议流程,破解者就可以通过自己编写socket链接去链接你们的游戏服务器,从而绕开你们游戏的界面及逻辑限制,编写相应的外挂程序了。(对于查找webSocket的通信协议入口,其实也很简单比如通过查找关键的方法名或者类似链接成功等输出信息就可以简单找到了。)


当然对于部分高级的外挂制作者而言,这并不是什么复杂的事情,对于高级游戏外挂制作者而言,他们更多的会使用脱壳注入方式直接覆盖掉原来游戏的句柄逻辑。只要你的游戏被这类开发者盯上了基本也就完了。而像H5这类JS语言游戏,要制作壳就更加简单了,毕竟这类游戏本质上还是一个页面。任何稍有能力的开发者或者使用现有的制壳工具,把游戏的主程序的页面嵌套进去,再通过注入覆盖方法修改原游戏的逻辑,都不是很复杂的事情。这里就不做过多熬熬述了。毕竟本文只是告诫性的技术分享文章。







您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|稿件投递|广告合作|关于本站|GameRes游资网 ( 闽ICP备05005107-1 )

GMT+8, 2018-11-18 18:49

快速回复 返回顶部 返回列表