游戏逆向1. 寻找基值

游戏逆向1. 寻找基值

结构体地址寻找

在游戏开发中, 很多数据的组织形式如下

1
2
3
4
struct PlayerObject {
short team;
int hp;
};

在寻找到其中一个字段后, 便可以通过它的偏移获取到其结构体的地址

实战:

image 2024 08 04 19 26 09 000

可以看到其中有很多的形如 cmp dword ptr [ecx+230], 00 的指令, 可以获知 hp 字段的偏移为 230 , 且数据类型为dword

人物数据存储位置寻找

这个结构体99%是存储在堆上的, 现在已经知道了结构体的地址为 ECX=6AED1FE0, 现在可以去搜索51264410在哪里出现过

这种存储结果一般有三种类型, 分别为 链表, 数组, 二叉树. 可以在搜索后通过查看内存信息进行判断

image 2024 08 06 22 51 53 033

虽然网上说它使用的数据结构是链表, 但是内存中看不出来链表的指针结构, 反而像是一个数组, 再看其内存结构, 更像数组了

image 2024 08 06 22 55 45 351

每个结构体大小为0x18, 第一个字段便指向人物结构体, 那么其基地址为

523A05D4 - 518F000 = AB05D4

人物位置和视角数据分析

一般来说, 血量和人物数据很有可能是放在同一个结构体内的, 那么只要在血量附近查看数据即可搜索到

image 2024 08 06 23 04 28 081

在连续移动时, 发现这三个地址一直在变, 可推测为人物位置


游戏逆向1. 寻找基值
https://simonkimi.githubio.io/2024/08/04/游戏逆向1-寻找基值/
作者
simonkimi
发布于
2024年8月4日
许可协议