- 注册时间
 - 2011-1-27
 
- 最后登录
 - 2021-8-19
 
- 在线时间
 - 229 小时
 
 
 
 
 
终身VIP会员 
花钱是让你服务的,不是叫你大哥 ... 
    
	- 魔鬼币
 - 10656 
 
 
 
 | 
 
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 
调用成功! 
*其实,直接进行走路,也会截获走路封包,以上的方法算是提供一种思路吧。 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |