007 定位明文封包call

007 定位明文封包call

文章目录

明文封包call的作用定位发包函数定位线程发包跳出线程发包定位喊话callTip

明文封包call的作用

在网络游戏中,客户端和服务器的通信基于一系列的数据包。每个数据包都类似于一条指令,客户端和服务器在这个系列指令中完成指定动作。

客户端要与服务器进行通信,必须调用下面的三个发包函数发送数据包

send();

sendto();

WSASend();

那么我们只要在这三个函数下断点,然后进行堆栈回溯分析,就能准确定位关键的函数调用链。在这条链上,快速排查出需要的功能call。

明文封包call的意义在于找到了这个call就相当于找到了百分之90的游戏功能。

但是找发包函数的时候经常会遇到两个问题,一个是重写发包函数,一个是线程发包;传奇永恒属于第二种情况,线程发包。

这里不细讲跳出线程发包的原理,如果这篇文章有某个步骤没有看懂可以去看我另外一篇博客

封包式游戏功能的原理与实现 https://blog.csdn.net/qq_38474570/article/details/105498820

定位发包函数

首先在send函数下断,断点断下,说明这个游戏是采用send函数进行发包

定位线程发包

走路让断点断下,此时堆栈最大的地址是0x1A98。由于x64dbg的调用堆栈看起来不方便,这里看堆栈地址是一样的。

然后喊话再让游戏断下,此时堆栈的最大地址还是0x1A98。两个功能调用时的堆栈地址一样。说明这个游戏采用了线程发包。

跳出线程发包

接着观察第二个参数rdx,rdx作为包内容,地址一直在发生改变。这里就要往上追到rdx的来源,不用追基地址,追到这个地址不发生改变即可。跳出线程发包的关键就是往包地址下写入断点。

往上追rdx

rdx等于rax+rdx,此时rdx为零,追rax

rax来源于rbx+rcx,但是rcx等于0,所以我们只要追rbx

rbx来源于rax

再进call内追rax就追到了一个数组

[[rcx+0xC]+[rcx+0x4]*8]

可以得到这样一个公式,rcx是数组首地址

下断观察,此时rcx的值不会发生改变

rcx这个数组+8的位置是数组大小,每次发包之后,数组大小都会递增。那么现在我们已经找到了包内容的固定地址了

[[rcx+0xC]+[rcx+0x4]*8]

只要在这个地址下访问断点就能跳出线程发包

[0xD80D3EC+0xC]+[0D80D3EC+0x4]*8

替换一下rcx的值

但是这里有一个问题,这个地址并不存在。这个地址不存在的原因是因为

[0D80D3EC+0x4]

这个地址原本想要取出来的是数组的大小也就是0x510的这个值,但是现在直接取出来的话,取出来的是整个QWORD的值,所以会提示这个地址不存在。这样我们就需要修改一下公式

[0xD80D3EC+0xC]+([0D80D3EC+0x4]&0xFFFFFFFF)*8

让[0D80D3EC+0x4]的值和0xFFFFFFFF进行与运算,这样取出来的就是DWORD的值

这样取出来的地址就是有效的

这个地址里面就是所有的包内容,在包内容随便一个位置下硬件写入断点。然后跑到人多的地方走路

由于这个数组的大小是0x800,当这个值等于800时,整个数组才会重置,所以我们要一直走路,走满0x800个封包,等待断下(确实很烦,这特么什么设计~)

等待完成之后,断点断下

接着执行到返回,记录下每层的返回地址。按照游戏的常规套路,一般第一层是封包加密call,第二层是明文封包call,第三层是功能call。

功能call->明文封包->加密封包->线程发包->send

定位喊话call

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ZEOw4W3-1645429671837)(007 定位明文封包call.assets/1641303351421.png)]

我们在第二层的头部下断,然后喊话,可以看到堆栈已经出现了喊话内容

观察此时的参数,rcx是一个字符串,rdx是基地址,r8是喊话的长度,而r9是喊话内容。这个就是我们要的喊话call。那么后续就可以通过这个明文封包call,来定位想要的功能call了。

Tip

这里整理两个找明文发包call的小技巧

避开干扰多的地方,比如玩家多的地方 心跳必然多尽可能找一个发包少的功能,比如创建角色

下一篇文章我们来通过明文发包call,定位一下释放技能call,然后开始写自动打怪的逻辑代码。

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

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

相关推荐

周五晚上转账多久到账
365bet开户

周五晚上转账多久到账

📅 07-03 👁️ 3393
如何用html写出动态网页
365bet网上足球比赛

如何用html写出动态网页

📅 07-10 👁️ 7754
iphone4s充电时间(你们iPhone4S充满电要多久?)
365bet开户

iphone4s充电时间(你们iPhone4S充满电要多久?)

📅 07-10 👁️ 8912