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

 阅读目录

天天飞车圈圈助手外挂功能分析

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

功能描述

天天微车游戏圈圈助手外挂总共包括三个功能,分别为:穿透、吸金、加速功能,对应相关功能如下图所示:

由于飞车属于Unity 3D引擎游戏,本文重点分析圈圈助手外挂功能实现,通过分析发现圈圈助手功能和之前叉叉助手类似

实现原理

1、外挂功能开启之前准备工作

1)外挂加载功能模块方式

由于微车属于Unity 3D引擎开发的游戏,游戏主逻辑使用C#语言实现,对应生成的逻辑代码在Assembly-CSharp.dll中。圈圈助手注入游戏libttfc.so模块,该模块为功能的开启做了前期准备功能,外挂首先Hook了“com.tencent.game.SSGame_40813\lib\armeabi\”路径下的libmono.so模块的mono_image_open_from_data_with_name函数,该函数通过该函数将引擎中C#逻辑代码加载到内存中,外挂替换的代码如下图所示:

 

此时外挂加载自编译的oottfc_40813.dll的游戏逻辑功能模块(外挂反编译了Assembly-CSharp.dll模块并对模块进行修改并重新编译从而实现了特定外挂功能),外挂通过Hook游戏libmono.so模块的mono_image_open_from_data_with_name实现加载自身的C# 逻辑oottfc_40813.dll模块。

2)外挂界面开关与功能模块交互

通过分析发现外挂同时Hook了libmono.so模块的mono_class_from_name函数,外挂接管该函数获取ssVehicle类,之后调用libmono.so模块的mono_class_get_method_from_name函数获取oottfc_40813.dll模块的setMaxSpeedScale函数地址,控制外挂功能开关被加速的倍数信息,外挂接管之后的Hook代码如下图所示:

外挂通过Hook了mono_class_from_name函数感知到游戏中C#代码的类名,当类名为ssVehicle时,便调用函数mono_class_get_method_from_name获取oottfc_40813.dll模块的setMaxSpeedScale函数地址,其中mono_class_get_method_from_nam函数的获取如下图所示:

通过如上的方法外挂可调用C#的setMaxSpeedScale函数,控制穿透、吸金、加速倍数的功能开启或者倍数控制。

外挂oottfc_40813.dll模块可通过CFF Explorer工具查看.Net的PE文件结构,需要修复.Net的标志信息,方能在ILSpy软件中反编译外挂的oottfc_40813.dll功能模块。

 

2、穿透功能实现

通过对比正常的和外挂的反编译之后C# 代码文件,外挂的穿透功能实现方式如下图代码所示:

外挂将mEnableCollision数据修改为0,玩家的赛车被标识为不可碰撞无敌,从而实现了穿透功能,游戏逻辑中为1表示可碰撞无敌。

 

3、吸金功能实现

外挂吸金功能实现方式如下图所示: 

外挂添加ssPlayerVehicle.b_workeasier变量从而影响MagneticMode变量的取值,当MagneticMode返回值为1时表明当前有磁铁效果,该变量最终在游戏中PickGold中调用,对应关键代码如下图所示》

上图红框部分为拾取金币过程中判断如果有磁铁效果则自动获取金币。

 

4、加速功能实现

外挂加速功能只能实现20S的加速功能,对应修改的代码如下图所示:

 

外挂通过修改获取MaxSpeed变量的数值过程,MaxSpeed设置变大,从而实现加速功能。


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

分享到:
踩0 赞0

收藏

上一篇:八门神器定制辅助外挂功能分析

下一篇:IOS雷霆战机无极外挂相关功能分析

最新评论
B Color Image Link Quote Code Smilies

发表评论