wangbeng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

光通传奇3 永恒传奇3(GSR版本) (四) 小地图自动巡路call

先根据小地图双击鼠标目标地址坐标X,Y的变化,找到自动巡路目的地坐标地址:

X = E8CAAC
Y = E8CAAE

在地址 E8CAAC 上 “find who access this address",得到:
image

转到 0x0004A35BA:
可以一眼看出来 ,明显直接就是自动巡路call了。

Mir3Game.exe+A35A8 - 8B 86 1C020000        - mov eax,[esi+0000021C]
Mir3Game.exe+A35AE - 8B 8E 20020000        - mov ecx,[esi+00000220]
Mir3Game.exe+A35B4 - 88 9E D7010000        - mov [esi+000001D7],bl   '<======巡路1  ,到达0   esi = 0x0b8c8d0'
Mir3Game.exe+A35BA - 89 86 DC010000        - mov [esi+000001DC],eax  '<======= 目的地X'
Mir3Game.exe+A35C0 - 89 8E E0010000        - mov [esi+000001E0],ecx    '<======= 目的地Y'
Mir3Game.exe+A35C6 - E8 45F00400           - call Mir3Game.exe+F2610  '  自动巡路call ,仅在窗口前台状态可以)'
Mir3Game.exe+A35CB - 8A C3                 - mov al,bl

//-------------CE lua script 调用  AutoAssemble call--------------
function autoWalk(run,x,y)
  --print("star...")
  local sx = string.format("0x%X", x)
  local sy = string.format("0x%X", y)
  local srun = string.format("0x%X", run)
  if run==nil then
    run=0
  end
  local script =string.format( [[
    globalAlloc(newmem,256)

    newmem: 
    mov esi,0b8c8d0+01d7
    mov [esi], %s
    mov [0b8c8d0+1dc],%s
    mov [0b8c8d0+1e0],%s
    call 004EAC60
    ret

    createThread(newmem)
    //dealloc(newmem)
  ]],srun,sx,sy)

  local a = autoAssemble(script);
  --log("==run.in..==="..newmem)
end
posted on 2026-06-11 11:34  wangbeng  阅读(10)  评论(0)    收藏  举报