好吧,我真的不想承认我胆子小,不敢玩这款游戏,我只是个无情的工具人,有人喊我我必来。
这篇算不上什么技术文,烂大街的,还在用mono运行时又不混淆源码的白给游戏的基础修改罢了。
坟头蹦迪(改人数)
游戏为了保证恐怖的气氛,最大只允许4人加入游戏,入手思路是直接找用的网络库,做Unity开发对Photon网络库应该不会陌生,这个库是第三方托管的,接入也比较无脑,感兴趣的话可以去官网下载一个sdk体验下什么叫3分钟搞定联机。
既然用了库,那就不要怪人家改东西了,Photon连接服务器的API:
PhotonNetwork.CreateRoom
在dnspy里面xref,会发现LobbyManager.CreateServer就是我们要的东西,右键编辑IL
改成
ldc.i4 64
保存模块即可。UI相关的修改我没做,反正不影响我建房。
改钱加经验
原理:搜Money和Exp,最终找到
PlayersMoney和myTotalExp
注入游戏后调用
FileBasedPrefs.SetInt(“PlayersMoney”, xxx);
FileBasedPrefs.SetInt(“myTotalExp”, xxx);
即可,注意钱不要超过250000,否则会触发反修改,可以把AntiCheatSystem.CheckPlayerMoney函数Nop掉
吓死鬼
注入后用FindObjectOfType<LightSwitch>().ToList()获取所有的灯开关,直接调用TurnOnNetworked(false),发送网络RPC打开所有灯
保险盒
同样,找到FuseBox,调用Use,恢复供电,让鬼拉不了闸。
其余杂记
GhostInfo 获取鬼的信息,名字,年龄,类型
GameController.instance.myPlayer.player 玩家自己,可以获取san值,并且随意修改
GhostAI 可以获取transform做esp
GameController.instance.playersData 其他玩家的数据,可以把名字画出来
Door还有LevelController.instance.exitDoors,可以操纵门
有求必应
这游戏用了windows语音识别,那么骂鬼什么有效呢?
见PhraseListenerController的SetupKeywords
相关的游戏逻辑挖掘可以在这里进行,大多都是本地的,不一一展开
Bouns
滥用RPC还可以非房主T人一类
mono游戏注入都烂大街了,即便il2cpp了也好不了哪去,依旧白给,不说某个自认为很聪明的热门手游了,这里没提供任何代码的原因是:没必要
Photon这个库用的游戏挺多的,我之前逆了一部分协议,其自带加密,个别用的好的游戏还挺难做脱机的,我就不说某个游戏我被连封6个号,发错一个包就GG,问有啥用呢,可以用来做爬虫,机器人一类的,不过3D寻路是难点,有些游戏厂家及其不负责任,steamid直接无差别下发,可以抓到背后的闸种咯