018 打开NPC交接任务功能分析

打开NPC

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

这个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

交任务

接着再来分析交任务

在这里插入图片描述

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

在这里插入图片描述

接着返回上层。这个位置和之前的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分析不出来也无所谓。如果想要知道某个字段的具体含义,可以去追寄存器的来源。

接任务

接着再分析下接任务

在这里插入图片描述

下断,然后点接受任务

在这里插入图片描述

返回上层,还是一样的结构,只不过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

完整代码:https://download.csdn.net/download/qq_38474570/79498815

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼手56

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值