FPS 游戏自瞄原理

article/2025/8/19 4:51:42

了解FPS游戏自瞄漏洞

经常玩游戏的朋友,应该知道FPS游戏,例如:穿越火线,逆战等等,他们的特点就是以第一人称视角进行操作人物,屏幕中间会有一个准星,通过准星瞄准敌人进行攻击以达到击杀效果和游戏体验。

由于FPS游戏的特殊游戏体验,所以使得很多不法分子利用逆向知识开发了很多自动瞄准的工具,破坏了游戏平衡。具体的原理如下:
1.找到存放鼠标准星的坐标基地址
2.找到人物数组基地址
3.找到人物数组下人物的相关属性偏移:血量,名字,坐标,阵营等
4.通过阵营判断是否为敌人,通过血量判断是否死亡,利用算法将自己的准星坐标修改为敌人所处的位置,实现自动瞄准

利用某FPS网络游戏进行分析

用到工具:CE,OllyDbg

首先,我们分析了解一下FPS鼠标准星的知识,并且找出他的内存地址:

搜索前,我们要理清思路,那就是如何去定位鼠标的坐标,怎么定位比较方便。因为游戏分为鼠标X和鼠标Y两种坐标,鼠标X即左右的坐标,鼠标Y为上下坐标,由于左右坐标在游戏中转一圈无法确定坐标数据是否增大还是减小,所以我们通常分析鼠标的Y,即上下坐标。

针对鼠标Y坐标变动的情况分析:

无鼠标准星特殊加密:
1.向上移动准星坐标增大,向下移动准星坐标减小
2. 向上移动准星坐标减小,向下移动准星坐标增大

鼠标准星特殊加密:
鼠标准星上下无规律变动

对于没有鼠标准星特殊加密的游戏,我们通常在CE工具中搜索增加或者减少
对于存在 鼠标准星特殊加密的游戏,我们通常在CE工具中搜索变动或者未变动

另外,由于坐标等数据精度都是比较高的,所以我们通常搜索浮点数或者双浮点数

分析鼠标坐标内存地址

由于鼠标左右移动的值(x坐标)不容易判断(因为可以转一整圈),所以可以通过分析上下移动(y坐标),得到了鼠标Y的内存地址,这个时候,我们不必去搜索鼠标X的内存地址,只需观察该地址相邻或者附近的地址值的变化即可得知鼠标 X 因为鼠标 XY 坐标在游戏中存放是连续的,类似我们在上课写C语言结构体里面变量数据内存地址是连续的一样的道理。
那么如何查看相邻地址内存呢?CE有个自带的功能:
在这里插入图片描述

按照图示的标注的顺序,在下面的窗口编辑框内填入相关地址:
在这里插入图片描述

在这里解释一下为什么我们需要填入23E3500,因为鼠标Y地址是: 23E3588,鼠标X在附近的位置,所以我们存在一个取值范围,这个范围不是很大,所以我们填入了一个估值,填入后定义结构体,一切回车默认即可。
在这里插入图片描述

至此,我们的鼠标坐标内存地址分析完毕,当然了,分析这个还不够,下面我们来分析一下人物数组及其结构。

分析人物数组

我们可以通过某一个变量的值来寻找人物对象地址,最有代表性的就是血量(当然子弹数量什么的也可以)。由于血量精度也比较高,所以存放形式也多为浮点数或者双浮点数,由于精度过高,所以我们不能够搜索精确数值,改为搜索两者之间的数值:
在这里插入图片描述

根据血量找到人物对象,再根据人物对象找到人物对象数组,最后定位到数组的基地址:
在这里插入图片描述

在这里插入图片描述

分析自瞄朝向

古代的时候,对于我们生活的地球,人们会讲“天圆地方”这么一个概念

那么我们可以借鉴一下,把游戏中的地图看成方的,把我们看做坐标原点,然后建立一个直角坐标系,并且标注上北下南,左西右东:
在这里插入图片描述

然后我们先得知一个规律:

1.如果我们修正鼠标X和鼠标Y为0,那么游戏准星将指向一个东南西北的正方向
2.前后移动如果人物X坐标未变动或者变动幅度小,则我们处在坐标系Y方向
3. 前后移动如果人物Y坐标未变动或者变动幅度小,则我们处在坐标系X方向

