内容来源:2018年9月8日,网易高级安全工程师张本亮在RTC2018实时互联网大会上做了“网易安卓游戏保护实践”的演讲。IT大咖表示,作为独家视频合作伙伴,经过主办方和主讲人审核授权后发布。
阅读字数:2520 | 7分钟阅读
要获取来宾演讲视频和PPT,请复制http://t.cn/EzGu5fU并将其粘贴到浏览器中。
抽象的
本次分享主要介绍Android手机游戏面临的各种外挂问题,并针对unity3d和通用引擎游戏提出一些解决方案。
Unity手机游戏面临的安全风险
我们都知道手机游戏已经超越了终端游戏,成为市场份额最大的游戏类型。同时,围绕创业游戏的插件越来越多,插件作者的水平也有了很大的提高。
目前,如果一款游戏在没有任何提前保护的情况下发布到频道,被破解的概率要高得多。
外部工具
通过对数据的分析,我们发现使用插件工具的是比例最高、门槛最低的插件组。一个普通玩家不用任何编程经验就可以轻松使用。
游戏修改器在插件工具中最常用。修改器可以轻松将武器伤害从18%改为999.9%,攻击伤害提高数倍。类似的原理也可以达到无敌、秒杀、无限蓝、技能无CD等效果。所以修改器对游戏平衡伤害很大。
为了应对游戏安全防护水平的不断提高,各种插件技术也在不断发展。早期的游戏修改器也需要搜索修改内存,然后通过执行脚本直接修改即可。相应的Lua脚本可以在一些论坛、网站、聊天工具上购买。
通常如果要用修改器,手机需要Root。但是安卓版本越高,Root越难。所以有些修饰语提供了回避Root的功能。它的实现原理是与virtual 空工具结合使用,使修改器可以在具有Root权限的环境中运行。
除了修改器,还有一个插件形式——游戏加速器。在一些酷跑游戏中,游戏加速器可以通过设置加速倍数来控制游戏后台速度,从而达到加速或减速的效果。加速有两种,一种是手机加速器,通常自带游戏修改器的加速功能,另一种是模拟器加速。
模拟挂扣可能是一个使用频率不太高的插件,但虽然只是模拟点击,但可以实现自动游戏,可以刷各种金币和积分,对游戏平衡还是有很大影响的。
游戏破解版是比较暴力的破解方式,需要改变游戏本身,但也能获得可观的利润。破解版提供了很多非正常功能来吸引玩家,而且大部分采用月供购买方案,价格可能已经超过了很多游戏的ARPU值,所以这种形式不仅影响了普通玩家的体验,也给游戏收入和口碑造成了很大的损失。
破解风险
Unity提供了两种模式:mono虚拟机和il2cpp。从市场上捕获的游戏包来看,单声道脚本的形式相对较多。现在有很多工具可以把mono脚本的二进制形式转换成源代码,从而查看游戏的所有逻辑并进行修改。
使用libil2cpp.so和global-metadata.dat作为输入,可以使用II2cppDumper解析il2cpp脚本。最终的解析结果包括类名、函数名和相应的偏移量。
资源修改也被认为是一种插件。比如在射击游戏中,可以将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游戏。接下来我们介绍一些通用功能,任何游戏引擎都支持。可以根据游戏要求选择一个或多个。如反修改器、反加速器、文件检查、档案加密、反重新打包、反多次打开、反同步等。
除了常规版本之外,还有很多定制的修改器修改版本,专门采取反检测措施(随机化包名,子进程使用系统进程名等)。),所以常规流程检测无法发挥作用。易盾手游保护采用修改行为检测,可以杀死所有修改器,包括已知的和未知的。
上面提到的加速器分为两种:Android系统中的加速器和用于加速模拟器进程的加速器。第二种方法的原理和游戏结束加速的原理一样。本质上是对整个模拟器进行加速,安卓系统没有运行加速器。我们有这两种加速度的检测方案,也是针对行为而不是针对具体的加速器,具有更好的普适性。此外,在模拟点击方面,易盾手游防护采用流程和行为检测相结合的方式进行检测。
以上是今天的分享内容,谢谢!
1.《怎么做外挂 面对手游外挂横行,网易如何做到游戏保护》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《怎么做外挂 面对手游外挂横行,网易如何做到游戏保护》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1167349.html