☰
FufuLauncher信任体系完整指南:代码签名、信任清单与三层CA证书如何验证Mod安全性
2026/10/8 18:23:15 网站建设 项目流程

FufuLauncher信任体系完整指南:代码签名、信任清单与三层CA证书如何验证Mod安全性

【免费下载链接】FufuLauncherA third-party launcher for Genshin Impact that supports game injection, automatic check-in, and some useful small features.项目地址: https://gitcode.com/gh_mirrors/fu/FufuLauncher

FufuLauncher 是一款功能丰富的原神第三方启动器,支持插件注入、自动签到等实用功能。为了让用户在加载 Mod 插件 DLL 时更安心,它内置了一套完整的 Mod 信任体系:通过代码签名验证插件真伪、通过信任清单(trust-manifest)锁死证书指纹、再借助三层 CA 证书链完成签发溯源,最终由 ModTrustGate 在注入前做出"放行或拦截"的裁决。本文将带你快速看懂这套信任机制的运作原理,以及如何在设置中安装证书、切换严格模式。

为什么 Mod 插件需要一套信任体系?

FufuLauncher 的核心玩法之一是把 Lua 插件编译成的 DLL 注入到游戏进程中。DLL 一旦进入游戏内存,就拥有与游戏同等的权限——如果加载了被篡改或来源不明的文件,风险不言而喻。

为了解决"这个 DLL 到底是谁签的、文件有没有被动过"的问题,FufuLauncher 没有把信任交给操作系统里可能被人篡改的证书仓库,而是自己搭建了一个平台级代码签名体系:

  • 项目内置一个自有的CA 证书体系(根 CA → 签发 CA → 叶子签名证书),只有平台签发的 DLL 才被视为可信;
  • 用信任清单把所有证书的 SHA-256 指纹、吊销名单固化成一份带签名的 JSON,防止"中间人偷换证书";
  • 在 DLL 注入前,由 ModTrustGate.cs 执行最终裁决,严格模式下直接拦截未通过验证的插件。

相关模块集中在FufuLauncher/Services/CodeSigning/目录,信任包资源则放在FufuLauncher/Assets/Trust/目录。

三层CA证书:一条从根到签名的信任链

打开 trust-manifest.json 可以看到整套证书结构,POLICY.txt 则以纯文本形式公示了每层证书的指纹与有效期:

层级文件角色有效期
第一层ModsRootCA.cer根 CA(自签名,"FufuLauncher Code Signing Root CA")至 2051 年
第二层ModsIntermediateCA.cer中间签发 CA,由根 CA 签发至 2031 年
第三层各签名者叶子证书真正用来给 Mod DLL 做 Authenticode 签名最长 1185 天(约 3.25 年)

三层结构的意义在于职责分离与快速失效:根 CA 长期稳定但绝不上线;中间 CA 可以独立轮换;叶子证书有效期短,一旦某个签名者出问题,吊销它一条记录即可,而不用动摇整个信任体系。

除了三层 CA,信任包里还有一张专门的清单签名者证书(ModsManifestSigner.cer),它只负责给信任清单本身签名,防止清单被替换后"验证书的人"先被掉包。

信任清单:给CA体系系上安全绳

光有 CA 还不够——攻击者理论上可以伪造一套"长得像"的证书包。因此 FufuLauncher 引入了信任清单机制,实现见 TrustPackage.cs:

  1. 指纹固化:清单中写死了根 CA、中间 CA、清单签名者的 SHA-256 指纹。加载时逐一比对,任何一张证书被换掉都会立刻失败;
  2. 根证书钉扎(pinning):应用安装目录里内置了一份"金标准"根证书 ModsRootCA.cer,CodeSigningTrustService.cs 加载任何信任包(包括从网络同步来的)时,都会要求其根证书指纹与内置副本完全一致,不一致直接拒绝——这意味着网络端永远无法把自己的一套 CA 强推给你;
  3. 清单自身带签名:trust-manifest.json.sig 是清单签名者用 RSA-SHA256 对清单文件签出的"签名信封",加载器会校验签名、签名者指纹、清单哈希三位一体,缺一不可(未签名的清单会被直接拒载);
  4. 吊销名单:清单内置revokedSerialNumbers数组,被吊销的叶子证书序列号会在验证阶段被点名拦截。

一次DLL验证:ModTrustGate 是怎么裁决的?

当你在 FufuLauncher 中点击启动、准备把插件 DLL 注入游戏时,GameLauncherService.cs 会先调用信任闸门,而真正的验证逻辑在 CodeSignatureVerifier.cs 中,流程大致是:

