环境
- 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 侧拒绝了它;
- 而某些配置组合下,注入环节根本不触发。
想请教作者
- 这个
'Access Denied' 是 Valve 对请求码的应答(即码本身不被接受),还是本地 hook 未生效、Valve 原始应答透传的结果?如何区分?
- 对当前 Steam build
1788652215,GetManifestRequestCode 的拦截是否仍受支持?(模式文件按 SHA256 从 steam-monitor 拉取,steamclient64.dll/steamui.dll 均命中并加载。)
- 是否有推荐的其它 manifest 源,或需要额外配置(如
setAppTicket)?目标游戏 Project Zomboid(108600)走的是 SteamStub 路径,按 README 应无需 AppTicket。
附
Debug 构建的全量日志(16 个文件)可随时提供,需要的话我贴上来或打包。
环境
1788652215D:\steam\opensteamtool.toml:[manifest] url = "wudrm",[log] level = "debug"ok=false HTTP=0),jsDelivr 回退成功并缓存,正常加载现象
安装未拥有游戏进入下载阶段后固定失败:
已排除的可能性(均附证据)
1) 不是某个 manifest 的问题 —— 换了 4 个不同来源的 GID,失败信息一字不差:
1857139135403679046Access Denied4216043979586241678Access Denied7649580527091758034Access Denied6286577881064486829108600分支(含官方.lua+.manifest)Access Denied2) 本地
.manifest缓存不能绕过这一步 —— 已把108602_*.manifest/108603_*.manifest/108604_6286577881064486829.manifest放入D:\steam\config\lua\,仍报同样的错。3) 不是客户端链路问题 —— Debug 构建全量日志显示全部正常、且零 error:
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的返回值逐位一致:但 CDN 返回 401(同一时刻
st.dl.eccdnx.com、dl.steam.clngaa.com、xz.pphimalayanrt.com三个 CDN 全部 401)。而去掉 pin 之后,连 CDN 请求都发不出去,直接在
access denied处取消。也就是说:
想请教作者
'Access Denied'是 Valve 对请求码的应答(即码本身不被接受),还是本地 hook 未生效、Valve 原始应答透传的结果?如何区分?1788652215,GetManifestRequestCode的拦截是否仍受支持?(模式文件按 SHA256 从steam-monitor拉取,steamclient64.dll/steamui.dll均命中并加载。)setAppTicket)?目标游戏 Project Zomboid(108600)走的是 SteamStub 路径,按 README 应无需 AppTicket。附
Debug 构建的全量日志(16 个文件)可随时提供,需要的话我贴上来或打包。