[R.E.P.O]解决REPO联机报错“CustomAuthenticationFailed”

《R.E.P.O》

省流:

使用MOD重定向光子服务器到自定义服务器,在本地跑光子服务器,使用Easytier组网。(自部署服务器教程看文尾)
MOD下载地址:夸克网盘分享
提取码:19iE
MOD开源地址:Hi-Haven/RepoLocalServer - RepoLocalServer - Open-source Game Hub

客户端版本:v0.4.4.3

Steam上一款多人联机游戏,详见: 在 Steam 上购买 R.E.P.O. 立省 35%

是恐怖游戏,十光和别人玩的时候一直无法正常联机,报错自定义认证失败,导致他买了退,退了买,没修Bug又退。。。

怎么办,逆向呗。

首先在十光最后一次退款后就没买游戏了,我这里用的是从俄罗斯大佬网站上面下载的假入库版本,不要模仿,这里也不提供下载地址,请支持正版。

首先就是有正版锁,我这里试过了,用uwu启动在Linux REPO是无法进大厅的,连房间都创建不了。

其次懒得安装环境,直接用十光电脑了。

认证的问题找认证,直接找游戏用到认证的类型名、方法名、字段名集。

名字 身份 所在程序集 干什么用
steamAuthTicket 字段 Assembly-CSharp SteamManager 里存当前票据对象的私有字段
GetSteamAuthTicket 方法 Assembly-CSharp 取票和逐字节转 hex
SendSteamAuthTicket 方法 Assembly-CSharp 票据传递给 AuthValues 然后发给 Photon
CancelSteamAuthTicket 方法 Assembly-CSharp 用完作废票据
AuthenticationValues 类型(类) PhotonRealtime.dll 认证信息的容器类
CustomAuthenticationType 类型(枚举) PhotonRealtime.dll 认证类型枚举
get_AuthValues / set_AuthValues 方法(属性访问器) PhotonRealtime.dll AuthValues 属性的 getter/setter
set_AuthType 方法(属性 setter) PhotonRealtime.dll AuthType 属性的 setter
AddAuthParameter 方法 PhotonRealtime.dll 在认证信息里添加键值对:AddAuthParameter("ticket", hex)
GetAuthSessionTicket 方法 Facepunch.Steamworks.Win64.dll Steam SDK 的原始取票方法

然后我让GLM写了一个Python脚本去获取类的全部字段和方法(文件见网盘)

反编译SendSteamAuthTicket,GetSteamAuthTicket

然后AI写py的时候告诉我,游戏Debug Mode是有自定义服务器的,但是不显示

找到调用认证的地方再检查一下,然后交给AI写MOD了

MOD开源地址见省流。

部署本地服务器

Windows版部署见仓库README:

十光用的Linux,我来讲讲Linux:

光子服务器没有Linux版,所以要用Docker部署(因为十光正好有Docker,就不在宿主机安装虚拟机了)

下载sdk: Photon SDK Downloads — Unity, Unreal, .NET, C++, JavaScript | Photon Engine

但是蛋疼的来了:

我对光子失望极了

好像目前没办法自部署,害,等GLM实现了我会开源给你们的。

1 个赞

我能说啥,看来今天玩不了了。。。。。。。。。。。。。。