背景
手游客户端的发展往往会吸引一批想从游戏中获利以及爱好逆向分析研究员的关注,因此手游的安全攻守之道就产生了。那么这些威胁对象的存在,给手游客户端的安全带来很大程度上的影响,所带来影响的结果就是:游戏中出现各种外挂脚本,游戏客户端破解版,打金工作室泛滥等等各种作弊行为的出现,最终导致手游客户端的平衡性被破坏,玩家流失,最终导致手游收入的降低。
接下来我们分析威胁手游客户端安全的对象有哪些???
运行环境的威胁
模拟器
主流模拟器: 夜神模拟器,雷电模拟器,mumu模拟器,逍遥模拟器,蓝叠模拟器,腾讯手游助手,海马玩模拟器,遁地模拟器。
模拟器原理: 一种是基于Qemu,一种是基于Genymotion(VirtualBox类)。
模拟器识别:特有模块、文件、设备、配置、特征等等。
对抗策略:
检测到模拟器对数据进行上传,并对应模拟器玩家进行策略调整,如在MOBA类型游戏,进行将同类型的玩家匹配到一起;如角色扮演类型游戏,进行降低游戏的收益。
(图片来源2020腾讯游戏安全会议)
root权限
root解析:使得手机可以获得超级管理员权限,android系统是基于Linux内核的,默认情况下并不提供超级管理员权限,所以获取su的权限的过程就变成了人们常说的root。
root方案:
1.通过第三方app
2.通过进入Recovery模式刷写root包
对抗策略 :
root对抗结合模拟器环境,对是否是root进行上传服务器,并进行结合是否root进行设定游戏策略。
虚拟机
主流虚拟机:vmos(虚拟大师),VirtualXposed,光速虚拟机,X8沙箱,平行空间。
虚拟机危害:它可以免Root进行使用外挂,外挂脚本泛滥,外挂操作更简单,虚拟机种类繁多。
对抗策略: 因不需要进行root就能很方便的使用手游辅助软件,因此对这种的对抗方式就是识别到了就闪退。
云手机
主流云手机:多多云,红手指,河马云手机,百度云手机等等
云手机原理:云手机是虚拟化技术,最终为用户在云端提供的一个个安卓实例(操作系统)。用户通过视频流的方式,远程实时控制云手机,最终实现安卓原生APP及手游的云端运行。
检测方案:
1.通过底层识别方式进行识别云手机
2.通过风险感知,实时反馈用户异常玩家
3.通过机器学习,依托海量数据库,模型精准,识别新型云真机
4.通过反馈跟踪,根据用户反馈异常,进行相似性搜索,排查一批异常云手机玩家
内存安全威胁
修改器
主流修改器 : GG修改器,CE修改,葫芦娃修改器,八爪鱼修改器,八门神器,烧饼修改器,葫芦侠,叉叉助手,泡椒修改器,晃游修改器,熊猫侠修改器
修改器原理:
通过打开并读取进程中的/proc/%d/maps的内存数据,修改内存数据而实现。
修改器检测方案:
1. 安装环境识别检测
2.运行时进程环境检测
3.数据埋点检测
4.心跳包的建设及检测
5.内存蜜罐检测
对抗策略:
1.检测到游戏闪退
2.检测到对账号进行封号处罚
注入框架
主流注入框架: frida,xposed
Frida原理:
frida是基于ptrace注入属于一对一的注入。frida使用ptrace attach到进程之后,往进程中注入一个frida-agent-32.so模块,此模块是frida和frida-server通信的重要模块,所以frida不会一直占用ptrace,注入模块完成后便detach。
Xposed原理:
它是通过替换/system/bin/app_process 程序控制 zygote 进程,从而使 app_process 在启动过程中加载XposedBridge.jar 这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持,所以它是属于全局注入的。
常规检测方案:
1.检测进程模块关键模块frida-agent-32.so,XposedBridge.jar;
2.检测关键文件、包名、端口,调用栈
3.检测底层的通讯协议
非常规检测方案:
因frida和xposed都以开源因此可以通过修改源码中关键信息重新定制版本,所以对于两个框架检测需检测底层技术方案配合游戏的运营策略结合进行检测。
对抗策略 :
1.检测到游戏闪退
2.检测到对账号进行封号处罚
脚本辅助类威胁
模拟点击工具
主流模拟点击器: 按键精灵,触摸精灵,脚本精灵,鸟人助手,节点精灵,Xscript工具
模拟器原理:通过录制玩家操作反复重放,或通过取色点识图等方式进行自动操作的辅助程序。用户触摸屏幕,对/dev/input/event写入触摸信号量而实现模拟点击。
对抗策略:上传识别检测数据,并进行大数据行为分析,最终结合用户行为数据进行对应处罚。
威胁小结
威胁手游安全对象从原理上来说主要分为:内存修改、函数调用、模拟点击、协议模拟。其中尤以内存修改类外挂占比居多,因此对于威胁手游安全的主要打击对象还是主要放在修改器和注入框架方面。另外由于文章篇幅有限仅分析一部分的威胁对象,手游安全的威胁对象远远不止以上部分,还有如同步器,加速器,反调试等等,剩余部分后续进行技术方案实践分析。
(图片来源2020腾讯游戏安全会议)
解决方案
目前手游安全主流的对抗方案:手游客户端进行接入反外挂检测SDK的模块,并调用sdk检测对抗的功能接口(sdk主要包含jar包和so文件),所以判断手游客户端是否接入主流的反外挂检测模块,只要在游戏客户端的lib目录下判断是否存在反外挂的so文件,例如游戏接入某讯的MTP产品,那么游戏客户端的lib目录下会有个libtersafe.so文件,游戏接入某易的易盾产品,那么游戏客户端的lib目录下会有个libNetHTProtect.so文件。接入完sdk后剩下最后一个步骤那就是对手游客户端进行做加固保护。
End