公司的需求,需要做手游端加速
ios端搜到对应的代码,进行hook gettimeofday这个linux底层函数实现了

做安卓端的我有点懵,网上也搜不到相应资源,仿造着ios写了jni,中间遇到了很多坑,最后实现了

简单讲下吧,方便后来人

1.JNI肯定是要写的,但是hook底层函数怎么做?用框架Cydia Substrate(小提示,视情况用不用dvm的so,我是没用)
2.模拟器上写了无效果,注意安卓系统版本,模拟器上需要用dlopen去hook才能生效,MSGetImageByName没啥卵用,一直返回image为空
3.主要jni如下(**

整个贴出来吧,问光环客服还 “这能告诉你么,商业机密!” 个毛线,不值钱的玩意看的比什么都金贵

**)

include

include

include

include “include/substrate.h”

define TAG “HOOKDEMO”

define LOGE(…) android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS)

define GETLR(store_lr)\

__asm__ __volatile__(   \"mov %0, lr\n\t"    \:   "=r"(store_lr)  \
)

void performHook(const char *targetSo, const char *symbol, void *replace, void **original);
//指明要hook的lib
MSConfig(MSFilterLibrary, “/system/lib/libc.so”)

//旧方法
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 *= 8; //速度8倍
tv->tv_sec *= 8;
}
return ret;
}

void* find_symbol(const char* libraryname, const char* symbolname)
{
void *imagehandle = dlopen(libraryname, RTLD_GLOBAL | RTLD_NOW);
if (imagehandle != NULL) {
void * sym = dlsym(imagehandle, symbolname);
if (sym != NULL) {
return sym;
} else {
return NULL;
}
} else {
return NULL;
}
}

//初始化时进行hook

MSInitialize{
performHook(“/system/lib/libc.so”, “gettimeofday”, (void*)&mygettimeofday, (void**)&oldgettimeofday);
}

//封装hook
void performHook(const char *targetSoPath, const char *symbol, void *replace, void **original) {
MSImageRef image = MSGetImageByName(targetSoPath);
void *symAddress;
if (image != NULL) {
//真机一般走这里
symAddress = MSFindSymbol(image, symbol);
MSHookFunction(symAddress, replace, original);
} else {
//模拟器喜欢走这里,MSGetImageByName获取不到so,必须用dlopen
symAddress = find_symbol(targetSoPath, symbol);
if (symAddress != NULL) {
MSHookFunction(symAddress, replace, original);
} else {
LOGE(“===>>>>>> find_symbol failed”);
}
}
}

4.修改速度哪里,试了4-8倍,9倍模拟器上有点卡顿抽抽,10倍无效,最低没试,因为只是加速,减速不考虑可自行测试,运行demo得到so文件

5.导入自己打好的so和Cydia Substrate框架的so,游戏主入口system.loadlibrary(“xxx”);两个so即可

然后看控制台打印,

游戏疯狂的调用这个gettimeofday,作为游戏心跳,到此礼成

填补下国内安卓端搜不到类似代码的空缺吧

