FPS游戏找数据总览 FPS

委员长 · · 游戏安全/游戏逆向
1

本文共计2163个字,预计阅读时长8.7分钟。

目录
1.找人物链表
按照软件开发的思维,一般来讲人物里面具体的数据应该都会存在一个结构体或者类中,比如血量啊,坐标啊,阵营啊等等一些列大家都有的东西,而且,为了代码好维护,估计所有的人物存储方式要么是一个链表或者数组存警察和土匪,要么是两个数组或者链表一个存警察,一个存土匪,绝对不会有游戏公司的程序员蠢到创建10几个变量来分别表示吧。。基于以上思路可以从其中一个人物血量为突破口,找到人物的结构体,然后看看是否存在于数组或者链表中,这里就以我们自己为突破口来寻找步骤如下: 首先搜我们自己的血量100,然后想办法让自己掉一点血,继续搜新的血值, 7_3R6VU77H22TR657 尝试了很多次,仍然有19个地址 7_MCUPYMJD7H78KKD 让自己死掉,开启下一盘游戏试试 7_8BTDPYCH55ZY9CZ 还是19个,再掉一点血试试 7_UFDPKZ2VZDQ8RJF 就把这19个都分析一下吧,反正也不多了(由于篇幅关系,直接拿我分析后是正确的地址来分析了) 7_HRZ2JQXB96B886Q 对这个地址下访问断点 7_8XQKHECY4H67WZ4 从第一条mov eax,[ecx+00000100] 来分析的话,假设ECX是结构体/类首地址,那么+0x100就是血量,我们只要看看ECX是否在链表或者数组中就行了
2F20902E - CC - int 3
2F20902F - CC - int 3
2F209030 - 8B 81 00010000  - mov eax,[ecx+00000100] <<
2F209036 - C3 - ret
2F209037 - CC - int 3
EAX=00000057
EBX=00000010
ECX=6D8DF5C0
EDX=2FDB41F0
ESI=6D8DF5C0
EDI=6D8DF5C0
ESP=0097DFD0
EBP=0097DFF0
EIP=2F209036
这个时候ECX的值是6D8DF5C0,在CE中搜索这个值试试 7_2T5DUB2M8GCRBAK 有4条基地址,着重分析一下4条基址 7_DCDHC9NK5PCB5FN 基地址拉入地址栏,然后浏览内存 7_YQPDM349VQ8Q39P 显示类型改成4字节 HEX 7_3QM4UZ8PMBGJ6JN 最后一个地址不像是链表 7_A32KMEFWSENT3ZM 再继续分析下一个 7_M8TYPBGFQZVM9TH 也不是,继续下一个 7_H8EJHC7KVURY4HE 这一块就有点像链表了,数据模式有点像以下代码
struct List
{
     xxx* data;//数据指针
     int    id
     List* prev;//上一个链表
     List* next;//下一个链表
}
仔细这块数据第一条33dceeac是这个在内存中的位置 6D8F5C0应该就是数据指针,2FA应该就是ID(具体含义不清楚,暂时认为是ID),33DCF2AC就是上一个struct的指针,33DCF2AC是下一个结构体指针,我们转到地址33DCF2AC 如果这个地址的上一个链表的指针指向33dceeac就说明我们找对了。 7_TQXRGNNX5WHXMUA 这就说明我们找对了。 所以我们可以通过基址client.dll+4DCEEAC 找到链表的集中一个节点,从这个节点就能遍历所有成员了。 然后通过血值是struct的地址+0x100 现在继续找坐标跳转到我们人物结构体的首地址去(6D8DF5C0)并显示浮点数(坐标一般是浮点)然后人物到处走动 7_2Z36XW8YE2BDGC9 这一段有点像坐标,坐标的特征一般是X,Y,Z存储在一起,Z表示高度,跳起来或者去其他高地方的时候明显比在低地方要大,水平面上一般是整数,水平面下就是负数 7_NDCY9BN6D693MKG 我在箱子下面的时候是26 我上去试试 7_UE9QSQ8QDA487QP 说明找对了,那么偏移是多少呢?人物结构的地址是6D8DF5C0,X坐标是6D8DF660,用6D8DF660-6D8DF5C0就是X坐标的偏移,Y坐标是X偏移+4 Z是X坐标偏移+8 所以X=+0xa0 Y=+0xa4 Z=+0xa8 7_772AT756AZGZUHK 人物阵营就比较简单了,浏览任务结构的内存,设置成字节,然后不断的换阵营,看哪个在变动 7_9TGDCEAQNCB87GU 我是土匪的时候这两个是2 我变回警察就是3 所以在结构体内的偏移就是6D8DF6B8-6D8DF5C0=0xf8
2.找自身矩阵
找矩阵之前首先要搞清楚矩阵的特点,比如CSGO这个游戏,矩阵是4x4的,4x4的特点如下图所示: 7_8RW3KNTMX5AXWTW 红色方框的一般是 -0.9至0.9之间,开倍镜会变大,再开一次会变大一次,蓝色框框的值两两都是一样的,黑色框框的数值都比较大,最后两个会有偏差,但是偏差不多 知道矩阵的特点就可以开始找举证了,找矩阵最好是买一把可以开倍镜的狙,找的过程如下,首先搜未知的初始值,移动一下枪的视角,搜变动,不动的时候搜未变动,开倍镜搜变动,再开再搜变动,关掉倍镜搜变动,然后不开,也不动视角搜未变动.....重复很多次,直到地址剩下2000个以内,再对剩下的基址进行分析,经过以上步骤后,筛选出以下基址 7_DXUB5CJZWY29CS9 把这些基址拉入地址栏,然后浏览内存,类型选择单浮点,然后建议调整CE的内存窗口大小,一行正好显示4个,这样比较好看变化,然后移动视角,放大倍镜看看是否符合矩阵特点,经过比较,发现下图框出来的就是矩阵 7_Y56WXR9V4TUPQQ5 那么它的基址是如何的出来呢?首先矩阵的首地址是33DC08D4 减去AllocationBase然后加上模块地址就行了 上图黄色方框上面都有这些数据。
最后于 2023-3-11 被admin编辑 ,原因:

最新回复 ( 1 )
全部楼主