面对手游外挂横行,网易如何做到游戏保护

内容来源:2018 年 09 月 08 日,网易资深安全工程师张本梁在“RTC2018 实时互联网大会”进行《网易 Android 游戏保护实践》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2520 | 7分钟阅读

摘要

本次分享主要介绍安卓手游面临的各种外挂问题,并针对unity3d和通用引擎游戏提出了一些解决方案。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

Unity 手游面临的安全风险

我们都知道目前手游已经超过端游,成为市场份额最大的一款游戏类型,与此同时围绕着手游的外挂越来越多,外挂作者的水平也有很大提升。

就目前看来,如果一款游戏在事先没有任何防护的情况下放到渠道上,被破解的概率要高很多。

外挂工具

分析数据后我们发现在外挂群体中使用外挂工具的比例最高,门槛也是最低的,一个普通玩家不需要任何编程经验就可以轻松使用。

在外挂工具中游戏修改器又是使用频率最高的,修改器可以轻易将武器伤害从18%改成999.9%,使得攻击伤害提升几十倍。类似的原理也可以实现无敌、秒杀、无限蓝、技能无 CD 等效果。因此修改器对游戏平衡性的危害相当大。

为应对游戏安全防护等级的不断提高,各种外挂技术也在持续发展中。早期的游戏修改器还需要搜索和修改内存,后面则直接通过执行脚本就能完成修改,在一些论坛、网站、聊天工具中都可以购买到相应的 Lua 脚本。

通常要想使用修改器,手机都需要 Root,不过安卓版本越高 Root 越难,所以有些修改器提供了免 Root 的功能,它的实现原理其实就是和虚拟空间的工具联合使用,让修改器运行在有 Root 权限的环境中。

除开修改器之外,还有一种外挂形式——游戏加速器。在一些酷跑类游戏中,游戏加速器可以通过设置加速倍数来控制游戏背景速度,以实现加速或减速效果。现有的加速主要分为两种,一种是手机加速器,通常游戏修改器都会附带加速功能,还有一种是模拟器加速。

模拟按键挂可能是使用频率不太高的外挂,不过虽然只是模拟点击,但是却实现自动游戏,可以刷各种金币、积分,对游戏平衡性还是有比较大的影响。

游戏破解版是一种更暴力的破解方式,需要对游戏本体改包,但也因此能获得可观的收益。破解版提供了很多变态功能来吸引玩家,大多采用月付的购买方案,价格上可能已经超过很多游戏的ARPU值了,所以这种形式不光影响普通玩家体验,也给游戏收入和口碑造成了很大损失。

破解风险

Unity提供了两种模式:mono虚拟机,il2cpp。从市面上抓取的游戏包来看,mono脚本的形式相对更多一些。现在有很多工具都可以将mono脚本二进制形式转换为源码,从而查看游戏的所有逻辑,并进行修改。

对于il2cpp脚本,以libil2cpp.so和global-metadata.dat作为输入,使用II2cppDumper即可进行解析。最终的解析结果包含类名、函数名、以及对应的偏移。

资源修改也算在一种外挂,比如在射击游戏中将Assetbundle资源里面的材质属性改为同透明即可达到透视的效果。除了资源被篡改的风险外还存在资源被竞品盗取、分析的风险。

另外某系游戏存档数据会以明文形式存在,如果这些数据不做服务端校验,或者是单机游戏的话,则存在巨大的安全风险,游戏的各种属性可以被直接修改。

协议破解是相对bug的方式,主要通过抓包软件分析协议,获取协议中包含的血量或攻击等数据传输。破解者先让玩家连接到其专门架设的服务器上,之后对玩家传输过来的数据进行解包并做出修改,再将修改后的数据返回到厂商服务器。

网易云盾安全解决方案

Unity mono DLL脚本加密

Mono_image_open_from_data_with_name是mono虚拟机的 C# 脚本加载函数,如果 C# DLL 脚本做了加密,就需要在该函数执行之前解密,Mono 会把解密之后的DLL在内存中留存一份拷贝。因此只要在这个函数里下断点或者Hook,就可以解密出原始DLL,不需要逆向加密算法。

