1、瞬移功能的收益点 1)、藏宝图活动,可快速打宝图和挖宝(游戏本身每打/挖完一张会自动寻路下一张,NPC瞬移功能可略过自动寻路过程,实现不间断打/挖宝图) 2)、NPC相关任务(师门、主线、支线),点击任务面板均可瞬移到相应NPC完成任务,尤其方便前期小号刷级(比较多这种主线任务)。 2、漏洞实现使用工具 利用APKTOOL解APK包,IDA进行静态分析和动态调试,分析反编译出lua明文代码,修改特定脚本逻辑替换即可重现漏洞。 3、漏洞实现过程及实现原理 梦幻西游游戏玩家经常需要移动到NPC身边(主线/支线任务、NPC商铺、封妖、宝箱等),而游戏自身的寻路较为耗时。这里提到的漏洞可让玩家瞬移到目标NPC(通过任务面板或者小地图又或者屏幕内随意选中NPC),从而减少玩家这方面的时间消耗,尤其方便刷小号(新手阶段需要各种移动至NPC)。 通过IDA静态分析,可看出梦幻西游是采用Lua脚本进行游戏逻辑开发。由于Lua引擎是开源项目,直接分析该引擎代码可以知道Lua会通过lua_Reader函数读取脚本内容。因此,可直接在该点Dump Lua脚本代码。梦幻西游没有直接下发Lua源码,需要反编译出Lua明文代码(需要留意其对lua引擎进行了一定修改,Opcode需要还原)。在获取到游戏明文Lua代码后,仔细阅读分析挖掘即可,然后通过HOOK Lua引擎替换修改后的代码回去即可测试漏洞。 本报告提到的瞬移至NPC漏洞修改原理如下: 1、还原Opcode再反编译分析,能看到处理玩家移动到指定NPC的函数(CHero:walk_to_npc),直接修改该函数即可:调用底层的寻路函数(FindPath)获取移动路径,然后细化遍历相应路径点,伪造相关移动信息发送到(world.netaoi.C_MAP_MOVE)服务端,最后将玩家坐标设置到目的地(setMapPos)。一种简易的实现方式 明明知道为什么不打击 |