- 注册时间
- 2011-1-27
- 最后登录
- 2021-8-19
- 在线时间
- 229 小时
终身VIP会员
花钱是让你服务的,不是叫你大哥 ...
- 魔鬼币
- 10632
|
1. 目的地地址偏移
梦幻聊斋的坐标在内存中是以4字节浮点数来表示的。
*这里需要注明一点,浮点坐标数据,前2个字节是整数位,后2个字节为小数位,如果没有小数位,比如50.00,这时候在内存会表示为 XXXX0000 (X代表未知十六进制数)。
好,我们首先来找目的地地址的偏移。
首先通过CE来找偏移,通过在CE中 增加的数值和减少的数值来寻找存放 目的地地址偏移 的内存地址。
MOV EDX,[ESI+78] ESI=01BA90A8
MOV EAX,[ECX+08] ECX=01B9F418
006DBBEF MOV EAX,[ECX+EAX*4] //EAX=1 ECX=01BA90B0
到这一句的时候,已经无法再从CE中找到数据了,EAX在CE中显示为一个内存地址,并非上面的数据1,但其实确实是数据1(原因是,CE中已经执行完这条指令)
打开OD,附加游戏:
搜索006DBBEF找到指令,
返回到顶部,下普通断点....
LEA ECX,DWORD PTR DS:[EDI+8] //EDI=01BA90A8 (下HR断点)
LEA ECX,DWORD PTR DS:[ESI+288] //ESI=01BA8E20 (下HR断点)
CE查找01BA8E20的来源
MOV ESI,[01358ED8]
DD [[[[01358ED8]+288+8+EAX*4]+08]+78] //正确。其中EAX应该是某种标识。
2. 走路CALL(寻路CALL暂时未分析)
通过对上面找到的目的地地址偏移 下 HW(硬件写入断点),断下后整理堆栈数据,依次分析。
这里直接给出目前的走路call:
PUSH 1
PUSH 0
PUSH 0
PUSH 42CECE83 //Y轴浮点数据
PUSH 420C3E40 //X轴浮点数据
MOV ECX,01B9F418 //未仔细找来源,不退游戏内存地址不改变,应该是诸如 人物对象偏移 这类。
CALL 006DDA40
调用成功!
*其实,直接进行走路,也会截获走路封包,以上的方法算是提供一种思路吧。 |
评分
-
查看全部评分
|