一次对于修改《Phigros》判定尝试的记录

1.前情提要

最近无意间看到这篇文章中提到能对于Phigros的判定逻辑进行修改,手残党的我瞬间就来了兴致,作为从没接触过反编译这方面的我在ChatGPT帮助下也成功实现了对其的修改。下面是一些具体流程可作为参考.

2.准备工作

准备好以下文件

由于Phigros对于正常unity游戏中的global-metadata.dat进行了加密,所以需要换一种方式去获取,这里使用他人开发的脚本来进行提取

预先从安装包中提取lib\arm64-v8a\libil2cpp.so文件放在某处备用

3.global-metadata文件的提取

使用上方提到的Phigros-Metadata进行提取即可。需要注意的是,Frida脚本是不可用的状态,直接使用第一种方法从apk中提取即可

生成的文件在当前目录

4.使用Il2CppDumper生成反编译文件

下载Il2CppDumper-win.zip解压到一个文件夹中打开后依次选择libil2cpp.so和上一步获得的global-metadata.dat文件,稍等片刻即可获得如下文件

  • il2cpp.h

  • script.json

  • stringliteral.json

  • dump.cs

以及一个DummyDLL文件夹,对于我们目前的目标我们只需要il2cpp.h以及script.json

5.使用IDA进行逻辑的查找与修改

5.1 文件的载入

启动ida,新建项目拖入libil2cpp.so,游戏的所有逻辑都被打包在这个文件里面,分析这个文件就行了

等待分析完毕后此处显示idle且不再变动就可以进行下一步了

依电脑性能从10分钟到半小时不等,可以干点别的事儿等会儿回来看

5.2 使用脚本重命名函数等未定义数据

点击这个按钮,选择Il2CppDumper程序文件夹下的ida_with_struct_py3.py,在随后弹出的窗口中依次选择script.json以及il2cpp.h,等待脚本运行完成

这一步大概一两分钟

5.3 找到相关函数进行修改

这里以修改Tap的判定举例,在左侧函数窗口内按ctrl+f调起搜索功能,通过一阵瞎猜得知这个ClickControl应该就是我们想找的

双击进入函数就能看到对应的汇编代码

看不懂怎么办,这里就凸显出ida的强大之处,按下F5即可将这一大陀东西转成伪C,这样就好看多了

但是注意,这里的代码是 只读 状态,最终所有的变更都要转移到汇编代码的编辑,后面会讲到

啊如果这里还是看不懂呢,那就可以请出ChatGPT了,直接全选复制黏贴丢给GPT叫他帮你分析一下代码就行(建议使用推理模型)

如果还是看不懂可以追问或者叫他说的简单一点

ChatGPT告诉我们,Tap的判定结果主要是由时间差来决定的,稍微想一想就能知道,让这个时间差始终为0就能实现一个永远都是Perfect的结果

继续询问得知时间差就是变量V5

返回ida,找到这一行

右键点击使其于汇编窗口同步

可以发现这一行变绿了

然后回到汇编窗口能发现也有三行变绿了

他们是对应关系

接着找一下v5

在上方定义区可以找到伪C中的v5就是汇编中的s8

接着再重新定位回v5被定义的那行

看一下汇编部分

唯一出现S8的位置就是最后一行

FSUB            S8, S0, S1

查询得知FSUB的作用是相减

那么思路就清晰了,直接把这一行换成把S8赋值为0就能达成目标

询问得知

    FMOV    S8, #0.0

这样就能实现我们的目标

5.4 进行逻辑的修改

5.4.1 有KeyPatch插件的情况下进行修改

直接右键该行选择Patch打开修改窗口

在下面那行里面输入我们自己的新逻辑

点击Patch按钮即可编辑成功,在随后弹出的窗口中点击取消,在这个案例中我们并不用继续编辑其他行

可以看到已经成功了

5.4.2 无KeyPatch情况下进行修改

这里我们需要借助到一个网站

Decrypted iOS App Store & ARM Converter

在输入框中输入我们的指令她就能自动的帮我们翻译成机器码

如果要把机器码翻译回去汇编可以点标题行的蓝字

在此处打开十六进制窗口

相同的,将汇编窗口与十六进制窗口进行同步

一行汇编对应四个字节,比如这一行减法操作在十六进制中就是08 38 21 1E

找到对应的十六进制位置之后,在相应位置点击右键选择Edit进行编辑

注意,十六进制不能做删除和增添操作,所有的操作都是“覆盖”, 写错了按方向键定位回到前面重新输入即可

我们现在将原本的08 38 21 1E替换为刚刚从网站转换出来的E8 03 27 1E,然后右键保存修改,就实现了和用插件一样的效果

6.保存文件

点击此处一路确定,就大功告成了

把新的il2cpp.so替换到原安装包中进行安装,打开游戏检查效果,可以发现,对于Tap音符无论怎么点都是Perfect了

卧槽,纪狗

7.总结

整体思路就是这样,本人也是小白,有说错的地方请嘴下留情,谢谢!

希望各位都能打造属于自己的定制版Phigros


一次对于修改《Phigros》判定尝试的记录
http://localhost:8090/archives/yi-ci-dui-yu-xiu-gai-phigros-pan-ding-de-chang-shi
作者
luobo233
发布于
2025年06月27日
许可协议