【案例分析】八门神器定制辅助

admin 2022年6月29日18:26:54评论148 views字数 1388阅读4分37秒阅读模式

分析目的


我叫MT2目前外网存在八门神器定制辅助工具(如图1所示),功能恶劣(攻击方攻击必定爆击、防守方攻击必定MISS、技能无CD、技能攻击必定击中、攻击方必定10倍系数吸血、无需三星即可自动战斗、战斗时间延长到180秒),严重影响到竞技场玩家氛围。


【案例分析】八门神器定制辅助

1. 八门神器定制辅助

 

所以本文主要分析八门神器我叫MT2的定制外挂原理


实现原理


MT2是Unity游戏,八门神器MT2定制外挂主要是通过模块注入,HOOK了MONO加载mono_image_open_from_data_with_name函数。在该函数中获取Assembly-CSharp内容,直接修改IL代码实现imba功能。

下面具体分析几个步骤:1、注入;2、HOOK功能函数;3、功能修改。


1、注入


使用八门神器MT2辅助工具的时候,需要到八门神器中针对MT2选中一键辅助。而修改过程,八门神器是将MT2的lib目录下的libmain.so静态patch修改,在JNI_Onload函数处加载了注入模块及设置入口函数地址。如图2所示。同时会备份原来的libmain.so,保存为libmain.so.org(修改还原需要备份)。


【案例分析】八门神器定制辅助

2. Libmain.so被patch之后的JNI_Onload函数

 

2、HOOK功能函数


通过上面提到的方式注入外挂功能模块libmf.so,该模块在入口函数myLoad中,修改了dlopen的导入表地址,如图3所示。

【案例分析】八门神器定制辅助

3. 修改dlopen导入表地址

 

而在外挂作者自实现的mydlopen中,针对open的文件进行一个判断。如图4所示:如果是libunity.so,则修改mono_image_open_from_data_with_name函数的导入表;如果是libmono.so,则备份几个敏感mono函数的地址。

mono_image_open_from_data_with_name函数是Mono机制中的一个敏感函数,既是加载DLL会通过该函数读入DLL内容。外挂作者通过HOOK了该函数,获取游戏脚本文件(Assembly-CSharp.dll)buffer,然后直接暴力修改buffer内容实现imba功能。


【案例分析】八门神器定制辅助

图4. Mydlopen函数

 

3、功能修改实现


Unity游戏在Android下通过Assembly-CSharp加载游戏脚本这点是众所周知的,而在mono_image_open_from_data_with_name函数中,Assembly-CSharp会赤裸裸展示出来。

外挂作者通过分析游戏脚本,即可得知一些关键修改点,然后暴力修改。针对MT2游戏八门神器修改了如图5所示修改。

比如说前两个点的修改,0x6E9BC和0x0x6E9C6被改成10,定位到游戏脚本逻辑,既是角色初始化中MAX_ENERGYCOST_ENERGY_FOR_ACTIVE_SKILL变量值被改小了。导致现象是玩家攻击一次即可蓄满能量槽再次施放技能,相当于无CD。这个点还是比如简单改法点,另外其它点,比如攻击必中之类的,还添加判断是否攻击者之类。(由于在这个点的dll是明文,实在是太多改法了。)


【案例分析】八门神器定制辅助

5. 暴力修改游戏脚本文件

 

【案例分析】八门神器定制辅助

6. 修改技能CD点(IL指令)



*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

【案例分析】八门神器定制辅助

原文始发于微信公众号(游戏安全实验室):【案例分析】八门神器定制辅助

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月29日18:26:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【案例分析】八门神器定制辅助https://cn-sec.com/archives/1066182.html

发表评论

匿名网友 填写信息