致力于分享游戏安全技术,提供专业的游戏安全资讯
使用CE扫描人物血量
首先尝试 整数型
发现扫描不到,说明不是整数型
那么尝试其他类型
扫描float类型,得到结果
拿到血量地址 到od中下断追踪其来源
断到的代码
其中eax是变化的
不能在代码段下断,否则断到的不一定是人物血量的调用,可能是其他属性
只能直接在地址上下断,得到EAX==0BF,然后继续追踪来源
继续往上追
esi来源于堆栈
我们在断下的情况去看 [esp+C]是什么
发现是上一层的第二个参数
那么CTRL+F9 继续返回追踪
edi 是第二个参数
表达式变成
edi+0BF*4+550
继续往上追
看到retn
应该判断是否来到了函数头部
下断以后发现 堆栈的第一条并不是返回到 ,所以判定该处不是函数头部
而是其他地方跳转来的
搜索常量00516F33
发现上面的跳转
那么继续往上追
又来源于上层第三个参数
ebp 是上一层第三个参数
此时EBP不是堆栈地址 ,而是一个普通的寄存器
表达式变成 ebp +0BF*4+550
继续往上追
发现追到了一个数组
表达式
[[0FB5FB4]+0*4]+0BF*4+550
数组第一个成员就是我们的人物
那么说明人物在一个结构里
很可能是NPC 怪物放在一起
当然人物也应该有单独存放的位置
我们可以尝试单独去一下人物的表达式
那么就要在对象的位置 找不同的一个访问才可能找到
对象血量 [[0FB5FB4]+0*4]+0BF*4+550
来源:通化程序员-公众号投稿
*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)
近期精品文章:
∨
投稿文章:[email protected]
原文始发于微信公众号(游戏安全实验室):【游戏漏洞】QQ西游周围数组遍历
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论