前段时间手游加速器很火。以光环为代表,进行C层的HOOK,既可以实现加速,又可以免Root保证手机安全,看起来很不错。

于是决定学习一下,并且自己用代码实现。经过一段时间的努力,基本上能实现和光环差不多的功能。

1.首先是基础知识。我们先讲基础知识,再讲如何Hook

何为加速?加速就是改变应用的运行速度。怎么样才能加速?根据不同的引擎有不同的加速方法。关键还是在认识引擎上。

市面上大多数的 游戏引擎大致可以分为  cocos2dx、Unity3d、 AdobeAir、白鹭、OpenGL。接下来我们分开来讲解各个引擎的加速方案。

(1)cocos2dx 引擎一般是会有一个cocos2dx引擎动态库。由于cocos2dx是开源的软件,所以cocos2dx的引擎动态库的名字可以自定义。但是判断是不是cocos2dx引擎的游戏可以查看Java代码目录,是否有org/cocos2dx/目录,如果有这个目录就是cocos2dx引擎。

coco2dx游戏有个setTimeScale函数,这个函数用来控制运行时间。timeScale的值越大运行速度越快,timeScale值越小运行速度越慢。但是一般的情况下开发者不会去调用setTimeScale。所以我们基本没机会通过HOOK来改变setTimeScale的值。但是我们可以通过引擎的Director来实现。 Director 来有个定时器Scheduler,在每帧更新的时候都会调用Update(float delay)。而update函数里面则会调用timeScale的值,来乘以delay得到运行最终的时间。所以改变delay的值也可以达到加速减速的效果。

(2)Uity3d 引擎是一个闭源软件,所以会有统一的动态库 libunity.so。所以只要看到有libunity.so动态库,就基本确定是Unity3d游戏。

Unity3d游戏照样也是有一个setTimeScale函数。所以通过Hook 来达到更改timeScale的值,即能达到加速减速效果。但是Unity3d游戏一般通过C#来开发。然后通过il2cpp或者mono运行时来执行。所以我们要通过Hook il2cpp或者mono的运行时方法来调用setTimeScale。

il2cpp的关键函数是il2cpp_method_get_class、il2cpp_class_from_name、il2cpp_class_get_method_from_name

mono的关键函数是mono_get_object_class、mono_class_from_name、mono_class_get_method_from_name

通过HOOK这些函数,就可以更改timeScale的值了。

(3)Adobo Air 白鹭等引擎。其他引擎没有特别针对的速度的控制函数。所以一般用改变系统时钟的方法来达到目的。

libc.so中有gettimeofday函数。我们通过Hook 系统的gettimeofday函数来改变时间的流逝速度,也能达到加速的目的。

以上就是基本的理论基础。

2.接下来是Hook。既然知道了怎么去更改速度。那么要怎么去实现更改呢?那就要靠Hook了。

光环使用的是libsubstrate.so框架。以下就是API说明

其实也没有太难的地方。API都说的很清楚要怎么用。

好了,为了避免篇幅过长,看起来犯困。今天先讲基本的理论知识。后面的章节继续讲,代码实现,和实例演示。

