文章目录

  • 打开NPC
  • 交任务
  • 接任务


打开NPC

wow questie自动交接任务_字段

来到明文封包call头部,点击NPC,然后断下。这里最好新建一个1级的小号,去分析,这样周围没有其他玩家会少很多干扰项。

wow questie自动交接任务_数据_02

返回上层,这个call应该就是我们要的选择NPC的call

wow questie自动交接任务_数据_03

但是我们再次点击NPC时,发现这个call并不断,那么说明这个call并不是选择NPC的call,可能是选怪call或者其他的选择call

wow questie自动交接任务_数据_04

这个call的作用应该是点击之后将选择的NPC在上方出现一个血条。那么我们应该在这个出现血条的状态下,再去点击NPC

wow questie自动交接任务_数据_05

此时会返回到一个call,和之前的选择call很像,但是注意eax的值是不一样的。接着来分析这个call的参数。

wow questie自动交接任务_wow questie自动交接任务_06

这个call实际上是在明文封包call的第一层返回地址处,也就是明文封包发送call。

其中rcx是个基地址,这个是和之前走路的rcx同为一个基地址。r8是包长,rdx是结构体,也就是包内容。

00000000011FF050 75 00 6D 25 00 10 00 00 00 00 00 00 00 00 00 00

这里就要来分析下封包内容了。我们可以结合组包的汇编代码来分析包内容每个字段的长度。

00007FF64E1713C6 | 66:894424 40          | mov word ptr ss:[rsp+0x40],ax           |

第一个0075,其实也就是eax的值,这个是封包的头部,用来区分发送的封包类型。根据汇编可以知道长度是WORD。

00007FF64E1713B9 | 895424 42             | mov dword ptr ss:[rsp+0x42],edx         |

接下来的四个字节dword长度,应该是NPC的ID,后续的全部为0。

打开NPC,只需要知道一个数据,就是打开的NPC是谁。所以有效的数据就只有一个ID

打开NPC 长度6
+0 0075 WORD
+2 NPC-ID DWORD

交任务

接着再来分析交任务

wow questie自动交接任务_数据_07

来到明文封包call头部,点击交任务。

wow questie自动交接任务_wow questie自动交接任务_08

接着返回上层。这个位置和之前的call还是很像。rcx是基地址,r8是包长,rdx是包内容,那么我们只要分析包内容就可以了。

包内容:

00000000011FE350 72 00 A1 05 00 00 FF FF FF FF 00 00 00 00 00 00

分析结果:

交任务 长度0A
+0 0072 WORD
+2 05A1 任务ID DWORD
+6 FF FF FF FF DWORD 有可能是需要选择的任务奖励

一般来说交任务只需要任务ID,所以后面的8个F分析不出来也无所谓。如果想要知道某个字段的具体含义,可以去追寄存器的来源。

接任务

接着再分析下接任务

wow questie自动交接任务_封包_09

下断,然后点接受任务

wow questie自动交接任务_封包_10

返回上层,还是一样的结构,只不过eax变成了0x71,代表封包类型的变化

00000000011FE300 71 00 A2 05 00 00 01 00 00 00 00 00 00 00 00 00

分析结果:

接任务 长度0xE
+0 0071 WORD
+2 05A2 任务ID DWORD
+6 01 DWORD
+A 00 DWORD

上面分析的都是明文发包call,调用的时候只需要再往上返一层,调用功能call即可。

Github:https://github.com/TonyChen56/GameReverseNote

完整代码: