【漏洞分析】有杀气童话竞技场直接胜利分析

admin 2022年7月25日04:40:52评论22 views字数 1181阅读3分56秒阅读模式

一 漏洞简介

    1)漏洞所属游戏名及基本介绍:有杀气童话(com.netease.sq),ARPG手游,类似天天来战、2)天下HD等。有伙伴系统(卡牌)。

    3)漏洞对应游戏版本及平台:有杀气童话Android 0.8.2.12500

    4)漏洞功能:竞技场(竞技场)直接胜利,可刷钻刷荣誉(可购买伙伴碎片)。

    5)漏洞危害评级:

 

二 漏洞实现介绍

1、漏洞实现使用工具

    利用APKTOOL解APK包,IDA进行静态分析和动态调试。然后配合ILdasm、ILSpy、Ilasm实现IL代码阅读、修改重编译。

2、漏洞实现过程及实现原理

    整个漏洞实现过程与一般的U3D手游类似,既是直接修改Assembly-CSharp.dll。利用ILSpy阅读代码,用ILdasm解析出IL代码,在IL代码基础上修改逻辑,最后用Ilasm编译回DLL即可。

【漏洞分析】有杀气童话竞技场直接胜利分析

图1. 有杀气童话mono_image_open_from_data_with_name函数

 

    这里需要提到一点是,有杀气童话有对DLL进行加密。既是修改了Mono,如图1所示,mono_image_open_from_data_with_name函数有明显被修改痕迹。明显可看到针对游戏逻辑脚本文件Assembly-CSharp.dll有解密操作。因此之前直接从APK包解出来DLL的方法是不生效的,这里定位到Mono修改位置之后,可以在该函数尾部Dump出相关数据。利用IDA加载IDAPython脚本,如图2所示,在断点找到解密后的DLL内存地址,直接用脚本DUMP出来即可。

【漏洞分析】有杀气童话竞技场直接胜利分析

图2. IDAPython dump制定内存块脚本

 

    在DUMP出DLL脚本后,由于要测试漏洞,需要修改游戏逻辑代码,这里可以考虑将该Mono中的"Assembly-CSharp.dll"字符串抹除便可绕过Mono的解密函数块。这样就能使用正常格式的DLL,我们修改后重编译的DLL就能被游戏识别。

    解决了DLL解密,还有找到测试方案后,就可以按照之前方法直接修改IL代码测试漏洞。下面内容主要是叙述下漏洞的实现逻辑。

1)竞技场直接获胜

    仔细分析游戏逻辑,SendPvpResultMsg可发现客户端会上报竞技场战斗结果。这种情况下,可以尝试直接修改协议相关字段。此次修改了MC2S_PvpArenaResult中的CombatLog属性,其win标志改为1。同时修改PvpScene::Update函数,使其直接结算,即可实现一进竞技场就获胜的功能。

 

三 漏洞效果截图

下图为利用竞技场直接胜利漏洞刷排名: 

【漏洞分析】有杀气童话竞技场直接胜利分析

图3. 竞技场排行榜(注意战斗力)

 

【漏洞分析】有杀气童话竞技场直接胜利分析

图4. 竞技场排名上升钻石奖励


*转载请注明来自游戏安全实验室(http://gslab.qq.com

原文始发于微信公众号(游戏安全实验室):【漏洞分析】有杀气童话竞技场直接胜利分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月25日04:40:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞分析】有杀气童话竞技场直接胜利分析http://cn-sec.com/archives/1066267.html

发表评论

匿名网友 填写信息