所以,确认敌人在哪个象限:
1.当敌人X>自身X 敌人Y>自身Y 敌人位于第一象限
2. 当敌人X<自身X 敌人Y>自身Y 敌人位于第二象限
3. 当敌人X<自身X 敌人Y<自身Y 敌人位于第三象限
4. 当敌人X>自身X 敌人Y<自身Y 敌人位于第三象限

分析自瞄的鼠标X坐标

因为我们得知了鼠标的变化规律,也得知了象限的变化,所以,我们只需要把我们和敌人的角度算出来就可以了。我们以我们为起点,以敌人的坐标为终点,不考虑Z坐标,进行作图,连线,构造三角形,根据几何知识,我们得知绿色的地方即为我们需要瞄准的度数,也就是我们要修改的鼠标的X角度:
在这里插入图片描述

分析自瞄的鼠标Y坐标

Y 坐标可以理解为计算完 X 坐标的基础上再做一次勾股定理:
在这里插入图片描述

最终,我们的算法就结束了,还差最后一步,那就是源源不断的写入敌人的角度数据到我们的鼠标角度中,就可以实现锁定敌人的功能。另外还需要注意人物对象所属的阵营,不要误杀了你的队友,如果人物对象结构内没有阵营信息,那么它们大多都在人物对象地址 -0x??? 的位置,然后还要判断对象是否死亡(不要一直锁着尸体),判断锁定的优先级(距离自己跃越近的敌人对自己的威胁越大,应该最先锁定)。


http://chatgpt.dhexx.cn/article/q1yyTJKi.shtml

相关文章

FPS游戏通用自瞄与透视算法详解!!

自瞄算法与实现&#xff1a; 1&#xff1a;首先我们要找到一个敌人的三维坐标。 2&#xff1a;我们还要找到自己的三维坐标。 3&#xff1a;我们还要找到自己的鼠标坐标X与Y&#xff08;这里的鼠标坐标X与Y是角度&#xff0c;X为360&#xff0c;Y正中间为0向上减少到负90度&…

Web前端技术HTML

HTML&#xff08;Hyper Text Markup Language&#xff09; 目录 一、什么是HTML&#xff1f; 二、为什么需要HTML&#xff1f; 三、HTML标签 四、HTML文档结构 五、HTML标签属性 1、标签的语法 2、注意事项 3、常用标签 一、什么是HTML&#xff1f; HTML指的是超文本…

前端技术概述

目录 一、开发框架 1、C/S架构&#xff08;Client-Server&#xff09; 2、B/S架构&#xff08;Browser-Server&#xff09; 二、前端术语 1、渲染 2、Front-end&#xff08;前端开发&#xff09; 3、Back-end&#xff08;后端开发&#xff09; 三、HTML的DOM结构 四、…

如何写前端技术方案文档?

大厂技术 高级前端 Node进阶 点击上方 程序员成长指北&#xff0c;关注公众号 回复1&#xff0c;加入高级Node交流群 前言 百度百科对计算机软件的的定义为&#xff1a;“计算机软件( Software&#xff0c;也称软件)是指计算机系统中的程序及其文档&#xff0c;程序是计算任务…

前端技术体系与发展计划

为什么会想起来整理这么一套东西 最近和很多已经工作了的同学聊天&#xff0c;发现大家都遇到了很多的问题或者说是烦恼。整理了一下&#xff0c;大体可以分为两个大的种类&#xff1a; 关于前端技术体系的问题关于技术能力发展的问题 从这些问题中&#xff0c;我抽出来几个…

前端技术发展历程

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 随着互联网的不断发展…

前端技术简介

声明&#xff1a;本文转载自http://www.lvyestudy.com/les_hj/hj_1.1.aspx&#xff0c;如需要了解更多关于前端的知识&#xff0c;请查看该链接 在HTML入门教程学习之前&#xff0c;我们有必要跟大家讲一下网站开发的一些知识。了解这些知识&#xff0c;对你以后网站开发之路如…

2020 年前端技术发展盘点

2020 年已经结束&#xff0c;这一年里面因为疫情&#xff0c;生活和工作中大家都有受到一定的影响。但是在 2020 年里面前端技术的发展依然没有停止脚步。 而我们作为前端开发者&#xff0c;必定需要对技术的更新换代有所了解。虽然我们不需要去学习所有新出来的技术。但是时刻…

前端技术(html)

目录 一、HTML 1. 概念 2. 快速入门 3. 开发工具 HBuilder 3.1 HBuilder介绍 3.2 HBuilder下载 3.3 HBuilder的安装与使用 3.4 使用HBuilder创建项目 4. HTML文档的基本结构 4.1 基本结构 4.2 HTML注释 5. HTML中常用标签 5.1.文本标签 5.2 图片标签 5.3列表标签 5.4…

【狂神说Java】Vue学习笔记01:前端知识体系

本文根据B站【狂神说Java】vue系列视频整理&#xff0c;如需观看视频&#xff0c;请点击链接跳转 【狂神说Java】Vue视频 2、前端知识体系 想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走&#xff0c;其中前端是绕不开的一门必修课。本阶段课程的主要目的就是带…

SUMO安装及环境变量设置

sumo安装 1.打开sumo官网&#xff0c;进入下载界面 2.解压安装包 3.打开bin文件&#xff0c;创建sumo-gui和netedit快捷方式 SUMO环境变量配置 1.右击我的电脑&#xff0c;点击属性 2.点击高级系统设置&#xff0c;环境变量 3.在用户变量的path&#xff0c;加入以下变量 4.…

Python pip保姆级环境变量设置

1.打开系统中的高级系统设置 2.点击环境变量 3.在系统变量区域&#xff0c;选中path&#xff0c;点击编辑进入编辑页面。 4.将python Scripts文件夹所在位置复制粘贴到变量值中&#xff0c;注意名称之间有分号。 5.winr cmd回车&#xff0c;输入pip出现以下页面说明设置成功。…

MySQL数据库环境变量设置

1、鼠标左键&#xff0c;点击设置 2、出现一个框&#xff0c;在框里&#xff0c;填写&#xff0c;高级系统设置&#xff0c;确定 3、打开了高级系统设置&#xff0c;点击红圈圈着的“环境变量” 4、出现一个新的小弹框&#xff0c;点击path&#xff0c;&#xff08;路径的意思&…

Mac设置环境变量

环境变量是电脑操作系统中常用的一些变量&#xff0c;作用类似于将一些常用命令所在的文件夹位置预先告诉操作系统&#xff0c;当以后需要用到这些命令时&#xff0c;操作系统就自动来这些位置取。 例如&#xff0c;常见的Java开发中配置的相关环境变量&#xff1a;PATH&#…

python环境变量设置(win10为例)

C站发表的第一个文章啊&#xff0c;话就不多说了。 &#xff08;PS&#xff1a;我也是小白&#xff0c;注册C站第一天&#xff0c;冒个泡&#xff09; win10教程&#xff08;只有win10电脑&#xff09; 先放一张我自己总结的教程 &#xff08;PS&#xff1a;应该够清楚了&a…

npm环境变量设置

使用npm命令提示: npm 不是内部或外部命令&#xff0c;也不是可运行的程序 在安装nodejs时候&#xff0c;有时候我们会把它安装在d盘或别的盘时&#xff0c;经常会遇到npm环境变量没有配好&#xff0c;需要自己手动去配置。 在安装完nodejs后输入node --version查看安装是否成功…

Centos7环境变量设置

Centos7环境变量设置 最近&#xff0c;我从cnaaa.com上购买了云服务器&#xff0c;开通了centos系统。 1、环境变量的含义 程序&#xff08;操作系统命令和应用程序&#xff09;的执行都需要运行环境&#xff0c;这个环境是由多个环境变量组成的。 2、环境变量的分类 1&am…

Pycharm的环境变量设置

Pycharm的环境变量设置 最开始是由于在系统终端上安装mujoco_py遇到了需要添加环境变量的问题&#xff0c;在添加完系统环境变量后&#xff0c;在终端可以使用mujoco_py&#xff0c;而在手动打开的Pycharm窗口中却仍需配置环境变量&#xff0c;查阅资料后发现有如下两种方法解…

ug更改java的环境变量_UG中的语言环境变量设置

原标题&#xff1a;UG中的语言环境变量设置 今天与大家分享怎样更改UG中的语言环境变量&#xff0c;语言的更改经常要用&#xff0c;特别是在英语和中文之间切换。 在Windows的操作系统中&#xff0c;UG软件的工作路径是由系统注册表和环境变量来设置的。安装UG后&#xff0c;会…