幻想神域之 功能call
要先找到功能call, 就要明白功能call 的最终去向.不同的功能会产生不同的与服务器交互的数据流.
所以我们要顺藤摸瓜. 先找到明文call .
想找到明文call 可以通过发包函数返回
1. 三大发包函数
send sendto WSASend
以及他们的底层 WSPSend
经过测试发现是 WSASend
2.确定游戏是否是线程发包
看堆栈大小 堆栈过小是线程发包 .
看返回 测试功能发包返回是否会跑飞,是的话是线程发包
3. 记录从发包函数到跑飞的所有经过的函数call. 每层下断点,找到功能包很心跳包的分界所在的函数call
4. 在可以下功能call 的地方下断点,设置条件断点过滤掉发给服务器的心跳.过滤出真正的功能数据包
5. 了解各个发包函数参数结构
WSASend 第一个参数为 socket的handle
第二个参数为 一个包含包长的结构体
{
int size;
int* 内容;
}
6. 下条件断点过滤心跳包
发现包长为 0x11的为心跳包,设置条件断点过滤
7. 点击地面,触发走路call
走路包长为 0x1E 设置条件断点为 == 0x1E