揰掵佲 发表于 2014-11-17 09:05:24

菜鸟教程第四课、用ce和OD找玩家(怪物)选中状态偏移(“绿色征途”人物篇)

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

怀旧蒲公英 发表于 2014-11-17 09:14:55

这么好的资源,无条件抱走。

fengxin0007 发表于 2014-11-17 09:17:01

谢谢楼主分享

最终的幻象 发表于 2014-11-17 09:22:39

优秀文章!神马都是浮云,支持!

325019289 发表于 2014-11-17 10:17:35

你研究的东西真多

安。 发表于 2014-11-17 22:18:13

赞一个。
页: [1]
查看完整版本: 菜鸟教程第四课、用ce和OD找玩家(怪物)选中状态偏移(“绿色征途”人物篇)