Skip to content

PCL Lite 1.7.0-pre-3

Pre-release
Pre-release

Choose a tag to compare

@askbbtsk askbbtsk released this 01 Nov 14:05
· 23 commits to main since this release
1.7.0-pre-3:修导入的 Refresh Token 档案刷新一次就变成「设备代码」——续期时复制档案漏拷了登录方式和签发者。

PCL Lite 1.7.0-pre-3。

预览版,只有选了「预览」「快照」或更激进通道的用户会收到。稳定版通道请继续用 1.6.4-hotfix-5。

改了什么

导入的 Refresh Token 档案不再变回「设备代码」

现象:用 Refresh Token 登录成功,账号列表里却标着「正版验证 · 设备代码」。令牌本身是好的,游戏也能正常启动,只是标签错了 —— 但错的不只是标签。

根因在 McProfile.Clone():它是手写的字段清单,漏了两个字段。

续期时档案是「复制一份、就地替换」,于是:

  • LoginMethod 没被复制 → 变成空串 → 归一化时按老档案兜底成 device → 显示「设备代码」
  • RefreshClientId 也没被复制 → 签发者被清空 → 下一次续期会拿 PCL 自己的身份去换别人的令牌,微软直接回 AADSTS70000

第二个才是真问题。第一个只是让你早点发现它。

修了两处:

  1. Clone() 补齐 LoginMethod 与 RefreshClientId,并加了注释说明「这是手写清单,加字段记得同步」
  2. ApplyAuthenticationResult 里改用原档案的登录方式兜底,而不是刚克隆出来的那份 —— 就算以后再漏字段,也不会静默把登录方式抹掉

已经标错的档案需要手动清一下

这个修复只保证「以后不再标错」,已经变成「设备代码」的旧档案不会自己恢复 —— 它们和真正的设备码档案在数据上已经长得一模一样了,没法区分。

建议:把重复的那几条删掉,用同一个 Refresh Token 重新导入一次。这次进去之后就会一直是「Refresh Token」,不会再变。

校验

SHA-256(签名后):CAC8D443E702ACE5D10F12A374933AB57BFA0ADFB1EF5C996A1FE68029F70003

大小:19,375,912 字节

已知问题

  • Cookie 登录仍然没有在「真实且未过期的会话」下跑通过一次。格式识别已经补齐,但手上那份导出里的 MSPAuth / MSPProf 都是 Disabled(登出状态留下的),验证不到最后一步
  • 令牌导入的账号 24 小时后必须重新导入,这是微软定的,没有绕法