惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
V2EX - 技术
V2EX - 技术
T
Threat Research - Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
Project Zero
Project Zero
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
P
Privacy & Cybersecurity Law Blog
AWS News Blog
AWS News Blog
Scott Helme
Scott Helme
C
Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
O
OpenAI News
P
Privacy International News Feed
Google Online Security Blog
Google Online Security Blog
SecWiki News
SecWiki News
The Last Watchdog
The Last Watchdog
NISL@THU
NISL@THU
Attack and Defense Labs
Attack and Defense Labs
G
GRAHAM CLULEY
Security Latest
Security Latest
Help Net Security
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
Arctic Wolf
Security Archives - TechRepublic
Security Archives - TechRepublic
S
Security @ Cisco Blogs
腾讯CDC
S
Secure Thoughts
WordPress大学
WordPress大学
P
Proofpoint News Feed
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
小众软件
小众软件
M
MIT News - Artificial intelligence
博客园 - 叶小钗
IT之家
IT之家
G
Google Developers Blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
N
News and Events Feed by Topic

远飞闲记

用 OpenClaw 搭建全自动晨间简报系统 Open Claw(🦞龙虾): 新手最常踩的 8 个坑,我帮你踩过了 什么是AI Agent(智能体)? OpenClaw 在微信端使用指南 如何让OpenClaw🦞更好用-调教篇 OpenClaw(龙虾🦞)自主赚钱实验笔记 本地Qwen+云模型:OpenClaw真实体验 AI博客主题开发记 OpenClaw初试记 十年博客路:在AI水文泛滥的时代,为何还在坚守? AI Coding实战吐槽:别被"400刀大神"带偏,这些坑我帮你踩过了! 《相信》把不可能变为可能 我们写的程序被杀毒软件杀了,杀毒软件到底杀了什么? 👋2024 探索Unity单元测试:构建可靠游戏代码的基石 实用小黄鸭调试法 炸裂的Unity割韭菜这事 还是要有信念 您好2023 Docker启动提示虚拟化失败 Golang中配置文件热重载方案 重置博客主题 双链知识管理及logseq使用体验 魔幻的魔都疫情 漫谈国内NFT市场状况 如何在UE4中平衡蓝图与C++的使用 2021时光荏苒,2022可遇可期 UE4(Unreal Engine)本地化资源功能 摈弃:“拥有更多=做的更好的”的观念 鱿鱼游戏 研究UE4(虚幻引擎)后的感想 初试Caddy WebServer GitHub Copilot AI编程的感受 Mac Mini M1真香定律 地震提醒App 共和国失去两大功勋 币圈还好吗? Headless CMS 倒牛奶事件 “鸡娃”现象的观点 2020年新冠期间记录 社区团购团长的入门到放弃 路由折腾记 多电脑鼠键共享方案 Typescript循环引用 Circular Referenec 问题解决方法 《高效清单工作法:聪明人的无压时间管理手册》 Crossword Puzzles Privacy ShareTheCookies Privacy 七月的最后一天 游戏开发中使用的概率算法 笔直站立昂首挺胸的生活态度 Golang基础配置和Go Emacs开发环境的配置 使用Github Actions自动发布Hugo Blog配置 《青年到此为止》读书随笔 逛T推遇见比较有意思的事 GnuGPG Git中的使用及配置 《极简主义:活出生命的真意》阅读记录 疫情记录:热干面出院了 如何有效的阅读一本书:葱鲔火锅式笔记读书法 《麦肯锡精英高效阅读法》读书笔记 2020四年之约 疫情记闻 2020-二月二龙抬头 任天堂(Nintendo)switch NS游戏机 真香 MacBook Pro SSD 512G硬盘升级记 构建Facebook Instant Game本地测试环境 今日有感 Bye 2019,Hi 2020 猎魔人-The Witcher 如何判断是否适合加入创业团队 开发人员业余项目版权的见解 容易改变想法的人 及时止损 VSCode中远程调试NodeJS配置 Android Google Play 内购服务器订单校验 做产品是否要蹭热度 为什么会接入Google Adsense 成功和产品体验的一点想法 共享经济下的牺牲品们 折腰的梯子们 Emacs配置:Unity项目开发配置 人人都想当管理者 对焦虑和迷茫的理解 TypeScript强类型判断引发的问题 找回习惯和中产与爱好 程序员的成长之路 产品、技术、团队 爱心被滥用 工作996.生病ICU 2019初一记事 忆上海,换一种生活方式 记一次地震时的感受 押金是什么 Egret Jenkins搭建构建环境中遇见的坑 去年的总结 要懂的感恩 阿里云OSS+docker Owncloud安装 从修建房子来说开发过程的问题和流程 小记录 与人方便,与己方便 8月份的尾巴
Android和H5网游加速器解决方案的探索
2020-07-02 · via 远飞闲记