关于cocos2d引擎写的手游加速相关推荐

  1. 怎么卸载虚幻4_专访Epic Games:虚幻引擎5离手游近在咫尺,中小团队也能很快上手...

    看起来表现效果十分前沿的虚幻引擎5,离实际应用并不遥远. 文/安德鲁 虚幻引擎5不是中小团队能玩得转的吧? 虚幻引擎5是针对下一代主机开发的,用到手游上是不是还遥遥无期? 前不久,虚幻引擎公布了在PS ...

  2. k30pro杀进程严重怎么解决_王者荣耀卡顿严重怎么解决?有没有免费的手游加速工具?...

    要说这个暑假最爽的事情,莫过于开着空调,吃着西瓜约一次王者荣耀了吧,可有时候打王者荣耀真的太卡了,用流量是比较方便可是太奢侈了有木有,再退出来连WiFi没五秒钟再进游戏就直接掉了,要么是网没有卡,但按 ...

  3. 虚幻4引擎开发的手游_虚幻引擎 4 手游《绝地求生:刺激战场》 开发经验分享...

    腾讯光子工作室群 的<绝地求生:刺激战场>在今年2月9日全平台开测以来,备受全球玩家喜爱.这款万众瞩目的UE4手游是如何在保证原汁原味玩法的同时做好资源的优化,执行效率的提升,移动平台操作 ...

  4. 虚幻4引擎开发的手游_虚幻4引擎开发 《神佑》手游首次公开

    [17173新闻报道,转载请注明出处] 1月25日,Joycity公司举办新作发布会,公开了正在开发中的旗下新作. 发布会上,Joycity介绍了<创世纪战:安塔利亚战争>.<炮艇战 ...

  5. python写梦幻西游手游脚本_PyCharm2020.1 全新版本助力你的编程路

    人生苦短,我用python,可以说是Python程序员的口头禅了,而Pycharm便是Python编程最广泛使用的编程软件之一:因为其干净利落的界面,超方便的功能特性,许多老师在相关编程课上,也都会使 ...

  6. react-native仿写洛克王国手游版

    首先声明此项目完全是出于学习和对洛克王国的喜爱而生,项目中使用的游戏宠物若涉及侵权请联系我 前两天和朋友聊天说到洛克王国没有手游,正好最近在学习react-native,觉得可以尝试做下看看,于是做了 ...

  7. python写梦幻西游手游脚本辅助_深入解析Lua脚本加密技术,给游戏代码加上“紧箍咒”...

    不少安全专家表示,在互联网上失去对代码的控制,就像把银行的设计图交给抢劫犯一样. Lua是一种被广泛用于游戏开发中的计算机语言,方便开发者定制自己所需的功能.其中,红遍全球的<愤怒的小鸟> ...

  8. OGEngine引擎开发slot 手游强势来袭

    用OGEngine引擎开发.曾经风靡大街小巷的经典游戏Fruit Slot Mania 强势来袭,High爆全场,画面精致Q版且非常有趣,还有机会赢取话费哦,挑战智慧与运气,好玩又刺激! 链接:[ur ...

  9. python写梦幻西游手游脚本辅助_3 行 python 代码帮你轻松实现” 自动发送测试报告 “到指定邮箱...

    此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 大多数情况下,跑完用例脚本之后,我们需要把测 ...

  10. 战神引擎修改服务器时间,修改战神引擎手游进入游戏公告内容教程

    修改战神引擎手游进入游戏公告内容教程 文章来源:传奇帮手游 发布时间:2020-05-24 文章性质:原创文章 我们玩战神引擎服务端手游的时候,在选择游戏区之前,都会出现一条公告,那么怎么修改公告里面 ...

最新文章

  1. 企业网络推广专员浅析不同阶段下要有不同的企业网络推广方式
  2. leetcode valid number
  3. JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换
  4. 视频中的目标检测与跟踪综述
  5. SDUT-SQL题解
  6. Ixia张林辉:测试系统让SDN更“迷人”
  7. 详解JDBC连接数据库
  8. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
  9. 寻找 K8s 1.14 Release 里的“蚌中之珠”
  10. 数据库-MySQL-数据库设计-外键
  11. spark 的RDD各种转换和动作
  12. QQ 木子版 vs 现在的某些修改版
  13. 单板计算机图片大全,最强单板计算机UP Board之Windows10完全版、Ubuntu、Andriod系统体验 | 爱板网...
  14. 北大核刊最新版2020目录_重磅!最新版CSSCI 来源期刊目录(2019-2020)
  15. Linux下网络测试工具tcpping、tcptraceroute的使用
  16. 无基础如何备考软考软件设计师?
  17. PPT文档转换成Word文档
  18. python语句分隔用什么符号_python语句用什么符号隔开
  19. 支持10K高清视频是HDMI 2.1有什么特点?
  20. 关于长高问题 我的看法

热门文章

  1. 聊一聊数据团队的职责是什么?
  2. python中round的用法_python中round函数如何使用
  3. MySQL中round函数
  4. 2021-10-11 全国大学生软件测试大赛赛前学习参考资料
  5. 每个国家对应的语言Locale和国家代码对照表(国际化支持)
  6. avmovie_AVMovie1和AVMovie2
  7. 学习笔记15--车道线检测
  8. MAC在window下禁用触摸板
  9. 大数据学习开篇:了解大数据导论、清楚大数据应用领域和前景
  10. Django验证码——手机注册登录