传奇怪物基址 MHS+OD[需要指正的的请留言]

  (这是边跟代码边记录下来的,也没有整理,可能有些不对的地方请见谅,比如在末尾...,但结果是预期的结果。需要详细说明的请留言。。。只有这句是后来加的)

目的:

  先用MHS软件找到,某个怪物X坐标的动态内存地址(实际查找能找到到了自己,NPC,怪物的坐标信息),看看是哪个语句写入了这个地址。再在OD中跟踪这个地址的数据的传递来源,一直找到一个固定的内存地址,根据传递路径得到X坐标的计算公式。 [常量地址]-->eax-->ebx-->ebp-->....-->[eax]=[动态地址]

  1、进入游戏,这个 鹿 的X坐标发送变化的时候用MHS进行搜索,查看 改写给该地址的 汇编 语句

                   

 

 

 

扫描到的地址是: 086FF06C,写入该地址的反汇编语句是:00618C3D MOV DW PTR [EBX+2AC],EAX

 

2,用OD附加游戏进程

 同时  正好是一个怪物的x坐标。

那么需要向上找EBX的来源了。

 EBX<--EAX

和前一行的代码相距不远也到了这个call(可能是的)的头部了,

,这像个CALL函数,CALL.00618C08

F2,F2,CTRL+F9跳出去

 EAX<--EBX 向上找EBX。

EBX<--EAX,再找eax,向上到达了代码片的头部了,跳出去也只有一个CALL,再跳出去。

eax<--esi,一直找到代码段的头部,F2断下,ESI的值由EBP传来。

 ESI<--[EBP-4]<--EAX,到达代码段头部,需要出去跟EAX

EAX<--ESI,不断的向上观察ESI是否会变。

ESI<--EAX<--EDI<--[EAX]<--[EBP-04]+0x9C,通常EBP在CALL的头部用MOV EBP,ESP赋值,果然...

  

不过这下面还有一句<混在几个蓝色的一起好容易漏看到>

[EBP-4]<--EAX,这里像是一个CALL.5CAAA4,需要跳出去找EAX来源

    但跳出去,不在CALL.5CAAA4下面。因我不太会用OD,只有不断跳,一直跟到CALL.5CAAA4下

  EAX<--[006ACB58],到这里就结束了。可以列个计算式了。

ox6ACB58]]+0x40]+0x8] 是周围怪物的个数(包含自己)

ox6ACB58]]+0x40]+0x4]+4xi] 为周围怪物的地址信息,包含了名称代码,坐标 ,朝向等等(i==0时 就是自己的信息结构)

posted @ 2015-01-26 10:32  O-Y  阅读(1458)  评论(0编辑  收藏  举报