|
|
003-实战游戏,寻找众神选中怪物功能
用CE通过选择不同的怪得到存放怪物ID的动态地址,选中怪的动态地址,选是什么改写了这个地址:这个较像,因为在开始把地址清零,选中先清零,再赋怪物地址,更安全点。
[attachment=719]
打开OD,按ctrl+g,转到表达式 : 491e91.
[attachment=720]
esi+20=[1573e60]+20这个为存放选中怪物的ID
首先在地址491E91处下F2断点,然后再游戏里换怪,发现游戏断下来,说明选怪的操作,和这个段代码有关系,说明我们找对了。esi+20为怪物的地址,我们向上找ES的来源,单击头部,
[attachment=721]
挨个看上层的调用
第一个中发现有ESI=[157360],但是这个CALL,下断后,重新选怪游戏断不下来,说明不是选怪CALL。
[attachment=722]
对找到的这个地址[157360] 进行DD查看内存发现:找到了ESI的地址为 [1573E60].在内存窗口中 dd [1573E60]
[attachment=723]
发现这个地址为一个对象或者说是一个基址,这个比较重要,说明很多东西都是通过基址加偏移来实现的。点右键用文本查看,发现自己的名字。
[attachment=724]
自己的名字,说明这个地址竟然是自己的对象基址。然后用龙龙内存遍历工具查出如下地址。[1573e60] 人物基址
+480 游戏账号
+25c 人物名称
+2bc 人物 当前血
+2E4 人物最大血
+2c0 人物当前蓝
+2e8 人物最大蓝
通过分析发现其中这个call可以让选怪后,游戏断下了,说明为选怪CALL
[attachment=725]
==================================================
选怪CALL
mov esi,[1573e60] //人物基址
mov edi, esi +20 //怪物的id
call 00491e80
===================================================
其中esi+20即=[157360]+20为选中怪的ID,需要遍历怪物数组,才能选取任意怪物。用CE添加地址[157360]+20得到动态地址(选中怪的ID)为
[attachment=726]需要找出怪物数组,得到怪物ID,才能选择CALL时,选择任意怪物。老师没讲,我也没找到,以后慢慢找吧,有找到的同学可以添加,要带步骤哦。
|
|