游戏安全实验室 首页 技术入门 查看内容

 阅读目录

八门神器定制辅助外挂功能分析

发布于:2016-7-11 17:08   |    336033次阅读 作者: 管理员    |   原作者: TP   |   来自: 原创

分析目的

我叫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)

分享到:
踩0 赞0

收藏

上一篇:热血江湖秒怪和无敌功能分析

下一篇:天天飞车圈圈助手外挂功能分析

最新评论
B Color Image Link Quote Code Smilies

发表评论