和变速齿轮的原理应该是一样的
转载于游戏安全实验室
先吐槽下:越来越发现百度不如google了,当知识体量达到一定级别后,就会发现百度真不是解决问题的首选
手游通用加速器功能分析及汇总功能描述
目前手游存在较多的通用加速功能,通用的加速器包括:葫芦侠变速精灵、叉叉及圈圈加速器、烧饼加速器、晃悠游戏大师加速器等,这些工具可通用的加速目前的绝大部分手游。本文重点分析游戏整体加速出现的原因、目前加速器的实现方式、加速功能的检测方法。
实现原理
一、游戏通用加速出现的原因
手游和端游的通用加速功能原理都相同,通常游戏需要以帧为单位播放画面,播放画面过程中计算每帧动画播放所需时间(也可理解为两个画面切换的间隔时间),游戏需要调用C库函数获取系统时间以供计算每帧更新。目前手机端绝大部分游戏基于两大引擎,分别为:Cocos2D引擎、Unity3D引擎,引擎中实现了游戏每帧更新相关处理逻辑(包括每帧更新时间的计算),所以导致使用固定引擎的游戏每帧更新所需时间计算过程中调用的Libc.so模块完全相同。以下为Unity3D引擎中创建新的的C#文件基本代码内容:
从代码内容可看出Unity3D引擎为游戏开发者提供通用的Update函数,该函数会在游戏每帧更新的逻辑进行调用,每帧更新逻辑完全封装于Unity3D引擎提供的LibtUnity.so模块中。
手游通用加速出现的根本原因为:绝大部分手机游戏使用两大引擎(Cocos2D引擎和Unity3D引擎)开发游戏,两大引擎采用固定的Libc.so函数计算游戏每帧更新(Cocos2D引擎通过libc.so的gettimeofday函数计算每帧更新,Unity3D引擎通过调用clock_gettime计算每帧更新)所需时间,从而通过修改引擎获取时间或者影响计算每帧更新相关变量便能实现手游通用加速功能。
基于手机端采用两大引擎实现的游戏,通用的游戏加速功能可通过以下两种方式实现:
1、基于游戏逻辑
1)修改游戏计算每帧更新所需变量。
2)通过修改代码影响每帧计算的时间结果。
2、与游戏逻辑无关
1)修改主逻辑模块导入表
2)通过InlineHook方式修改Libc.so模块的时间函数(gettimeofday/clock_getime)或者修改更加底层的代码。
二、现有加速器实现方式
目前外网主流的游戏整体加速器为:葫芦侠变速精灵、叉叉及圈圈加速器、烧饼修改器、晃悠游戏大师,这几款主流的加速器目前采用与游戏逻辑无关的的方式实现通用加速功能,针对不同引擎,加速器修改了不同Libc.so相关函数。葫芦侠加速功能针对Cocos引擎修改了所有模块的gettimeofday函数导入表,其他几款工具修改gettimeofday、clock_getime的Libc.so相关代码实现加速功能,每款工具基于不同引擎的加速功能实现方式汇总于下表所示:
通过上图可了解到目前主流手游通用加速功能实现方式。
猜测是一直联网,有的游戏可能不需要每分每秒联网,所以经常连接断开可能有时会不停使唤,假死状态,所以此类软件使网络一直连接,有效避免断网假死。
或者有的会把网络分配到指定游戏
仅仅猜测,错了请指出然后我会删掉
cocos2d可以hook gettimeofday实现
u3d 看大部分回答是hook clock_time实现,试了2018年u3d游戏不生效
直接改assets下Assembly-CSharp.dll文件中set_timeScale反而可以加速游戏打斗画面,其他对话、动画都还是正常水平
对这个感兴趣,可以通读一下下面的链接中“技术入门”,可以略窥门径。
游戏安全实验室 游戏漏洞 外挂分析