zoukankan      html  css  js  c++  java
  • 如何实现360度的手游安全防护?网易云易盾专家分享最新实践

    本文来自网易云社区


    自2016年以来,手游行业迎来全面爆发。大量资本、创业者的入局,让整个手游市场越发热闹,手游红利的挖掘也越发深入,各种游戏层出不穷。但是随之而来的各种安全问题也越来越多,不仅对手游的使用体验和口碑产生了恶劣的影响,甚至还会导致生死存亡的窘境。

    那么,究竟如何才能构建一体化的手游安全防护?如何才能实现手游市场的良性发展?


    时下的Unity手游面临着复杂安全风险

    手游通常会面临着游戏修改器、游戏加速器、模拟按键挂、游戏破解版等外挂工具风险。

    游戏修改器:使用修改器能够将游戏伤害倍率从18%提升到999.9%,使得攻击伤害增强了几十倍。而且类似的原理还可以实现无敌、秒杀、无限蓝、技能无CD等效果,因此修改器对游戏平衡的危害相当大。常用修改器包括烧饼修改器、八门神器、GameGuardian(GG修改器及其各种修改版)。其中GG修改器流行于即时对战类游戏,比如热门的吃鸡游戏。


    • 游戏加速器:加速器除了可以加速,还可以减速。使用烧饼加速器的效果,背景速度会随加速倍数加大而提高。它分为2种类型,一是手机加速器,比如烧饼加速器、GG加速器;二是模拟器加速器,比如我们熟知的天天加速器。

    • 模拟按键挂:虽然只是模拟点击,但却可以做到自动游戏,可以刷各种金币、积分,对游戏平衡也会有比较大的影响。常见的模拟按键挂包括触动精灵、触摸精灵、按键精灵、叉叉助手、游戏蜂窝等。

    • 游戏破解版:破解版提供了很多变态功能来吸引玩家,比如通过专门破解游戏售卖来进行盈利,月付150元就能超过很多游戏的ARPU值了。这样破解版的存在会严重影响普通玩家体验,给游戏收入和口碑都造成很大损失。


    除了这些外挂工具风险外,手游安全中的破解风险同样影响严重。

    一般而言,破解风险包括Unity mono脚本解密、Unity il2cpp脚本解析、Assetbundle资源篡改、存档数据被修改、协议破解等多个方面。

    • Unityil2cpp脚本解析:以libil2cpp.so和global-metadata.dat作为输入,使用Il2CppDumper即可进行解析,这样子类名、函数名以及对应的偏移都能被解析出来。


    • Assetbundle资源篡改:如常见的枪击游戏中,将Assetbundle资源里面的材质属性修改为透明即可达到透视的效果,可让使用修改版的玩家获取不对称优势。而且除了资源被篡改的风险外,还存在资源被竞品盗取、分析的风险。

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


    旅行青蛙是一个没有任何保护的Unity3d游戏,突然火了以后,搜索引擎可以搜索到大量的破解版本,QQ群上也可以搜索大量的辅助群。在其中,就藏着许多的安全风险。比如:

    使用GG加速器可以使三叶草瞬间长满:

    使用dnspy可以解析assets/bin/Data/Managed/Assembly-CSharp.dll:



    • 通过搜索关键字,可以定位到获取三叶草和旅行券的代码位置:


    原始代码

    修改后的代码


    修改后的效果


    上面列举的旅行青蛙手游风险只是其中的一个典型,但是管中窥豹可以得知,目前的手游市场面临着错综复杂的安全挑战,安全防护是所有手游厂商都必须关注的重中之重。


    网易云易盾如何实现了一体化的安全防护?


    针对这种情况,在今天(9月8日)的2018 RTC 实时互联网大会•社交游戏专场中,网易资深安全工程师张本梁分享了《网易Android游戏保护实践》主题内容,就当前的手游安全形势给出了分析和解答,并深度介绍了网易云易盾安全解决方案的技术要点。

    在张本梁看来,如果游戏不做保护,不管是外挂工具还是破解,都可以修改游戏逻辑,这会对游戏造成很大的收入和口碑损害。而网易云易盾所提供的一体化解决方案能够很好地解决这些问题,不仅可以破解包的检测,而且能够跟破解者无感知对抗、对恶意用户进行全方位的风险评估。它还具备完善的通用保护功能,支持任意的游戏引擎,所以手游厂商们完全可以根据游戏需求自主选择:


    • 反修改器:易盾手游保护采用修改行为检测,可通杀所有修改器,包括所有已知和未知的修改器;

    • 反加速:易盾手游保护对Android系统内的加速器、模拟器进程加速的加速器都有检测方案,同样都是针对行为的检测方案,不针对特定的某些加速器,通用性更好;

    • 反模拟器:可以通杀所有已知和未知模拟器;

    • 反调试:检测方式隐蔽,大大提高动态逆向分析难度;

    • 反模拟点击:模拟点击严格上来说不属于非法外挂,处于灰色地带,因此模拟点击器都是公司化动作,应用很广泛,但是模拟点击脚本提供的功能对游戏平衡也会带来很大的不良影响。易盾手游保护使用了进程+行为检测相结合的方式,对模拟点击器进行检测;

    • 文件校验:兼顾了效率和安全性;

    • 防二次打包:使用了更为底层的方式,可以绕过各种过校验插件;

    • 存档加密:透明方式接入,不需要开发做额外接入工作;

    • 反多开器:支持真机和模拟器上的多开;

    • 反地理位置模拟:检测真机和模拟器地理位置模拟;

    • ......

    对于潜在的破解风险,易盾安全解决方案还能够从代码层面提供详尽的功能保护。

    • Unity mono DLL脚本加密

    DLL脚本加解密的原理是修改或者HOOKmono_image_open_from_data_with_name,mono_image_open_from_data_with_name是CSharp脚本的加载函数,如果CSharp
    DLL脚本做了加密,需要在这个函数执行之前解密。因此只要在这个函数这里下断点或者HOOK,就可以解密出原始DLL。不需要逆向加密算法。留意一下,这里有个memcpy拷贝操作,mono会把解密后的DLL在内存中留存一份拷贝。


    该方案包括三代加密方法:第一代加密:直接对DLL文件进行加密,在mono_image_open_from_data_with_name函数开始处解密。解密门槛很低,只要使用修改器就可以解密。第二代加密基于第一代加密的明显弱点,针对解密加强了防护。解密门槛比较高,需要非常强的逆向开发能力才能破解。第三代加密则针对Csharp函数做加密,也就是方法级加密,动态解密。易盾采用的是第二代加密+第三代加密组合使用的方式来确保DLL脚本加密的安全强度。


    • IL2CPP 加密


    Il2cpp脚本信息以lib2cpp.so形式存在,结合global-metadata.dat文件内的符号信息,对libil2cpp.so做so加壳,即可进行解析。如下所示,原始libil2cpp.so用IDA可以看到475个导出函数,但是加固后的libil2cpp.so导出函数则为空。

    Assetbundle、静态资源加密

    那么手游如何进行易盾加固接入?首先需要确定游戏加固项,而且易盾技术也支持云端配置好加固项,然后获取appkey,下载加固jar包工具,根据使用说明配置好appkey即可。



    网易20多年游戏安全实战,智能抵抗游戏外挂和破解。网易云提供手游智能反外挂Android 应用加固iOS应用加固,点击可免费试用。

    相关文章:
    【推荐】 GitLab 自动触发 Jenkins 构建(2)
    【推荐】 有道云笔记跨平台富文本编辑器的技术演进
    【推荐】 关于扁平化视觉设计趋势的一些小分享

  • 相关阅读:
    jsp 特殊标签
    poj 1753 Flip Game 高斯消元 异或方程组 求最值
    zoj 3155 Street Lamp 高斯消元 异或方程组 求方案数
    poj1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组 模板
    zoj 3930 Dice Notation 模拟
    zoj 3157 Weapon 线段树求逆序对数
    hdu 1242 Rescue BFS+优先队列
    hdu 3466 Proud Merchants 贪心+01背包
    zoj 3689 Digging 贪心+01背包
    hdu 2602 Bone Collector 01背包模板
  • 原文地址:https://www.cnblogs.com/163yun/p/9646030.html
Copyright © 2011-2022 走看看