FPS游戏:快速寻找基址的方法

找本人坐标数据: 通常情况下(X,Y)坐标的浮动较大不好定位,我们可以找Z坐标因为Z坐标控制人物的高低参数比较好找。

1.首先搜索未知初始值(浮点数),然后找到一个梯子,向上走搜索增加的数值,向下搜索减少的数值。
2.重复这个过程最后就能找到Z轴的坐标,在游戏中(X,Y,Z)坐标是紧挨着的结构(+0,+4,+8) 找到了Z坐标相应的就可以每次减4计算出(X,Y)坐标。

本人坐标x = server.dll+4F2FEC + 288 - 8
本人坐标y = server.dll+4F2FEC + 288 - 4
本人坐标z = server.dll+4F2FEC + 288

找敌人坐标数据: 上方我们找到了自己的XYZ坐标,接着我们可以通过自己的Z坐标定位到队友的Z坐标。

sv_cheats 1 开启创造模式 bot_stop 1 暂停机器人运动 bot_add-ct 添加反恐精英队友

1.首先打开游戏控制台输入命令,添加一个队友,然后暂停其走动,此时我们和队友站在一个高度上。
2.搜索未知初始值(浮点数),然后紧接着使用精确扫描,扫描地址为我的坐标z的地址。
3.继续搜索,比如说我在下坡,队友在上坡,此时我的Z坐标数据肯定是队友小,那么相对的他的坐标比我大,大出来的部分就是我的坐标数据。

所以我们搜索浮点数,选择【值大于】大于的数值就是我们自己的坐标z,然后让自己比队友高,并搜索【值小于】,依次遍历最后可确定坐标数据。

敌人x = server.dll+4F2FFC + 288 - 8
敌人y = server.dll+4F2FFC + 288 - 4
敌人z = server.dll+4F2FFC + 288

找自己的鼠标角度: 通常FPS游戏鼠标的准心Y坐标向上抬会减少,鼠标准心向下会增加,不断的遍历(浮点数)就可以搜索到鼠标的准心Y坐标,得到了鼠标的Y坐标之后然后+4就能得到鼠标的X的坐标参数。

1.打开CE进入游戏,将鼠标放置在屏幕的中心位置,直接搜索【未知初始化数据】(浮点数),然后将游戏鼠标向上微抬,回到CE搜索【减少的数值】多次向上抬并搜索减少的数值。
2.接着将鼠标逐步向下微压,回到CE然后搜索【增加的数值】这里要重复十几次,最后不要动鼠标直接搜索【未变动的数值】即可找到以下结果,这里都是基地址选哪一个都可以。

只可以读出坐标数据
鼠标 x = engine.dll+61D254 + 4
鼠标 y = engine.dll+61D254
鼠标 x = client.dll+4C0300 + 4
鼠标 y = client.dll+4C0300

可设置鼠标位置
鼠标 x = engine.dll +4622CC +4
鼠标y = engine.dll + 4622CC

找FOV视场角: 视场角又称FOV,视场角的大小决定了摄像机的视野范围,简单来说FOV就是屏幕与摄像机之间的夹角,我们可以通过狙击枪的狙击镜来找到游戏的视场角度,

当未开镜状态时搜索未知初始化数据(浮点数),开镜后搜索改变的数值(浮点数),依次遍历即可找到该游戏的视场角度,一般的FPS游戏视场角为90度的居多。

1.直接开找,打开CE和游戏,购买一把狙击枪,然后在CE中搜索【未知的初始值】,注意这里要选择浮点数搜索。
2.回到游戏,打开狙击枪的一倍狙击镜,在CE中搜索【变动的数值】,接着打开二倍狙击镜,继续搜索【变动的数值】,最后关闭狙击镜搜索【变动的数值】,该过程要重复10次左右。
3.此时狙击镜处于关闭状态,直接搜索【未变动的数值】,然后拔出你的手枪,搜索【未变动的数值】因为手枪的视野与未开镜状态下的狙击枪是一样的,这样搜索能够尽量排除干扰,从而更精确的筛选到我们所需要的数据。
4.经过了上方的遍历以后,结果已经不多了,我们可以猜测这个角度应该在【0-180度】之间,所以通过【介于两者之间】再次筛选一下结果,之后就可以看到有两个90度的角,而且是绿色的基址,一般情况下开发人员默认会将这个角设置为45,75或90度。

