Files
FlyShotHost/docs/superpowers/plans/2026-06-22-cross-platform-obfuscation.md
yunxiao.zhu 070d2ba5c0 ✨ feat(server): 增加混淆发布链路与调试页静态说明
- 新增 Obfuscar 混淆发布脚本、发布测试与产物隐私检查
- 调整 VS Code 发布任务和宿主发布配置,统一走混淆流程
- 为 debug 页面内嵌静态接口说明,并补充对应集成测试
- 更新 README 与设计计划文档,记录跨平台发布约束
2026-06-22 15:55:34 +08:00

2.8 KiB
Raw Permalink Blame History

Flyshot 跨平台混淆发布 Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 为全部 Flyshot.* 自研程序集建立依赖环境 Obfuscar 的跨平台框架依赖混淆发布流程。

Architecture: 使用一个 PowerShell 入口编排 dotnet publish、绝对路径 Obfuscar XML 生成、混淆执行、产物完整性检查和映射文件隔离。发布脚本不修改项目运行时代码,也不引入混淆器包依赖。

Tech Stack: PowerShell 7、.NET 8 SDK、Obfuscar.GlobalTool 2.2.50、ASP.NET Core 自包含发布。


Task 1: 发布脚本契约测试

Files:

  • Create: tests/Publishing/Publish-Obfuscated.Tests.ps1

  • 编写测试夹具,创建包含八个 Flyshot.*.dll 和一个第三方 DLL 的临时发布目录。

  • 调用尚不存在的配置生成入口,断言测试因缺少 scripts/Publish-Obfuscated.ps1 而失败。

  • 保留测试入口,使后续实现可以在 -GenerateConfigOnly 模式下验证配置内容而不执行真实发布。

Task 2: 双平台混淆发布脚本

Files:

  • Create: scripts/Publish-Obfuscated.ps1

  • 定义带完整注释的参数、静态程序集清单和辅助函数。

  • 检查 PowerShell、dotnet 与 obfuscar.console 环境命令。

  • 使用 dotnet publish -c Release -r <rid> --self-contained true -p:PublishSingleFile=false 生成原始产物。

  • 为八个 Flyshot.*.dll 生成使用绝对路径的 Obfuscar XML。

  • 执行 Obfuscar,并检查每个输入模块都有混淆输出。

  • 将混淆 DLL/PDB 替换进发布目录,并将 Mapping.txt 隔离到 outputs/obfuscation-maps/<rid>/。

  • 不传 RID,生成一份 Windows/Linux 共用的 .NET 8 框架依赖发布包。

Task 3: 发布任务与文档

Files:

  • Modify: .vscode/tasks.json

  • Modify: README.md

  • 将 VS Code publish 任务改为调用 PowerShell 混淆发布脚本。

  • 在 README 发布章节记录环境安装、发布命令、输出目录和保护边界。

Task 4: 验证

Files:

  • Modify: docs/superpowers/plans/2026-06-22-cross-platform-obfuscation.md

  • 运行脚本契约测试并确认通过。

  • 运行 dotnet test FlyshotReplacement.sln -c Release -v minimal。

  • 运行 dotnet build FlyshotReplacement.sln -c Release --no-restore -v minimal。

  • 环境安装 Obfuscar 后执行 pwsh -File scripts/Publish-Obfuscated.ps1。

  • 启动 Windows 混淆产物并请求 /healthz。

  • 检查 Linux 混淆产物结构;存在 WSL 时启动并请求 /healthz。

  • 检查 git diff,确认没有第三方程序集或映射文件进入部署包。