菜鸟教程第四课、用ce和OD找玩家(怪物)选中状态偏移(“绿色征途”人物篇)
菜鸟教程第四课、用ce和OD找玩家(怪物)选中状态偏移 在游戏中存在一种内存地址,这个内存地址的值只会随玩家(怪物)选中是否被选中而改变。只要选中某个玩家(怪物),而且不管是否是同一,这个内存地址的值都不会改变;而在没有选中时,这个内存地址的值才会变为其它的某个定值。 我们就可以根据这个内存地址的值来判断当前有没有选中某个玩家(怪物)。 根据经验猜测在没有选中玩家时,该内存地址中的数值为0,而选中某个玩家后,该内存地址中的数值应该大于0。 一、步骤 1、不选玩家,用ce搜精确数值0,数据类型选2字节。为什么不用4字节呢?因为在这之前,我用4字节搜索了以后没有发现比较好的数值,所以换了一种数据类型来继续查找。 2、选中某个玩家,查找大于0的数值: 3、让自己绕这个玩家走两步,因为你已经选中一个玩家,不管你现在做什么动作,这个内存地址中的数值都不会改变,所以搜未更改的数值: 4、重复上面的步骤(恰当的选择,不一定完全照搬),发现还有17个地址,现在选中了一个玩家: 5、一般我们将数值比较小的用来表示选中状态,挑选出其中数值较小的4个值。 6、下面怎样再从这四个地址中筛选呢?我提供两种方法: 方法一、多选几个不同的玩家,找出没有变化的。 方法二、选中某个NPC,因为NPC不是玩家,所以这个值应该发生变化。 7、我用方法二选中了一个NPC,发现第二个和第四个发生了变化,我就选第二个地址[03862B38]来找下来源,如果找不到就用第四个找: 8、用OD附加游戏,在命令栏中使用dd 03862B38命令,即查看[03862B38]地址中的值: 9、点鼠标右键,选“短型/无符号十进制”: 第一个数字0代表当前没有选中某个玩家。 10、在0处,点右键下硬件访问(word)断点: 11、到游戏中选中某个玩家,游戏断下,来到下图中的1位置(08-11步类似于ce中的“查找访问此地址的代码”): 虽然断在1位置,但其实访问的是上面的2位置: 往上找,在3位置找到EAX的来源: 所以可以用内存地址[[0B90488]+544]里的word型数值来代表当前玩家选中状态,数值为0时代表没有选中,数值为1时代表选中某个玩家。 二、思考: 那么怪物(NPC)选中状态偏移又是什么呢? 其实我们已经找到了,也是此地址。当数值为256时就代表选中了某个怪物。
|