寻路call 分析存档(2026-09-27,用户提供代码逆向解读) 【调用链】整段机器码只调用了 1 个 call: call edx edx = [ [人物对象动态指针] + 0 ] 取虚表 → 再 [虚表+4] 取第 2 个虚函数 即:人物对象(thiscall, ecx=对象) → 对象虚表第2项 = 通用命令派发函数 【压栈参数】(push 顺序 0x54 → pData → 0x3EF,栈序 [esp]=0x3EF) 参数1 = 0x3EF(十进制 1007)= 命令号:寻路/走路 参数2 = pData = 84 字节参数结构指针 参数3 = 0x54(十进制 84)= 参数结构大小 派发函数原型推测:派发(命令号, 参数指针, 参数大小),ecx=人物对象 【pData 84字节结构(代码实际写的字段)】 +0x00 = 坐标X(小数) +0x04 = 未写(疑为 Z/高度,保持 0) +0x08 = 坐标y(小数) +0x18 = 0xFFFF +0x1C = 1 +0x20 = 1(字节) 其余全 0。X 写 +0、Y 写 +8,中间 +4 空着 → 疑为 X,Z,Y 三维坐标布局 【"上层是否有寻路坐标列表"的判断】 从此 call 本身看:只写了 1 个坐标点 + 3 个标志,其余全 0 → 单点命令可能性大, 不像一次携带路径数组(若真有列表应出现在 +0xC 之后的坐标数组区)。 上层自动寻路的两种可能: A. 上层循环调用本 call,逐点发送路径队列(队列在别处) B. 另有更高层命令号带路径数组(本 call 只是单步) 验证方法:游戏内点远距离自动寻路,抓包看是否连续多条走路封包(坐标递进)→ 连续多条 = 上层是坐标队列循环调用;只发一条但角色一路走完 = 上层另有路径引擎。 命令号 0x3EF(1007) 与其他功能 call(攻击/拾取等)共用同一派发函数,仅命令号不同。