FOV = client.dll+5046F0
FOV = client.dll+504628
FOV = client.dll+5047B8
FOV = client.dll+50489C
FOV = engine.dll+3C1720

取当前玩家数量: 玩家数量的查找非常简单,大部分的FPS游戏都有人物统计菜单,按下TAB键则可看到,我们可以通过查看人物数量来查找。

第一次搜索1(4字节),然后按下+号添加1个机器人搜索2,再次添加一个机器人搜索3,不断遍历即可得到玩家数量。

算上我自己的人机数量: server.dll+4EEFE8
算上我自己的人机数量: engine.dll+5D29BC

不算我自己的人机数量: server.dll+4EEFE0
不算我自己的人机数量: server.dll+588878

找敌人血量: 找敌人血量的目的是为了判断敌人是否死亡,这里找血量有两种方式,第一种是找自己的血量,由于我们知道敌人的基地址,所以找到自己血量的偏移就可以通过敌人的基地址定位到敌人血量上。

第二种找法是默认搜索100,然后打敌人一枪搜索减少的数值,然后搜索未变动的数值,再次打敌人一枪搜索减少的数值,不断的遍历最后就能找到我们想要的敌人的血量

自己血量偏移 = e4

自己血量: server.dll + 54B6C8 + e4
自己血量: server.dll + 54A82C + e4
自己血量: server.dll + 4F2FEC + e4

找到自己血量偏移,配合敌人基地址,即可得到敌人的血量,当血量等于1时表示敌人已经死亡。

敌人血量: server.dll + 4F2FFC + e4

找阵营: 首先进入游戏,按下M键可以切换阵营,通过不断地切换,然后搜索即可找到标识本人阵营的基地址与偏移地址,然后通过其他人的基地址加我们自己的偏移,即可得到其他人的阵营数据,一般阵营会用(1,2,3,4)这些数字来表示。

1.首先选择搜索未知初始值(4字节),然后搜索未变动的数值,此时切换阵营,搜索变动的数值,以此循环最终即可找到本人阵营。

本人阵营: server.dll+4F2FEC + 1F4
敌人阵营: server.dll+4F2FFC + 1F4

本人阵营: server.dll+54A82C + 1F4
本人阵营: server.dll+54B6C8 + 1F4

找相机矩阵: 找矩阵的方法就是不断移动自己相机位置,最好拿把狙击枪,然后开镜搜索变动的数值,移动身体搜索变动数值,或者是开镜移动身体搜索变动的数值,这样配合来找,最终可以锁定在2000个数值左右,然后就可以开找。

----------------------------------------------------------------------
4x4 竖矩阵】

0.74 -0.09 0.00 -124.05
0.07 0.54 1.22 -1924. 48
0.11 0. 91 -0. 41 -2700. 54
0.11 0.91 -0. 41 -2692. 87

4x4 横矩阵】

0.74 -0.09 0. 00 0.91
0.07 0.54 1.22 -0.41
0.11 0.91 -0.41 -0.41
-124.05 -1924. 48 -2700. 54 -2692. 87

----------------------------------------------------------------------
3x4 横矩阵】

0.74 -0.09 0.00 0.0
0.07 0.54 1.22 0.0
0.11 0.91 -0.41 0.0
-124.05 -1924.48 -2700.54 1.00

3x4 竖矩阵】

0.74 -0.09 0.00 -124.05
0.07 0.54 1.22 -1924.48
0.11 0.91 -0.41 -2700.54
0.0 0.0 0.0 1.0
----------------------------------------------------------------------

找敌人之间的数组偏移: 在前面我们已经找到了第一个敌人的数据【server_css.dll+3D24E4】指向的就是第一个敌人的地址,通过与偏移【15B8】相加就能得到X坐标,在此基础上加4就能得到Y坐标,显然该游戏并不会将玩家数据放到偏移中,很有可能每个敌人分别占用一个地址,我们可以通过使用内存遍历工具,找到第二个敌人的地址,然后用第2个敌人的地址减去第1个敌人的地址就能得到敌人与敌人之间的差值。