当前位置:首页 > 游戏 >

unity引擎设置游戏帧率(unity引擎怎么设置分辨率)

来源:原点资讯(www.yd166.com)时间:2024-02-07 13:13:37作者:YD166手机阅读>>

本教程仅供技术交流之用,任何对软件的修改都有可能造成封号后果,请须知!!!
技术交流贴不要引战!
本人菜鸡一枚,如有错误望指正。
Tips:本文章里的所有注入操作均基于Magisk和Riru,因为使用这种方式进行注入不易被反作弊检测,基本无需特别对抗反作弊。
最近某基于Unity的手游上线,在IOS上是支持60帧的,但是在安卓上或许是出于稳定性考虑,并没有开放60帧。既然是Unity制作的,安卓大概率也有设置帧率的地方(事实上就是,通过手动修改配置文件也可以解锁),只是UI给隐藏了,那么干就完事了。
首先解包观察lib,确定是使用il2cpp模式编译的,且使用的某大厂的加固方案。但是目前为止几乎所有的il2cpp加固方案都防止不了内存dump,二话不说先搞下来一份libil2cpp.so。
接下来要知道Unity中如何设置目标帧率,Unity中通过修改Application.targetFrameRate来修改帧率上限。使用与该游戏相同的Unity版本写一个test.cs脚本,在Start中写入Application.targetFrameRate = 60;,挂到默认相机上。使用il2cpp模式编译安卓的安装包,编译完成后使用il2cppdumper获取有关信息,使用ghidra(当然喜欢IDA也可以)打开libil2cpp.so文件,使用脚本完成命名后定位到Start函数,发现其进行了一个如下的调用:

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(1)


跟踪进入函数内,发现里面有一个非常明显的字符串。

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(2)


在从游戏中dump出来的libil2cpp.so中搜索该字符串,很容易从引用中定位到该函数(这里的函数已经经过重命名)。

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(3)

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(4)


这里的函数体与我们自己编译的有一定差距,估计是热更新插件或者反作弊对其进行了修改,不过问题不大,只要知道它是实现这个功能的就行了。找到函数位置后应该可以直接尝试注入程序调用该函数来修改目标帧率,不过我们并不知道合适的调用时机,因此在这里我不使用这种方案。我们查看该函数的全部引用,还好个数不多。逐个尝试进行注入修改来找到可能是加载配置文件的函数(我似乎没有找到AArch64下好用的基于地址进行inline hook的框架,如果有老哥知道欢迎推荐我一个),最终确认为这里。

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(5)


为了省事,我直接修改字节码使其始终设置目标帧率为60帧,主要代码如下。

[C] 纯文本查看 复制代码

?

unsigned long hack_addr = base_addr 0x03c771a4;

unsigned char* tmp = (unsigned char*)(void*)hack_addr;

if(tmp[1]==0x03){

void* page_start = (void*)(hack_addr - hack_addr % PAGE_SIZE);

if (-1 == mprotect(page_start, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC)) {

LOGW("mprotect failed(%d)", errno);

return NULL;

}

tmp[0]=0xe1;

tmp[1]=0x0f;

tmp[2]=0x1e;

tmp[3]=0x32;

if (-1 == mprotect(page_start, PAGE_SIZE, PROT_READ | PROT_EXEC)) {

LOGW("mprotect failed(%d)", errno);

return NULL;

}

}


根据Riru-ModuleTemplate编写Riru模块对游戏进行注入修改,注意修改完成后要还原内存为rx,否则可能被检测到游戏异常。
上机测试,成功解锁60帧。

unity引擎设置游戏帧率,unity引擎怎么设置分辨率(6)

,

栏目热文

unity怎么设置运行分辨率(unity帧数怎么设置)

unity怎么设置运行分辨率(unity帧数怎么设置)

(映维网Nweon 2023年07月11日)为了帮助提高VR应用的清晰度和质量,Meta日前正式发布了Super Res...

2024-02-07 13:46:13查看全文 >>

unity设置分辨率全屏的方法(unity怎么全屏显示)

unity设置分辨率全屏的方法(unity怎么全屏显示)

你是不是已经厌倦了在Unity编辑器中繁琐的操作?你是否想要更加高效地完成工作?那么你一定需要掌握这些隐藏技巧!以下是我...

2024-02-07 13:35:33查看全文 >>

unity设计游戏分辨率(unity怎么做纯数值游戏)

unity设计游戏分辨率(unity怎么做纯数值游戏)

编辑:桃子 拉燕【新智元导读】近日,全球领先的3D制作和运营平台Unity震撼首发新一代超现实人类,以4K分辨率实时渲染...

2024-02-07 13:19:42查看全文 >>

头像怎么加边框职业(自己的头像如何添加边框)

头像怎么加边框职业(自己的头像如何添加边框)

看一下你想要哪个方案的图,把你的图片发到评论区里面,就行,我帮你们制作,可以加职业头像两个字,(支持任何图片)PKL长图...

2024-02-07 13:42:04查看全文 >>

unity应用不显示分辨率(unity引擎怎么设置分辨率)

unity应用不显示分辨率(unity引擎怎么设置分辨率)

IT之家 7 月 11 日消息,Meta 公司推出了一项新的开发者功能,名为“Quest 超级分辨率(Quest Sup...

2024-02-07 13:11:15查看全文 >>

unity怎么改分辨率(unity引擎怎么设置分辨率)

unity怎么改分辨率(unity引擎怎么设置分辨率)

11月19日,中国 Unity 线上技术大会的直播中,担任Unity中国区的技术美术总监王靖,为我们分享了游戏画质的提升...

2024-02-07 13:12:12查看全文 >>

unity3d自定义新格式(unity3d文件怎么改)

unity3d自定义新格式(unity3d文件怎么改)

登录后厂造官网 免费领取后厂造会员后,登陆查看更多智能制造行业资料、课程。摘要:AMESIM系统仿真平台主要在产品研发的...

2024-02-07 13:17:59查看全文 >>

创维电视酷开酷影打不开怎么回事(创维电视无法进入酷影)

创维电视酷开酷影打不开怎么回事(创维电视无法进入酷影)

大家好,我是洁修哥,今天要和大家分享的是关于创维智能电视开不了机的常见问题及解决办法。当您家中的创维智能电视突然无法开机...

2024-02-07 13:13:24查看全文 >>

创维电视在线酷影为啥打不开(创维电视酷影怎么显示无法连接)

创维电视在线酷影为啥打不开(创维电视酷影怎么显示无法连接)

问题描述创维电视电源绿灯亮,但电视无法开机。步骤一:检查电源和连接首先,我们要检查电视的电源和连接是否正常。按照以下步骤...

2024-02-07 13:33:22查看全文 >>

文档排行