游戏安全实验室 游戏漏洞 外挂分析

时间:2024-04-29 08:10:58来源:功成骨枯网 作者:时尚

游戏安全实验室 游戏漏洞 外挂分析

一、游戏游戏介绍

游戏的安全主要玩法和升级方式是通过打副本做任务。秒怪和技能无CD的实验室游功能可以快速提升玩家等级,加快游戏进度。戏漏析

 

用apktool工具反编译分析APK包的洞外结构,然后使用IDA静态分析和动态调试分析游戏相关逻辑实现方式。挂分

利用IDA解析APK中的游戏关键so文件libtdzmClient.so可以得到绝大部分功能函数,且函数名未被混淆,安全于是实验室游直接从函数名定位到关键逻辑代码。

1、戏漏析秒怪功能实现

通过字符串可定位到CLocalMonster::damage函数负责响应怪物受伤事件,洞外如图1所示该函数会调用CustomActor::setHP设置怪物新血量,挂分在该地方将CustomActor::setHP函数R1参数改成0即可实现功能。游戏(setHP上面R1赋值指令直接改成Opcode:00 21 MOVS R1,安全 #0)

图1. CLocalMonster::damage函数(怪物受伤响应函数)

由于程序对so文件作了一定的保护处理,许多函数的实验室游指令分为几个分开的片段,在setHP()方法处下断点,根据LR的指令值找到上层调用的函数位置,最终定位到如下的代码片段,该方法实现的功能为初始化怪物的血量:

 

图2  怪物血量初始化函数

如图2中红色方框所示,该指令为取第一个参数的值,该参数就是怪物初始化的血量,因此秒怪功能的实现方法就是将该条指令修改为MOV R1,#1,这样一来所有怪物的血量都为1,玩家攻击即可实现秒杀。

2、技能无CD实现

由于技能相关的函数在符号表中可以直接找到,因此直接定位到SkillDataManager类的getSkillCDTime()方法,其关键代码片段如下:

图3  getSkillCDTime函数关键代码片段

如图3中红色方框所示,该指令的作用是将计算出的技能CD秒数写入寄存器R0作为返回值,因此,技能无CD的实现方法就是将该指令改为MOV R0,#0,这样所有的技能CD便都为0,玩家可以无限释放技能。


相关内容
推荐内容