读签名 → 验内容完整性 → 查白名单 → 建证书链 → 查吊销 → 查策略合规 → 裁决

具体地:

  • 📌读签名:从 DLL 中读出发起的 Authenticode 签名证书,读不到就判定为Unsigned(未签名);
  • 📌验完整性:调用 Windows 的 WinVerifyTrust 比对签名与文件内容哈希,不一致即Tampered(被篡改)——改过一个字节都过不了;
  • 📌建链验证:用自定义根信任模式(CustomRootTrust)把证书链锚定到平台根 CA,而不是系统证书库。也就是说,"系统里装了谁"不影响判定,只看"是不是平台 CA 签的";
  • 📌查吊销:序列号在清单吊销名单内 →Revoked;
  • 📌策略合规:由 CodeSigningPolicy.cs 逐条检查叶子证书——必须且只能带代码签名 EKU(1.3.6.1.5.5.7.3.3)、不得是 CA、必须有 digitalSignature 权限、有效期不得超过 1185 天。EV 证书、服务器认证证书等"越权"证书一律PolicyViolation;
  • 📌最终裁决:所有验证通过才得到TrustedPlatform(平台信任)。

验证结果汇总为 8 种状态,一目了然:

状态含义是否放行
TrustedPlatform平台 CA 签发且合规✅
TrustedAllowlisted命中清单附加白名单✅
Unsigned未签名❌
Tampered签名与内容不符,疑似被篡改❌
Revoked证书已被平台吊销❌
PolicyViolation证书违反平台策略(如越权 EKU)❌
Untrusted证书链无法到达平台根 CA❌
PackageUnavailable信任包不可用取决于模式

三种信任模式:Off / Warn / Enforce

ModTrustGate.cs 把策略持久化为trust-policy.json文件,提供三档强度:

  • Off(默认):不做限制,正常加载;
  • Warn(仅提示):照常加载,但非信任文件会弹出警告通知;
  • Enforce(严格拦截):只有TrustedPlatform/TrustedAllowlisted的 DLL 才允许注入,被拦截时启动器会取消注入并恢复注册表快照,同时推送 8 秒的告警通知。严格模式下若信任包本身不可用,会采取"宁缺毋滥"策略——拒绝加载任何未验证文件。

动手体验:在设置中安装证书与同步信任包

普通用户不需要碰证书文件,设置页已经做好了一键操作,界面逻辑见 SettingsPage.ModTrust.cs:

  1. 📂查看状态:设置页会显示信任包是否验证通过、证书安装在哪个范围(当前用户 / 本机)、吊销数量等信息;
  2. 📦一键安装证书:点击"安装平台证书"后,TrustInstallFlow.cs 会先弹出核对对话框,展示根证书与中间证书的颁发者、SHA-256 指纹、有效期,确认无误才执行安装。装到系统证书库的作用,是让 Windows 资源管理器等外部工具也能识别平台签名,避免"未知发布者"弹窗;
  3. 🔐自动提权:安装到本机范围需要管理员权限,应用会自动以提权进程(--trust-cert参数)重试,你只需在 UAC 弹窗点"是";
  4. 🔄同步信任包:点击同步按钮后,应用会从官方证书同步端点拉取最新的信任清单与吊销名单,逐文件做 SHA-256 校验,并强制要求根证书与内置钉扎指纹一致,全部通过才原子替换本地Trust目录。这套机制保证了吊销名单能安全地更新到你手上。

小结

FufuLauncher 的 Mod 信任体系用三条防线把"加载插件"这件高风险操作变得可控:

  • 三层 CA 证书链——根 CA、签发 CA、叶子签名证书各司其职,吊销影响面最小化;
  • 签名信任清单 + 根证书钉扎——证书指纹固化、清单自带签名、网络同步无法强推假根,防中间人偷天换日;
  • ModTrustGate 加载闸门——8 种状态精细裁决,Enforce 模式下未经验证的 DLL 一个字节都进不了游戏。

对插件作者而言,想要让自己的 Mod 通过严格模式,就需要向平台申请代码签名证书;对普通用户而言,只需在设置里点两次按钮,就能获得一套"出厂即验证"的插件加载体验。🎮

【免费下载链接】FufuLauncherA third-party launcher for Genshin Impact that supports game injection, automatic check-in, and some useful small features.项目地址: https://gitcode.com/gh_mirrors/fu/FufuLauncher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询