【编程技术-手游反外挂-反内核物理访问内存方案思考】此文章归类为:编程技术。
前言
近两年手游外挂太过猖獗,游戏体验十分之差,不论是某公司旗下全民Moba手游,还是某公司旗下某暖暖手游和某摸金类手游,这几个游戏都是我常玩爱玩的,但是遇到外挂的几率高到离谱!
鄙人对于游戏外挂原理也有一些研究,长期以来也观察了目前的手游外挂类型,其中最大比例的是内核读物理内存方案,类似于多年前PC端的驱动方案,通过内核级别权限通过页表将虚拟地址转换为物理内存地址,并映射访问。
但从我个人角度观察来看,某手游公司对于此类外挂的对抗过于正面:
1.设备环境检测
例如内网设备特征、设备编译信息、文件特征、端口特征、root检测等
调试过程中发现,还有一些涉及到用户隐私的信息也被收集,实在有点过于了。
2. AI 行为检测
FPS游戏通过准心角度、操作行为等进行分析。
MOBA游戏对于无视野操作行为进行分析。
我认为此类方案可行,但不应设定太高的权重比例,容易导致许多高玩用户被误封
3.举报机制
目前的某公司旗下手游的举报机制真的不得不让人吐槽,权重太高!!!
导致误封的不在少数,甚至自己举报自己开挂都能封号!? 虽然只封1/3/7天,但真的非常恶心人,明摆着的外挂不封,反而正常玩家玩的好被举报多了就封号,实在让人没有玩下去的兴趣。
我认为游戏公司不应在举报机制上下功夫,因为玩家总喜欢在被击败后举报对手,一旦举报机制和行为检测机制的权重比例不合理,就会导致大批用户被误封!!例如某个新出的手游,正在经历此情况!
我通过在各类外挂群潜伏观察发现,各种外挂的功能之变态,还不被封号,主要利用所谓的“端口”技术,我通过逆向技术分析,其实则是抓取游戏安全协议封包,伪造心跳、屏蔽关键字等手段,使其封号指令无法送达服务端,大部分还拦截了安全后台推送的检测脚本文件下发,对于这一类,我认为是由于其安全协议设计有部分缺陷导致,例如许多包类型,居然没有校验其包序号、校验和、内容有效性等
设想的一种能解决内核外挂的方案
我通过分析发现,其公司旗下某个MOBA手游,能将坐标指针的内存设定为不可访问。也就是 --xp,那么在此基础上,再通过madvise MADV_PAGEOUT标志,请求将内存页面交换到磁盘,用来保护核心的一些数据,例如玩家数组,坐标指针等这类不频繁访问的数据,不就可以很大程度上防止内核外挂了吗?
外挂程序不论实现透视还是自瞄,都需要坐标指针和玩家对象列表,但通过内核访问物理内存,已经交换到了磁盘的页面是处于缺页状态,外挂也就无法获取其实际数据,若要获取其数据,必然触发缺页中断,再交换回物理内存中,此时则可通过检测页面是否在物理内存中,来检测内存是否被非法程序所访问。
若是自身需要此数据时,由于数据处于磁盘中,并不会丢失,那么再通过特定的方法来处理,我认为能解决百分之80的外挂程序,因为据我了解,大部分的外挂程序作者,都没有什么技术,而造成手游如此困境的正是此类人!这类人抓是抓不完的,不如提高门槛,再通过法律手段来打击剩下的那部分人。
附言
若是此思路无用,那各位全当是个吐槽贴。
最近打新出的某双玩法手游真的被恶心吐了,观战队友都是挂,举报都不封的。
有时候举报封了,也就封对方1天、3天,我在意的是对方封几天吗?我在意的是我带进局内的物资啊!!你确定他是挂了,倒是把物资回退给我呀,太难受了。
更多【编程技术-手游反外挂-反内核物理访问内存方案思考】相关视频教程:www.yxfzedu.com