Unity游戏的速度控制

分享一个几年前写的插件,github链接
作用是用于控制基于unity引擎游戏的运行速度。
基本原理很简单,wiki中有写:
1、根据特征值查找unity的system函数
2、使用system函数查找timescale函数
3、控制timescale函数,达到加速、减速的作用
缺点是如果这游戏编译的时候没有使用到time这个系统类,timescale函数将不会被找到(system查找返回0),无法控制速度。

如果大家有好的思路欢迎一起讨论

1 个赞

能上一个效果的示意图或者视频吗?这样比较直观一些

2 个赞

能否用于免越狱?

/Users/hack/Library/Developer/Xcode/DerivedData/unitySpeedTools2020-afoibwfmvmkuutfecqogivingnlk/Build/Intermediates.noindex/unitySpeedTools2020.build/Debug-iphoneos/unitySpeedTools2020.build/Script-B1B0C21424519E0600F25F9D.sh: line 2: /opt/iOSOpenDev/bin/iosod: No such file or directory

Command PhaseScriptExecution failed with a nonzero exit code
编译报错 请教一下

没用的,都编不成功

1 个赞

编译+安装都ok,精确设置ok,但是好像滑条一滑就卡在减速0倍

没用的,都卡在减速0倍

年久失修,老bug了,要去设置里把开关横条都动一下,设置才能正确读取

1 个赞

是跟我用的iosopendev有关系吗

youku
录了一小段传到youku了

好像是你漏了调用getParaCfg,稍稍改动下ok了

差点以为是广告....:flushed::flushed::flushed:

借帖问个问题
MSHookFunction改造过的地方有办法unhook吗,即还原成改造前的汇编。
最近遇到一些游戏(原x)在运行中会进行完整性校验,需要在这些时候把代码还原回去,通过完整性校验。

这不应该是干掉检测函数么,还原回去了还怎么hook啊?办法是有的

求方法
我这个加速工具本身也是通过特征值来hook,对unity游戏有通用性。
界面上是有个像assistant touch一样的悬浮框,这一块可以作为hook的入口,一次点击是hook、一次点击是unhook。

这游戏是在启动app和切换网络的时候进行完整性校验,只要在这个时候unhook就可以。启动app时的完整性校验我通过插件延时生效解决掉了,现在就是一有网络波动触发了他的重连,会重新进行检测到被修改过。

另外还有的方法就比较麻烦了,大概就是antihook的思路

你这个需求好像更简单。。。因为你知道替换后的那几个汇编的地址,把那16个字节替换回来就好了,都不用去vm里面搜,思路是vmprotect改目标地址的text段的虚拟地址为读写权限,然后写进去原函数实现,最后吧这段改成读和执行(不知道有诶有做权限校验,一般我会做)。思路应该是这样的,dobby和substratehook都是替换了前面三个汇编

其实也是,我MSHookFunction前把那两行给记下来,我暂停插件的时候再把那两行汇编还原回去,就完了 :sweat_smile:

不会吧不会吧不会真有人玩原神吧

能抓到检测函数的周期性扫描的话自动在扫描前写回去也可以