上个月业余时间和兴趣的驱使对网游加速器进行了研究和技术探索,这里对当前的手机网游加速原理和使用技术作个记录和总结,废话也不多说了直接上干货,在介绍原理之前我们先区分一下游戏加速的类型。 目前我们所说的网络加速器其实分为对游戏行为进行加速和对网络速度进行加速两种,我们研究的是第一种类型就是对游戏行为的速度进行加速已达到比如挂机类的游戏在上边耽误太多的时间直接最大化游戏的战斗速度来获得游戏结果;

在手游中的加速技术,我们还是主要讨论 Android 平台上边的加速原理,普遍情况下 Android 平台我们主要是对系统 Clock 时钟进行hook 然后通过修改系统的时钟时间值来达到我们的加速目的,其中还要确认需要加速的游戏是使用的什么引擎;在介绍游戏引擎的Hook 上边我们先来看以下Hook工具有哪些:

Hook 工具

包括目前市面上一些加速器比如:X8沙箱等都使用的是 CydiaSubstrate1 SDK来进行 hook, Cydiasubstrate 目前只支持Android2.3 以下版本,接入简单如果2.3以上需要对系统进行Root 才能使用;其次还有个国产的爱奇艺的Github上获得 xHook2 来达到我们的对上边游戏引擎对应接口的Hook;个人推荐 xHook 比较简单而且小巧不需要Root权限和支持到Android 4.0; 以上Hook工具接入都比较简单,有点Android NDK的基础几乎照着文档走一遍就行了,但Hook工具的使用范围还是比较广的,不能在多说了再多说就需要打屁股了;对注入工具进行NDK编译后可以通过获得对应版本的 .so 文件然后通过 apktool 工具修改包的 smali源代码 对apk包进行二次打包就可以了;

Cocos和Unitiy的加速原理

  • Cocos2d 我们查看其源代码得知使用 /system/lib/libc.sogettimeofday()/settimeofday() 两个接口来进行渲染帧获取得时间,所以我们可以Hook这两个接口来达到加速;

    具体参考代码如下:

    #define GETLR(store_lr)							\
        __asm__ _ _volatile__(						\
    			  "mov %0, lr\n\t"				\
    			  :	"=r"(store_lr)				\
    									)
    
    int SPEED=2; //速度值
    int (*oldgettimeofday)(struct timeval*tv, struct timezone *tz);
    int mygettimeofday(struct timeval*tv, struct timezone *tz) {
        unsigned lr;
        GETLR(lr);
        int ret = oldgettimeofday(tv,tz);
        if(ret == 0){
    	tv->tv_usec *= SPEED;
    	tv->tv_sec *= SPEED;
        }
        return ret;
    }
    
  • Unity 需要查看具体包使用的是mono平台运行C#还是il2cpp的方式来运行,怎么区分包使用的技术解压 apk 包如果其中包含 lib/*/libmono.so 则使用的是 mono 平台,如果是mono 平台我们查看 mono的代码得知可以通过 mono_class_from_name(MonoImage *image,const char* name_space,const char* name)和 mono_class_get_method_from_name 获取到 UnityEngine.Time 来修改游戏的运行时间达到加速目的;

    代码参见如下:

    int __fastcall sub_1A70(MonoImage *image, const char* name_space, const char *name)
    {
        static findset_timeScale = 0;
        if ( !j_strcmp(name, "Time") && ! findset_timeScale && !j_strcmp(name_space, "UnityEngine") )
    	{
    	    dword_705C = image;
    	    dword_7064 = mono_class_from_name(image, "UnityEngine", "Time");
    	    dword_7058 = mono_class_get_method_from_name(dword_7064,set_timeScale,1);
    	    findset_timeScale = 1;
    	}
        return mono_class_from_name(image, name_space, name);
    }
    

H5游戏的加速原理

其实H5游戏的加速相对Android和iOS等移动平台都比较简单,比如市面上常见的H5游戏引擎有Egret、Laybox、Cocos Creator等,我们可以通过神器 Chrome 浏览器来断点和抓取游戏的客户端代码进行查看,如Egret其中可以修改游戏运行的帧数和Hook Tween和Timer 两个类的接口对参数进行修改来来达到我们的加速目的,或者有很多游戏客户端逻辑其实通过某个全局的静态参数来控制,我们也可以找到直接修改其中参数值来达到我们目的;

注意事项

  • 在写Hook库时注意Android NDK版本;最好使用 android-ndk-r16b 来编译;
  • 在修改 smail 代码的时候注意 本地寄存器最大长度只支持3;

⚠️ 温馨提示: ️本文所讨论的技术仅做研讨使用,请遵守法律使用!