封包的加密与解密、线程发包、收包
目录
三大发包函数
- send
- WSASend
- sendto
模块前缀为ws2_32
WSPSend (在同一个电脑上位置是固定的)
DXF单机版 私服
找到WSPSend
- 附加上口袋西游(或者任何的send发包的软件都可以),跳到send位置
- send 第三个call下断(win7是第三个,win10是第四个),断下后F7进入,这就是WSPSend的位置。
- 附加到目标进程,跳转到这个地址,下断。
- 有时WSASend胡乱断,不是真正的发包 ,根据它的特征码,去搜索。查找–>所有命令 ,输入特征码,然后右键–>在每个命令上下设置断点。然后在所有被断下的位置做标记(注释),并取消断点。然后去执行喊话等发包操作,看在哪断下。如果不断,说明在刚才被标记的里面。之后逐一下断测试。
|
|
线程发包
线程发包的特点:
- 断得非常频繁
- 任何功能堆栈返回都是一样的
|
|
正常流程
- 找到发包函数
- 判断是不是线程发包
- 判断包内容(非包长)的地址是否变化
跳出线程发包的步骤:
|
|
条件断
实例
|
|
找出加密封包
找出加密封包的步骤:
|
|
明文包
|
|
- 到加密封包的外层找明文包。
找出明文封包的步骤:
|
|
找出加密CALL
找出加密CALL的步骤:
|
|
分析加密CALL
需要分析的元素:
- CALL的参数
- 包长
- 包地址
- 加密地址
- 加密长度
- 密钥(找到就行)
- CALL内的寄存器
调用加密CALL加密
实例
|
|

发送喊话函数封包
|
|


C++写 加密CALL
|
|
结合加密call,写加密封包,完全不走游戏代码


不走游戏代码,写吃药封包

收包recv
- recv也存在重写问题
|
|
|
|
控件包
|
|