发布于:2018-8-29 10:00 | 301507次阅读 作者: 外部投稿 | 原作者: 通化程序员
怪物和NPC的坐标由于不好控制其走位,所以扫描起来也比较麻烦,所以一般来说我们都是从角色坐标入手去分析怪物坐标遍历。由于《天涯明月刀》中的角色坐标在遍历中的访问很少,并没有从直接得到角色坐标基地址的访问代码那么多,所以我们想直接返回到遍历中是很难的。于是我们尝试从某些坐标偏移所在的函数头部下断,来寻找不同的返回,从而得到怪物遍历经过的代码。 我们来到角色坐标+404偏移所在的函数处(如图)
我们在头部下断后,第一次断下得到的是角色的坐标地址,我们点F9发现ECX变化,而ecx+4也变为了“ManNPC”,这说明我们断到了NPC坐标所在的地址(如图) 执行到返回并继续分析ecx的来源,经过一层参数传递,和一层局部变量传递,得到了-10偏移(如图) 继续向上分析又转到了错误的代码中,于是我们通过CE对这层偏移的来源进行扫描,得到较少的结果(如图) 如果对怪物的属性分析稍微熟悉一点,可以观察到在这个地址上面是怪物的两个ID(如图) 用OD对这个地址下访问断点,游戏很快断下(如图) 访问代码较多,所以可能断的位置会不同,但是得到的结果相差不大,这里我们得到+8偏移,继续向上分析得到来源于01097B95 处的 call 00CEFE80内部,到函数内部可以得到一个数组套链表的结构,以及基地址(如图) 这样我们就得到了怪物坐标的遍历公式,不过由于分析的方法不同,可能每个人得到的公式会有一定的差异,不过只要结构中的对象数量一致就没有任何的问题。
来源:通化程序员-投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) 收藏
|
最新评论
发表评论