Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 1.97 KB

File metadata and controls

78 lines (54 loc) · 1.97 KB

规律与判断点

1. fast 限制本质上有两层

第一层是前端设置页是否显示 Fast 入口。
第二层是 Electron 启动时对 asar 完整性和相关行为的 fuse 限制。

只改 config.toml 通常不够。

2. 前端层的规律

在相近版本里,目标文件通常位于:

Contents/Resources/app.asar
  -> webview/assets/general-settings-*.js

目标 bundle 的典型特征:

  • 文件名是 general-settings-*.js
  • 内容里能搜到 statsig_default_enable_features
  • 同一段附近会出现 fast_mode
  • 判断逻辑会把 authMethod === chatgpt 也纳入限制

当前这版命中的替换片段是:

):r=e[2],r}function Dt(e){return e===`chatgpt`}

替换后变成:

):r=e[2],true}function Dt(e){return e===`chatgpt`}

也就是直接强制返回 true,让设置页显示 fast 入口。

3. Electron fuse 层的规律

即使前端入口放开,应用仍可能因为 Electron fuse 而在启动时崩溃或拒绝加载修改后的 asar。

这次实际需要关闭的 4 个 fuse:

  • GrantFileProtocolExtraPrivileges
  • EnableCookieEncryption
  • OnlyLoadAppFromAsar
  • EnableEmbeddedAsarIntegrityValidation

在 Electron fuse v1 wire 里,对应的位序可按当前工具包理解为:

0 RunAsNode
1 EnableCookieEncryption
2 EnableNodeOptionsEnvironmentVariable
3 EnableNodeCliInspectArguments
4 EnableEmbeddedAsarIntegrityValidation
5 OnlyLoadAppFromAsar
6 LoadBrowserProcessSpecificV8Snapshot
7 GrantFileProtocolExtraPrivileges

4. 成功状态的特征

  • general-settings 补丁已写入
  • fuse wire 至少在上面那 4 位是 0
  • codesign --verify --deep --strict 通过
  • Codex.app 能重新打开

5. 不适用的情况

下面这些情况需要重新分析,而不是直接套工具包:

  • general-settings-*.js 不再出现 statsig_default_enable_features
  • 目标片段不再匹配
  • Electron Framework 里找不到 fuse sentinel
  • fuse 版本不再是 v1