第一代加密是直接对DLL文件进行加密,在Mono_image_open_from_data_with_name开始处解密,其解密门槛很低,只需使用修改器就可以解密。

第二代基于第一代加密的明显弱点,针对解密加强了防护。解密后PE头会被抹掉,使得修改器无法定位到脚本文字。这种解密门槛比较高,需要非常强的逆向开发能力才能破解。

第三代针对C#函数做加密,也就是方法级加密、动态解密,只有在函数执行的时候才解密,因此无论如何dump都无法从内存中获取到解密之后的完整第二文件。易盾目前采用第二代加第三代加密组合使用的方式来确保DLL脚本加密的安全强度。

手游通用保护功能

以上反破解方案主要是针对unity3d游戏,接下来会介绍一些通用功能,任何游戏引擎都支持,可以根据游戏需求选择一个或多个。比如反修改器、反加速器、文件校验、存档加密、防二次打包、防多开、反同步等等。

修改器除了常规版本外,还有很多定制修改版本,它们专门做了反检测措施(随机化包名、子进程使用系统进程名等),因此常规的进程检测无法发挥作用。易盾手游保护采用修改行为检测,可通杀所有修改器,包括已知和未知的。

前面提到过加速器分为两种,安卓系统内的加速器和对模拟器进程加速的加速器。第二种的原理和端游加速相同,实质是对整个模拟器做了加速,安卓系统内并没有加速器运行。我们对这2种加速都有检测方案,同样是针对行为而非特定加速器,通用性更好。另外模拟点击方面易盾手游保护使用了进程加行为检测结合的方式,对其进行检测。

以上为今天的分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极乐技术社区

小程序一周报 | 小程序插件功能上线/小程序广告正式上线

3月13日,小程序插件功能上线,插件是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在...

1500
来自专栏安恒信息

低温环境下读取Android加密数据

德国Erlangen大学研究人员找到了一种获取Android手机加密数据的新方法,利用“冷启动攻击”方式可以能从被锁定的Android手机中提取出...

2738

一些比非常不安全的密码认证更安全的认证方式

密码是全球用户认证的最常见方式,其使用率在过去的十多年来一直在缓慢下降。比尔盖茨在2004年的RSA会议上声称,“毫无疑问,随着时间的推移,人们对密码的依赖会越...

933
来自专栏花叔的专栏

“公众号数据助手”小程序真的出现了

额,老早之前花叔就想做一个公众号管理相关的小程序,然而微信今天就推出了一个类似的小程序,好了,我不用做了。 回归正题,介绍一下这个小程序吧,通过长按以下二维码能...

46111
来自专栏IT大咖说

如何玩转Android物联网开发,这些必须知道

内容来源:2018 年 6 月 28 日,中移物联网 Android开发高级工程师程磊在“droidcon上海2018安卓技术大会”进行《当安卓遇到物联网》演讲...

2K2
来自专栏腾讯社交用户体验设计

手机QQ里的注册那些事儿

2553
来自专栏何俊林

关于直播,所有的技术细节都在这里了(一)

网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看,主播不满足于单向的...

2456
来自专栏大宽宽的碎碎念

系统的请求量突然增大数倍怎么办?面试中怎么回答真实世界的流量问题最后的话

59616
来自专栏FreeBuf

走近科学:谷歌工程师NeelMehta是如何发现心脏滴血漏洞的

Heartbleed计算机安全漏洞是由谷歌工程师NeelMehta发现的,一向不愿意接受媒体采访的他,今日首次向媒体说出了他是怎样发现这一严重漏洞的;以及为什么...

2048
来自专栏程序员互动联盟

程序员都用什么编写程序?

说到编写代码的工具说多了多如牛毛,经典的来回也就是几个,现在笔者根据多年的经验列举下常见的编写程序工具。 vim+emacs vim是在linux编写代码的利器...

3057

扫码关注云+社区

领取腾讯云代金券