Skip to content

[Bug] Failed to get manifest request code, 'Access Denied' —— 4 个不同 manifest GID 均失败(Steam build 1788652215 / OST 1.4.8) #197

Description

@chensichen417

环境

  • Windows 10.0.26200 (x64)
  • Steam 客户端 build 1788652215
  • OpenSteamTool 1.4.8(Release 与 Debug 构建均复现)
  • D:\steam\opensteamtool.toml:[manifest] url = "wudrm",[log] level = "debug"
  • 模式文件获取:GitHub raw 不可达(ok=false HTTP=0),jsDelivr 回退成功并缓存,正常加载

现象

安装未拥有游戏进入下载阶段后固定失败:

CDepotDownloadMgr::BYldRequestDepotManifest(App: 108600, Depot: 108604, Manifest: <GID>, branch: ): Failed to get manifest request code, 'Access Denied'
AppID 108600 update canceled : Failed downloading 1 manifests (No connection)

已排除的可能性(均附证据)

1) 不是某个 manifest 的问题 —— 换了 4 个不同来源的 GID,失败信息一字不差:

Manifest GID 来源 结果
1857139135403679046 社区配置 Access Denied
4216043979586241678 Steam 自认(即完全不 pin) Access Denied
7649580527091758034 社区配置另一版本 Access Denied
6286577881064486829 ManifestHub2 108600 分支(含官方 .lua + .manifest) Access Denied

2) 本地 .manifest 缓存不能绕过这一步 —— 已把 108602_*.manifest / 108603_*.manifest / 108604_6286577881064486829.manifest 放入 D:\steam\config\lua\,仍报同样的错。

3) 不是客户端链路问题 —— Debug 构建全量日志显示全部正常、且零 error:

[Config.cpp:154]        Config loaded: manifest.url=wudrm log.level=debug
[PatternLoader.cpp:190] loaded 25 patterns for steamclient (remote) / 10 for steamui
[IPCLoader.cpp:192]     loaded 6 methods across 2 interfaces
[Hooks_IPC.cpp:145]     Hooks_IPC: 6 handlers registered
                        (含 IClientUser::GetAppOwnershipTicketExtendedData / RequestEncryptedAppTicket)
[Hooks_Package.cpp:61]  InitFakeLicense(PackageId=0): adding 25 apps, oldSize=196
[Hooks_Manifest.cpp:57] BuildDepotDependency: patching depot 108604 gid=4216043979586241678-><pinned>   ← 改写生效
[dllmain.cpp:84]        OpenSteamTool init complete

D:\steam\opensteamtool\ 下 16 个日志文件(main/ipc/netpacket/manifest/misc/package/platform…)无一条 error。
misc.log 只有若干 GetAppIDForCurrentPipeWrap called before capture — returning 0(启动早期,之后已 capture)。

4) 不是单一游戏 —— 另一个游戏(appid 2001120,配置由 FluentInstall 生成,其 unlocker 同样是 opensteamtools)同样 (No connection) 后安装取消。

5) 不是网络 —— 模式文件经 jsDelivr 拉取成功;http://gmrc.wudrm.com/manifest/<gid> 返回 HTTP 200 且能拿到请求码。

一个可能关键的点:注入发生过,但被 Valve 拒绝

用原始社区配置(setManifestid 全部 pin 住)时,CDN 确实收到过请求,且 URL 里的请求码与当时 wudrm 的返回值逐位一致:

wudrm 当时返回 : 16440229464176400119
Steam 实际发出 : /depot/108604/manifest/1857139135403679046/5/16440229464176400119

但 CDN 返回 401(同一时刻 st.dl.eccdnx.com、dl.steam.clngaa.com、xz.pphimalayanrt.com 三个 CDN 全部 401)。
而去掉 pin 之后,连 CDN 请求都发不出去,直接在 access denied 处取消。

也就是说:

  • 请求码确实被从 wudrm 取得并注入(值正确);
  • Valve 侧拒绝了它;
  • 而某些配置组合下,注入环节根本不触发。

想请教作者

  1. 这个 'Access Denied' 是 Valve 对请求码的应答(即码本身不被接受),还是本地 hook 未生效、Valve 原始应答透传的结果?如何区分?
  2. 对当前 Steam build 1788652215,GetManifestRequestCode 的拦截是否仍受支持?(模式文件按 SHA256 从 steam-monitor 拉取,steamclient64.dll/steamui.dll 均命中并加载。)
  3. 是否有推荐的其它 manifest 源,或需要额外配置(如 setAppTicket)?目标游戏 Project Zomboid(108600)走的是 SteamStub 路径,按 README 应无需 AppTicket。

附

Debug 构建的全量日志(16 个文件)可随时提供,需要的话我贴上来或打包。

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions