Android手游外挂入侵----寓攻于守,方能破敌
欢迎访问网易云社区,了解更多网易技术产品运营经验。
手游外挂入侵
随着各种爆款手游的风靡,目前手机游戏的占比用户已经形成一个巨大的市场,市场上你争我夺,有将PC版本移植到手机中,也有新模式手游的推出。随着市场的扩大,除了手游产业的兴起壮大,也滋生出了手游的各种外挂产业。
现在市面上流行的手游外挂,总的来说包括了模拟触摸类、加速器、修改器,基于这些外挂涵盖的功能,就能实现目前绝大部分外挂的能力,如自动打怪升级做任务、血量无限、金币自设置、游戏速度加减等等;除了这些工具党常用的手段外,一些“专业人士”也参与了进来,针对不同游戏有不同的做法,大体可以概括成以下破解手段,注入游戏Hook相关逻辑函数、调试进程、静态篡改资源文件和代码逻辑等等,这些操作需要相关的专业知识,涉及逆向、重打包、脱壳等操作,经过这些操作可以实现更有定制化功能的外挂。接下来就分享两个在手游保护过程中所遇到的典型案例。
破解游戏下载商店
(1)案例介绍
该案例遇到的是一个专业的团队,他们负责破解游戏,向游戏中植入他们的加速器等插件,然后重打包上传到他们的应用商店中,玩家只需要下载他们的应用商店,从中找到需要的游戏,安装进入后自带各种外挂玩游戏,畅通无阻。进入游戏的界面会多一个辅助插件的窗口,提供了加减速的功能,因此需要深入分析植入的原理并找到加减速的实现。
商店页面展示
(2)案例原理分析
深入分析跟进,发现游戏进程在启动时,会加载多个新的动态库,其中包括了libsubstrate.so(此为一个著名的Hook框架,接着分析找到了他通过调用框架Inline Hook了libmono.so导出的两个方法,Hook的方法mono源码参考如下:
通过启动进程后附加,获取到Hook调用的函数,通过分析得知,mono_class_from_name函数是mono在解析DLL方法时会经过的一个函数,hook此函数后,在调用前,对参数中方法名、命名空间进行判断,最终通过调用mono_class_get_method_from_name获取到UnityEngine.Time.set_timeScale方法,该方法的作用便是设置游戏时间的流速。
Hook代码(IDA反编译):
再通过hook的第二个函数mono_runtime_invoke,进行调用该方法,将设置的参数传入,通过对游戏时间流速的更改设置,达到加速器的作用。
Hook代码(IDA反编译):
外挂接口服务提供商
(1)案例介绍
随着手游市场的崛起,外挂的增多,外挂市场的商人们似乎也意识到外挂开发者也在大量的涌进,绝大多数都能够写点脚本开发外挂,那么商人们就开始着手底层,通过找寻到的“专业人士”开发底层框架,提供接口供上层开发者调用,把逻辑的实现交给他们。
某外挂框架介绍
在最近的客户反馈中,一个游戏遇到了一个框架类定制的外挂,外挂作者通过该框架实现了一套自动化点击的脚本,完全无需人工进行操作。这类方式的实现,将底层深入的原理实现进行了封装,最后以API的形式提供给玩家,玩家仅需要一定的编程基础便可以掌握进行二次开发。
(2)案例原理分析
深入分析该框架类软件,发现它使用ROOT权限启动了一个疑似输入的可执行文件(/data/data/my.apk/app_data/input),从该路径下提取该可执行文件进行分析,从中找到了它使用app_process命令执行了一个名为input.jar的文件。
以下为IDA解析出来的伪代码,作为参考。
使用工具打开jar包查看,代码没有混淆,很轻易的就找到了关键的实现函数(具体实现原理可以参考《 Android中模拟点击类软件实现原理探究》,这里提到过同样实现的方法):
通过jar包实现了模拟点击,与上层使用socket和其他进程进行通信,用户通过lua脚本控制代码逻辑,整个框架流程大致如此。
手游外挂辅助产业链兴起
案例介绍
收到了来自一些游戏的反馈,发现了手游外挂辅助的产业已经在阴暗的角落处开始萌芽,这些地方可能来自QQ群、贴吧、论坛、某宝等等,他们中有通过传授工具外挂使用方法达到目的的,有通过破解篡改游戏代码逻辑实现的,甚至有提供框架API调用完成的。
QQ群搜索查找
网络售卖破解版
可以看到,从Q群到淘宝,无论是工具党还是专业人士,都开始向手游市场下手,都想在这块市场获取利益。从相关游戏处了解到,不同游戏都或多或少有定制化的外挂存在。
在不断与外挂的攻防对战中,网易云易盾一直在加强巩固我们的手游加固产品对抗外挂的功能,总结了不同外挂的特性和攻击手段,在对已知外挂的抵御功能之上,推出了针对新型外挂的感知功能,做到寓攻于守、攻守兼备,新的反外挂系统,除了有新型外挂的感知功能,还有对使用外挂的用户、设备机型、外挂类型及详细特征等等进行定位,更好地对恶意用户进行取证和清理。可以 免费试用。
相关文章:
【推荐】 Android事件分发机制浅析(2)
【推荐】 SpringBoot入门(二)——起步依赖
【推荐】 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?