大部分网络游戏都是有寻路功能的,只有个别的暗黑系列游戏和FPS游戏没有寻路。而在这些有寻路的游戏中,还有一些是可以跨图寻路的,下面我们来分析一下《QQ仙侠传》的跨图寻路功能。
其实跨图寻路和本图寻路的功能是相似的,唯一不同的是传入了一个目的地图的ID,所以我们想分析跨图寻路,也要从本地寻路入手进行分析,否则操作起来还是比较麻烦的。
在我们进行寻路时,这个坐标会被改写,所以我们要在这个地址上下写入断点。下断后再次寻路,游戏断下(如图)
执行到返回后,得到一个只有寻路会断下的函数(如图)
对这个函数下F2断点,我们发现函数的5个参数都很好分析,第二个和第三个参数很显然是我们传入的xy坐标,而第四个参数始终是0。第五个参数看似是一个结构体参数,其实只有最后一个字节是有效的,其他的都是内存残留。
那么唯一需要我们仔细分析的就是第一个参数了(如图)
通过对不同地图的寻路,我们发现第一个参数都会改变,那也就是说这个参数就是我们所说的地图ID,通过10进制进行观察,也恰好符合这款游戏对ID的设计(如图)
接下来只需要对地图ID进行遍历,就可以对跨图寻路函数进行调用了。