发布于:2017-12-21 09:54 | 193605次阅读 作者: 外部投稿 | 原作者: 外部投稿
近些年,随着3D游戏的发展,无锁定的游戏模式应用的越来越广泛,尤其是像《天涯明月刀》这类的武侠题材的游戏,应用了无锁定模式后使游戏的可玩性更高,技能效果更加唯美。那么对于外挂作者来说新的问题出现了,如何通过内存来角色实现技能的释放,代码逻辑上的要求也提高了很多。接下来我们分析技能释放中最重要的朝向值。 《天涯明月刀》这样一款细腻而又大气的3D游戏,对朝向的设定也相对复杂一些,最重要的3个朝向值分别是角色朝向,技能朝向,视角朝向。其实对于玩家来说这3个朝向值都是随着操作去改变的,少了哪一个都会让游戏的体验大打折扣或者无法继续进行,而对于外挂来说,只要找到技能朝向就可以了。顾名思义,角色朝向指的是角色本身面向的方向,技能朝向是释放技能的时候技能释放的方向,而视角朝向则是我们从哪一个角度看我们自己的角色。往往改变了技能朝向后,随着技能的释放,角色朝向也会随之改变。 首先通过CE进行搜索,因为朝向是一个精确度很高的数值,所以我们选择float搜索未知初始值,然后通过不断的改变朝向来过滤,最终得到了200多个结果(如图) 分别改变这些值,发现了一个可以改变角色朝向的值,在OD中下访问断点,角色转向游戏断下(如图) 继续分析到头部执行到返回以后得到了偏移0xFC(如图) 继续分析后我们可以得到较多层偏移,最终的公式如下 [[[[基地址]+80]+10+0FC]+0A0]+0D4 X朝向 [[[[基地址]+80]+10+0FC]+0A0]+0D8 Y朝向 (具体的逆向过程这里不做过多叙述,由于游戏版本较低,部分偏移可能与实际偏移有偏差)最终我们的得到的朝向值范围是从[-1,1],而朝向值分为X和Y,技能朝向在角色朝向附近,可以很轻易发现。 几种常见的朝向值如下 1. 从-1到1 2. 从-π到π 或者从0到2π 3. 从0到360 4. 其他程序员自定义朝向值 朝向值在数据中的表现形式也分多种,常见的如下 1. 以一个值会变动的内存地址同时表现XY朝向,以单独的内存地址表现Z朝向 2. 分别以单独内存地址分别表现XYZ朝向 (比如狩猎朝向) 这样我们的朝向就分析完了,在写代码的时候还需要注意很多的细节,比如角色和技能朝向最好同时改写;打怪时要考虑到角色和怪物相向运动时相遇的坐标点,防止走的过远导致技能朝向变为反向等等。
来源:外部投稿 |
最新评论
发表评论