手游加速器原理分析和代码实现相关推荐

  1. 狂妄之人怎么用计算机弹,天谕手游狂妄之人乐谱代码分享

    天谕手游狂妄之人乐谱代码是什么?狂妄之人是游戏"传说之下"(undertale)主题曲中的一个,当玩家控制的人物走了屠杀线遇到sans的时候会触发的背景音乐.接下来小编为大家带来了 ...

  2. 计算机音乐谱牵丝戏,《天谕手游》牵丝戏乐谱代码分享-天谕云之光在哪

    <天谕手游>牵丝戏乐谱代码分享 天谕手游牵丝戏乐谱?在游戏内很多玩家都想知道,牵丝戏乐谱的代码是什么,毕竟有了代码演奏十分的方便.接下来就让小编给大家带来<天谕手游>牵丝戏乐谱 ...

  3. 权御天下计算机音乐数字乐谱,天谕手游权御天下乐谱代码是什么-天谕手游权御天下乐谱代码分享_快吧手游...

    天谕手游权御天下乐谱代码是什么?天谕中我们可以使用外部代码复制到游戏中,然后制作出自己的音乐乐谱.很多小伙伴都想把这一首歌写进自己的天谕乐谱.下面就一起来看看吧! 天谕手游权御天下乐谱代码分享 A轨 ...

  4. 计算机音乐谱红昭愿,天谕手游红昭愿乐谱代码是什么-天谕手游红昭愿乐谱代码分享_快吧手游...

    天谕手游红昭愿乐谱代码是什么?天谕中我们可以使用外部代码复制到游戏中,然后制作出自己的音乐乐谱.很多小伙伴都想把这一首歌写进自己的天谕乐谱.下面就一起来看看吧! 天谕手游红昭愿乐谱代码分享 t115v ...

  5. 计算机音乐谱棠梨煎雪,天谕手游棠梨煎雪乐谱代码分享

    天谕手游棠梨煎雪乐谱代码是什么?<棠梨煎雪>是一首由银临演唱的原创古风歌曲,收录于专辑<腐草为萤>中.接下来小编为大家带来了天谕手游棠梨煎雪乐谱代码分享,希望可以帮助到大家. ...

  6. 【SemiDrive源码分析】【MailBox核间通信】51 - DCF_IPCC_Property实现原理分析 及 代码实战

    [SemiDrive源码分析][MailBox核间通信]51 - DCF_IPCC_Property实现原理分析 及 代码实战 一.RTOS 侧 Property Service 初始化流程 1.1 ...

  7. 计算机音乐谱红昭愿,天谕手游红昭愿乐谱代码分享

    天谕手游红昭愿乐谱代码是什么?<红昭愿>是来自音阙诗听音乐社的一首歌曲,由荒唐客填词,殇小谨谱曲,朱鸽编曲,由音阙诗听歌手王梓钰演唱,2020年9月24日,发行了由李玉刚演唱的<红昭 ...

  8. TFRecord简介,原理分析,代码实现?

    TFRecord简介,原理分析,代码实现? 在利用深度学习算法搭建完成网络之后,我们要对网络进行训练,要训练网络就要有训练数据,通常我们会直接对硬盘上存放数据进行操作,来fetch到网络中.这样直接从 ...

  9. [网游加速器原理、技术与实现]

    网游加速器原理.技术与实现 https://blog.csdn.net/kidwei/article/details/8559842

  10. 腾讯WEB加速器 原理分析手记

    [标 题]:腾讯WEB加速器原理分析手记 [作 者]:欧阳修子(linuxs) [时 间]:2007-06-27 [链 接]:[url]http://www.sg-zc.cn/vip/article. ...

最新文章

  1. java 16进制与图片互转
  2. 【seaborn】(1) 数据可视化,绘图风格、布局
  3. mysql group by 天_MySQL group by语句如何优化
  4. hashmap 遍历_这21个刁钻的HashMap面试题,我把阿里面试官吊打了
  5. 一位跟我一样疑惑的同学~
  6. 腾讯视频下载官方_腾讯视频评论在哪
  7. SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别
  8. 【jupyter】notebook屏蔽warning信息输出
  9. 前端在线学习网站W3School
  10. 命令级的python静态资源服务。
  11. android:#FFFFFFFF 颜色码解析
  12. python设置excel的格式_python 操作Excel 设置格式
  13. AHK生成随机但不重复的数字
  14. Android WebView白屏解决方案
  15. 计算机控制系统直流电机闭环调速实验,直流电机闭环调速控制系统
  16. 深度解读互联网+供应链金融八大模式
  17. 【淘宝商家应用接口】拼多多平台流量解析,如何充分利用平台分配的流量?
  18. oracle minus intersect,minus,oracle中INTERSECTMINUS用法
  19. 1038 Recover the Smallest Number (30 分)-字符串分段排序
  20. java源程序编译型_Java语言的源程序不是编译型的,而是编译解释型的。( )

热门文章

  1. 图像数字水印技术研究及matlab实现,数字水印技术研究及其matlab仿真.doc
  2. Android网络编程之——文件断点下载(暂停/继续/重新下载)
  3. 将强化学习应用到量化投资中实战篇(神经网络模块开发)
  4. maven常用打包命令
  5. 【计算机组成原理】数据通路
  6. nrf52840烧录配置(协议栈+APP)
  7. OBS Studio录制腾讯会议
  8. 【STM32开发环境搭建】 - st-link驱动安装和串口驱动安装
  9. 通过图片url 获取图片file对象
  10. 计算机无法屏保,Win7屏幕保护程序不能修改怎么办 win7无法设置电脑屏幕保护程序如何解决...