发包call
0072CB2B | 51 | push ecx |
0072CB2C | 50 | push eax |
0072CB2D | B9 38639100 | mov ecx,639.916338 | 916338:&"鸹r"
0072CB32 | E8 49FBFFFF | call <639.sub_72C680> |
整理
push 包长度
push 包地址
mov ecx,0x916338
call 0x0072C680
1.封包使用物品
我们截取两个封包看看
使用随机卷封包内容
14 00 F1 03 21 03 00 00 00 00 00 00 04 00
使用随身NPC封包内容
14 00 F1 03 82 17 00 00 00 00 00 00 04 00
21 03
82 17
可以看到就这两个地方不同 那么他们是什么呢?
很明显就是物品ID啊 因为服务器要用物品ID判断我们使用了什么物品
~~~~~~~~~~~~~~~~~ 就下面这些代码就可以实现使用物品了 是不是很简单呢?~~~~~~~~~~~~~~~~
BYTE 封包[0x20] = { 0 };
*(DWORD*)封包 = 66125844;
*(DWORD*)(封包 + 4) = 物品ID;
*(DWORD*)(封包 + 8) = 0;
*(DWORD*)(封包 + 12) = 4;
发包call(20, (DWORD)封包);
~~~~~~~~~~~~~~~~~~~~这个发包call是通用的 只要截取到包内容 然后我们自己构建一下 就可以快速的实现自己喜欢的功能了~~~~~~~~~
void 发包call(DWORD 包长度,DWORD 包地址)
{
__try
{
__asm
{
push 包长度
push 包地址
mov ecx, 0x00916338
mov eax, 0x0072C680
call eax
}
}
__except (1)
{
printf("发包异常");
}
}