寻路call CE活体分析报告(2026-09-27 20:04,pid 7884 一至尊霸王花一,CE桥安全读取+本地capstone反汇编) 【一、你的走路call调用了什么】 全段机器码只有 1 个 call:call edx edx = [ [人物对象动态指针] 的虚表 + 4 ] → 人物对象虚表第2项 = 通用命令派发函数(thiscall, ecx=人物对象) 压栈参数:0x3EF(1007,寻路命令号) / pData(84字节参数) / 0x54(84) pData 结构(游戏原生写法对照后确认): +0x00 = X(小数) +0x04 = Z/高度(0) +0x08 = Y(小数) +0x18 = 0xFFFF +0x1C = 1 +0x20(字节) = 1 +0x24 = 100(0x64)←游戏会写,你的代码没写 (X在+0、Y在+8、中间+4是Z,三维坐标布局) 【二、游戏自带的同款发送点(铁证)】 代码 0x0057B3A5 处就是游戏自己发 0x3EF 的地方,所在函数 = 0x57A4F0(起始,int3填充后)。 游戏版的参数组装与你的 call 完全同构(0xFFFF、1、字节1 全部对上)。 【三、该函数就是"走向一个路径节点"的执行器】 输入:人物对象 + 一个"节点"结构指针。节点结构:X@+0x12、Y@+0x1a、Z@+0x16(非对齐浮点),另有 ID 字段 +6、+0xA。 流程: 1. 距离判定:|自身X - 节点X| < 5.0 且 |自身Y - 节点Y| <= 3.0(阈值常量 0x10AD59C=5.0、0x10AD310=3.0) 2. 未到达 → 组参数发 0x3EF(走过去) + 0x407 3. 已到达 → 组参数发 0x3F2(含节点坐标, 参数+0x28=2) + 0x407 4. 无论哪个分支最后都发 0x459(带节点指针)、0x45A 自身坐标实测位置:人物对象 +0x1F84 = X、+0x1F8C = Y(与旧基址总表一致,仍有效) 【四、"上层是否有寻路坐标列表"的结论】 有上层,形态是"消息派发"而非静态数组: 0x57A4F0 的唯一调用点在 0x58E380 —— 一张大 switch 派发表(0x58E300~0x58E3C0 一带几十个case, 每个case把 [ebp+8] 消息/节点结构转交不同处理函数)。 即:游戏把每个路径节点包装成结构体逐个投递,执行器一次只吃一个点。 节点的"坐标列表"由更上层的自动寻路/地图点系统生成,不在一个简单的静态数组里 (本函数内的 0x03BF516C 管理器 +0x53C 数组是别的东西,50项带+0x598字节标志,非路径表)。 【五、给你的实战建议(多点寻路不用找游戏列表)】 自己维护坐标列表 + 循环调你的走路call即可,节奏控制抄游戏: 1. 每个点:发 0x3EF call; 2. 读自身坐标(人物对象+0x1F84=X、+0x1F8C=Y,人物对象=读整数(人物基址值)再解一层); 3. |X-目标X|<5 且 |Y-目标Y|<3 → 视为到达,发下一个点; 4. 建议把 pData+0x24 也写成 100(游戏原生会写,你的代码目前留0,补上更接近原生行为)。 【附:静态锚点(本版本实测)】 0x03BF516C = 管理器指针(+0x53C 起指针数组,50项上限) 0x03C441B8 = 当前场景/对象全局(执行器内做比对) 命令号族:0x3EF走路 / 0x3F2到达 / 0x407 / 0x459 / 0x45A 【三·深挖:坐标列表到底在哪(2026-09-27 20:18 追加)】 搜索方法:全代码段字节级特征扫描"谁在往 +0x12/+0x16/+0x1a 写浮点/dword" (movss F3 0F 11 [40-7F] disp8 / mov 89 [40-7F] disp8 两种形式全扫)。 结果: 1. movss 写入:0 处;mov 写入三偏移的"同函数簇":0 处 → 模块代码里【没有任何地方构造这种节点结构】 → 节点是整块 memcpy 进来的(坐标在非对齐 +0x12 = 网络包原始缓冲区特征) 2. 调用链追到顶:执行器0x57A4F0 ← 消息派发switch 0x58E3xx(函数0x58DE30) ← 主循环场景更新 0x58DB20 ← 引擎帧循环 0x8D2694 每帧最多处理一条消息,[ebp+0xC] 即消息参数,无队列遍历 3. 结论:客户端【没有】一份可读的寻路坐标数组。 路径点列表在服务端——游戏远距离自动寻路 = 服务器逐点下发节点(封包) + 客户端逐点执行。 节点结构里的 ID(+6/+0xA, 如 0x61A81=400001) 是服务器对象/路径点编号。 4. 终极验证(可选,需抓包):点游戏自带远距离自动寻路,抓走路封包—— 若服务器连续下发多条坐标递进的走路包 → 坐标列表在服务端实锤。 5. 实战不变:自己的多点寻路 = EPL里自己存坐标数组 + 循环发call + 按5.0/3.0判到达。 分析产物:code.bin(0x401000-0xA00000代码段快照)、walk_step1~5b.json、capstone 5.0.7(venv)