众所周知
只要是射击类FPS类游戏都有自瞄爆头的功能
有的人会说,既然大家都知道,游戏公司也必然知道
那么为什么不把这个BUG修复掉呢
实际上并不是不修复,而是这个根本不算是BUG
为什么这么说呢?
原因很简单,手动可以射击,外挂也可以射击,手动射击是受肉眼影响准确度的,而外挂辅助射击,是经过敌我坐标精确射击的,并不是什么BUG
只是电脑计算比肉眼准确。
那么具体原理是怎么实现的呢
这里以<*战>为例子
我们有射击准星,只要把准星和敌人的质点完全重合即可精准射击
把准星往敌人质点上移一定距离就是爆头的位置,当然如果敌人是蹲着的,这个距离是有所变化的,那么我们还需要通过CE来回搜索人物状态,来区分敌人是哪一种状态,来计算质点上移的距离,来确保100%爆头。
逆战中也有骨骼射击爆头的,这个需要找到敌人骨骼的数据,就是不再只是分析敌人坐标了,而是找到敌人每一块骨骼模型的位置,搜索是比较复杂的,这样就不需要计算什么位置爆头了,而是直接射击到头部骨骼即可
怎么让准星完全和敌人质点重合呢?
第一步,CE扫描出准星的坐标,并且跟踪出其偏移表达式,这个过程不是容易的,但是也没有特殊,完全的正常逆向追踪寄存器而已
第二步,计算出敌人的坐标位置
第三步,把敌人的坐标位置填写到准星坐标地址中
计算的过程中涉及到2个关键问题
一个是 人物坐标和屏幕坐标的转换,这个一般游戏内部有计算函数,但是能够完全逆向出来自己实现是最好的,也就是所谓的偷功能
第二个就是角度的计算,需要一定的数学知识
逆战这个游戏里是用的航空角度计算方法,俯冲角,摇摆角和旋转角
其实说起来并不难,俯冲角 就是你枪抬高还是放低,摇摆角就是你水平位置的摆动角度,至于旋转角完全可以忽略,你不需要大头朝下射击吧,,,,,当然你如果修改也有可能实现畸形人设计,像之前吃鸡游戏里的畸形一样。
有了这些,计算出准确的坐标以供填写坐标便不再是问题了
FPS游戏自瞄爆头
反外挂原理
既然知道了 实现的原理
那么反外挂也就是针对实现的原理而做的
第一,对坐标进行复杂的加密等严格的处理,这可以阻拦一些逆向新手,但是不会起到太大的作用,但是这不是根本目的,对于逆向人员如果不能完全逆向出算法,自己实现的话,就要调用游戏中自带的加解密算法,也就是调CALL,这样就可以在CALL的内部对其进行调用检测以及堆栈检测等等。
第二,既然是写入的地址,那么内存地址数值变化必然不是均匀的,也是非连续的,这对于人手动是不可能的,那么就可以针对这个特性进行检测处理
第三,既然要写入到准星坐标内,那么就有写内存的操作,对该地址进行数据检测