发布于:2018-6-13 16:05 | 162424次阅读 作者: 外部投稿 | 原作者: 通化程序员
升级经验作为角色对象下的一个基本数据,虽然不是必不可少的,不过对于辅助脚本的判断也能起到一些锦上添花的作用,并且有很多游戏在角色满经验以后并不会自动升级,需要我们手动点击,这时就需要对当前经验和最大经验进行分析和判断,《QQ西游》就是这样一类游戏。 首先对通过已经得到的角色对象公式在OD中查看角色对象下的数据(如图) 这里我们跟随的是对象+550的位置,因为0到550偏移都是坐标相关的信息,比如朝向,坐标等等,而550以后才是角色的基础信息,比如血量,攻击等等。而通过观察我们很容易发现了 对象+550+8 的位置是角色的等级,而+C的位置是角色的当前经验值,数据类型是浮点型,而在角色对象下,无论我们用什么数据类型查看都无法找到最大的经验值。于是我们可以想到这个经验值是在一个统一的库中进行存放的。通过CE对当前的最大经验值进行搜索(建议等级高一些在进行搜索,否则会得到很多的结果),得到了2个结果,这里我们搜索的是DWORD型,因为浮点型搜索没有得到任何结果(如图)
分别用OD对这两个结果进行查看,发现这两个结果是挨着的而在附近还有其他等级的最大经验值(如图) 我们在第一个地址上下访问断点,点击升级按钮后游戏断下(如图) 分析来源很容易得到了基地址以及数组的代码,并最终得到公式如下 [[0FBDAD4]+n*4]+0 对应等级 [[0FBDAD4]+n*4]+4 升级所需经验 n为等级
来源:通化程序员-公众号投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) |
最新评论
发表评论