分析寻路call

分析寻路call

首先在CE中根据0 1以及是否勾选移动开关开找到鼠标移动这个flag

 

 

然后在按下F5找出是什么访问了这个地址

注意:

按下F5之后,进程会直接访问这个地址,但是这段代码并不是我们想要的,我们想要的是,移动之前的判断,所以我们需要让人物移动一下,然后在找到另外一段代码

 

wow.exe+32B702:
0072B6FB - 75 25 - jne wow.exe+32B722
0072B6FD - A1 F408BD00 - mov eax,[wow.exe+7D08F4]
0072B702 - 39 50 30  - cmp [eax+30],edx <<
0072B705 - 74 1B - je wow.exe+32B722
0072B707 - D9EE - fldz

EAX=182DBC80
EBX=287F46E0
ECX=287F46E0
EDX=00000000
ESI=0525FA64
EDI=00000000
EBP=0525F9C4
ESP=0525F9BC
EIP=0072B705


First seen:23:50:50
Last seen:23:50:50
0072B705 | 74 1B                    | je wow.72B722                            | 判断zf标志位,如果为1则跳转
0072B707 | D9EE                     | fldz                                     | 寻路功能开始
0072B709 | 51                       | push ecx                                 |
0072B70A | D91C24                   | fstp dword ptr ss:[esp],st(0)            |
0072B70D | 8955 F8                  | mov dword ptr ss:[ebp-8],edx             |
0072B710 | 8955 FC                  | mov dword ptr ss:[ebp-4],edx             |
0072B713 | 8B55 08                  | mov edx,dword ptr ss:[ebp+8]             |
0072B716 | 52                       | push edx                                 |
0072B717 | 8D45 F8                  | lea eax,dword ptr ss:[ebp-8]             | eax=ebp-8
0072B71A | 50                       | push eax                                 | eax是一个地址 32bit系统下占8个字节
0072B71B | 6A 04                    | push 4                                   |
0072B71D | E8 DEBCFFFF              | call <wow.sub_727400>                    | 移动/寻路功能 内平栈 4个参数

分析一下移动call的参数:

  • 0x4

  • 八个字节的一个地址

  • 坐标的地址

  • 最后一个参数暂时可以先把他固定0x287F46E0 每次启动游戏都会改变,后面会去找这个参数来源

下面使用代码注入器来测试移动call

sub esp, 0x100
push 0x291547C0

lea edx, [esp+0x50]
mov dword ptr ss:[edx], 0xDEE8046A
mov dword ptr ss:[edx+0x4], 0x8BFFFFBC
mov dword ptr ss:[edx+0x8], 0x04C25DE5
push edx

lea ebx, [esp+0x20]
mov dword ptr ss:[ebx], 0x0
mov dword ptr ss:[ebx+0x4], 0x0
push ebx
push 0x4
mov ecx, 0x291547C0
call 0x00727400
add esp, 0x100

上面代码使用代码注入器可以成功注入并移动,但是在最开始测试的时候出现了一点问题,导致一直注入不成功,原因是调用的call中使用到了ecx这个寄存器,即寄存器传参,我并没有传入这个参数导致程序崩溃

 

 

 

 

 

 

 

 

 

请登录后发表评论