zoukankan      html  css  js  c++  java
  • 手游破解手段介绍及易盾保护方案

    本文来自网易云社区

    手游已经超过端游,成为市场份额最大的游戏类型。对应的外挂产业也成长迅速,技术水准越来越高,对市面流行的手游引擎都有比较深入的研究。

    现阶段如果一款游戏没有做任何保护,并且有数据放在本地计算的话,外挂从业者可以快速做出外挂。比较典型的案例就是旅行青蛙,这个游戏没有做任何保护,突然火了后,出现了各种功能多样的破解版。百度搜索破解关键词,结果有300多万条。

    手游破解通常都从如下三个大方向来做:动态破解、静态破解、协议破解。

    一、动态破解

    不对包进行修改,而是使用外部工具进行外挂功能。

    动态破解主要包含修改器和加速器。

    1.修改器

    修改器的原理是修改游戏内存数据,达到秒杀、无敌、倍攻、穿墙等变态技能。

    目前最流行的是GameGuard修改器(也称作GG修改器)。

    下图是使用GG修改器修改三叶草数量的动画。可以通过修改器把三叶草的数量修改成9999。


    除了上面的手动操作,GG修改器还可以使用lua脚本操作,这样就大大降低了使用门槛,只要花上几十块买个脚本就免去了复杂而有难度的重复操作。使用界面如下图所示:


    下图是某QQ群里售卖的lua脚本


    GameGuard修改器除了数据修改功能外,还带有过游戏保护的功能。

    腾讯自营和联营的手游统一使用腾讯自己研发的MTP游戏保护。MTP保护带有反修改器功能,检测到修改器后会让游戏退出。后来GameGuard修改器进行了版本升级,内置了pass腾讯MTP游戏保护功能,使得GG修改器能正常使用,并且在官方网站挂出如下视频:


    2.加速器

    加速器是比较常见的作弊工具。

    同样拿旅行青蛙来做示例,使用效果如下,可以让三叶草快速成长。正常情况下,三叶草长满池子需要几天,加速后只需要几秒钟。



    二、静态破解

    也就是端改,玩家常常称这样的破解版为科技端。这种破解是通过修改游戏里面的文件或者脚本,然后重打包来实现各种功能。

    端改常常被拿出来售卖或者工作室内部使用。端改的危害往往比动态破解更大。

    现在破解版基本都是在QQ群售卖,只要使用游戏名+ “科技”或者”辅助” 作为关键词搜索,就可以搜索到对应游戏的破解售卖群。

    图1

    图2


    图1是崩坏3的搜索结果,图2是刺激战场的搜索结果。这两个游戏都有使用游戏保护,还是存在很多外挂售卖。可见现在的黑灰产的技术能力还是非常强的。

    还是以没有保护的旅行青蛙做为案例,演示如何实现无限三叶草破解版本。

    这个游戏是Unity3d引擎实现,首先使用CSharp反编译工具(如dnSpy,ilSpy等工具)把如下图所示的DLL还原成源码



    然后分析源码,定位到关键源码位置。如下图所示的获取三叶草数量的代码位置。


    把源码修改成直接返回9999:


    把修改后的源码再编译成DLL,替换原来的DLL,重打包成APK,运行后效果如下图所示,三叶草数量永久为9999,取之不尽用不之竭。


    即使是没有保护的游戏,做破解版本还是有一定门槛的,需要一定的技术基础。不过在市场需求的驱使下,有多个平台APP提供破解版手游下载,如下图所示的GG大玩家和光环助手。

    三、协议破解

    一旦游戏协议被分析出来,可以不再依赖于游戏本身,可以实现纯协议的客户端。或者是半脱机,修改游戏封包来修改游戏行为。


    如下图比较热门二次元的游戏,使用的是http协议,可以使用Fiddler抓包来分析协议,并且修改协议封包。

    这样的话,就可以搭建代理服务来动态修改封包,实现10倍血量10倍攻击等效果。相当于半脱机。下图是某论坛提供的免费脱机代理。



    易盾手游保护针对上述问题的解决方案:

    一、动态破解

    1. 修改器
    通过对游戏进程的读写行为来识别修改器,可通杀所有修改器

    2. 加速器
    使用底层的方法判断是否存在加速。所有应用层方法都无法绕过我们的加速检测。

    二、静态破解

    游戏保护模块都带有文件校验功能,只要有文件被修改了游戏就不能正常运行,而端改又必须修改文件。

    因此破解一般都要先把保护模块脱掉,使得破解后的游戏可不再依赖于保护模块运行。

    基于上述原因,我们从两个角度来做保护

    1. 脚本保护

    1) Unity3d引擎提供函数级加密功能,并支持脚本在线更新。

    2) 其它引擎提供对引擎模块的加固

    2. 资源加密

    1) Unity3d引擎,我们提供assetbundle资源加密以及静态资源加密

    所有加解密算法,都经过我们精心构造和混淆,在确保性能和稳定性的前提下,让编译后的代码难以分析。下面是IDA分析的某个解密算法的流程图,其它加解密算法都是使用类似的方法构造。


    三、脱机挂

    针对脱机挂,我们提供了数据签名功能,客户端对输入数据进行签名,生成一个签名值。

    如果破解者无法分析出签名算法,就无法模拟协议也不能篡改数据。

    保护的核心在于客户端实现的签名算法在满足计算速度的同时,混淆要有足够的强度,使得分析者无法还原成源码算法。

    除了上述提到的方法,我们还提供如下的保护功能

    1. 反地理位置模拟

    2. 反模拟器

    3. 反模拟点击

    4. 反同步器

    5. 防二次打包

    6. 文件校验

    7. 存档加密

    8. 手游引擎SO定制化加壳

    除了提供这些多样的保护功能,我们还着力于提升保护的易用性。保护的使用只需要运行一条命令行,将待保护apk做为输入,即可输出带有完整保护功能的APK。整个过程不需要开发做任何对接。

    易盾手游保护已经发布一年多,除了公司内部使用外,同时也对公司外部提供服务。目前已经有数十个外部用户,公司内部也有几十个手游在使用。

    对于外部用户有三个比较典型的用户,在这里做一下分享。

    1. 英雄互娱旗下的某沙盒类游戏,存在很多修改器和加速器

    我们给他们配置了反修改器和反加速器选项,并且对脚本做了函数级加密,对U3D Assetbundle资源做了加密。加固版本上线后,游戏运营反馈用户外挂举报立马减少了99%。使用保护至今已经快一年,还没有出现过破解版。

    2. B站某二次元游戏,就是上文所说的存在脱机挂云刷的游戏,后来买了我们的保护。针对他们脱机挂的问题,我们专门为他们开发了反脱机功能。上线后云刷功能立马废了,并且上线至今没有人能够破解出反脱机算法。在反脱机功能和脚本函数级加密同时使用的情况下,也没有出现破解版。


    网易云安全(易盾)提供iOS 应用加固Android 应用加固服务,点击可免费试用。


    本文来自网易云社区,经作者陈士留授权发布。

    原文:手游破解手段介绍及易盾保护方案

    了解 网易云 :

    网易云官网:https://www.163yun.com

    网易云社区:

    新用户大礼包:https://www.163yun.com/gift

    更多网易研发、产品、运营经验分享请访问网易云社区

  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/163yun/p/9436381.html
Copyright © 2011-2022 走看看