发布于:2018-12-14 11:19 | 150073次阅读 作者: 外部投稿 | 原作者: 通化程序员
背包分析大多是从物品数量入手的,但是有时候由于可叠加物品的数量较少,无法在耗尽之前得到物品数量的地址,这时就需要从物品名字作为突破口来进行分析。下面我们来分析下《天堂2》的背包。 首先通过CE对物品的名字进行扫描,可以得到较少的结果,对其进行修改后发现其中一个可以改变物品名字的本地显示(如图)
用OD对该地址下访问断点,在访问物品后游戏断下(如图) 执行到返回后两次,继续分析第一个参数的来源,可以在0B6A7178处的函数中可以得到+0偏移,而在函数上面可以得到+18偏移(如图) 继续向上分析可以得到一个数组和+0偏移(如图) 但是经过对这个数组反复下断,发现数组的起始地址是变化的,这说明这个数组并不是物品数组而是物品对象下的属性数组。 执行到返回后,可以在0B6B324F中得到+2C偏移(如图) 继续分析后,发现来源于第一个参数,但是执行到返回时发现线程卡主了,这说明这里有多次的循环代码或者VM之类的代码。于是我们通过跳到栈底进行返回,并得到+2F0偏移(如图) 继续向上分析,可以在本层函数中得到数组和+2D4偏移(如图) 而在多次执行到返回后可以很容易得到几层偏移(如图)(如图) 用CE对最后一层偏移所在的地址进行扫描,可以得到基地址(如图) 接下来只要对背包对象进行分析,就可以得到物品数量,ID等偏移。 来源:通化程序员—投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) |
最新评论
发表评论